The Internet of Things is revolutionizing many things, and one of those is how we do business. Gartner says there are already more than 2 billion connected sensors, trackers and other devices used by businesses to heat their buildings, manage car traffic, heal patients, ship their cargo, and more. By 2020, there will be 7.3 billion such devices inside enterprises.

So the Enterprise of Things is very real. But this network of intelligent connections and endpoints, which helps enterprises move products from sketch to scale, also needs securing, from data theft and from hacker disruption. That’s why we’re announcing today the launch of a comprehensive, foundational platform designed for the Enterprise of Things. Our new platform, which takes a mobile-native approach to security, addresses the entire enterprise from endpoint to endpoint, is cloud-enabled, and is the culmination of our innovation and major acquisitions, creating an incredible foundation that fuels our transition to a software company.

Businesses need to confidentially and reliably transmit sensitive data between endpoints to keep people, information and goods safe. BlackBerry is uniquely qualified to address this emerging market now because of our deep experience, industry leadership and ongoing product innovation that addresses future business needs.

We’re calling the totality of this solution BlackBerry Secure. Grounded in our mobile software security platform, it enables us to help companies manage and secure their mobile devices and connected things, while securing communications for all messages and file types. For us, this will open up new markets and new customers, for whom multiple endpoint mobile security management and applications are critical. For example, our platform will help to prevent hackers from penetrating devices and computers, provide intelligence for secure supply chain communications, ensure patient confidentiality in healthcare and safeguard assets in the financial industry.

Enterprises will save money today as our platform lets IT administrators leverage their current investments, as well as provide them unified endpoint management (UEM) across all devices, apps, users, policies and operating systems, including Android for Work, Samsung KNOX, iOS, Windows 10, MacOS and BlackBerry 10), as well help replace expensive VDI (virtual desktop infrastructure) platforms. It is also flexible and secure enough to accommodate employees, contractors and business partners with a BYOT (Bring Your Own Thing) policy so that they can have secure access to corporate networks and data without a VPN, as well as a consistent experience no matter what device they carry.

Meanwhile, our enterprise customers’ investments are protected. Our foundational platform is not only compatible with our current products, but is also ‘future-proofed’ to address upcoming capabilities in messaging and analytics. It will also be compatible with future applications from developers, popular third-party cloud systems, and applications like Microsoft Office 365.

In addition to holding more than 80 security certifications, BlackBerry recently ranked the highest in all six use cases of Gartner’s “Critical Capabilities for High-Security Mobility Management” report. Our security heritage is leading to an enhanced product line. BlackBerry UEM (formerly BES12) provides the granular control and visibility that IT administrators need to secure all endpoints, along with the flexibility to support a wide array of productivity and other business use cases. BlackBerry Dynamics (formerly Good Dynamics), delivers a foundation for secure enterprise mobility by offering an advanced, mature development platform and container for mobile apps that prevents data leakage. BlackBerry Workspaces, formerly WatchDox, lets workers share, edit and control their files on every device with the highest level of security due to embedded digital rights management (DRM) protection in the files.

BlackBerry 2FA, formerly Strong Authentication, lets workers replace the cost and hassle of a physical token and typing in codes by simply acknowledging a prompt on their secured mobile device. BlackBerry Enterprise Identity also smooths user logins by enabling Single Sign-on (SSO) into a variety of third-party cloud services such as Office365, Box, Dropbox, Workday and Salesforce, as well as the convenience of Mobile Zero Sign-on (MZSO), where simply unlocking the phone grants you access to services without needing to type in a password.

Developers can integrate any of the aforementioned BlackBerry services into their apps via a Platform-as-a-Service model. Our enterprise app and channel ecosystem continues to grow, with an expanding roster of partners such as Zimperium, Polaris, Swyft, Acronis and ISEC7. Finally, we’re launching a new portfolio of business-class applications of our own that are tailored for the mobile-first office. These will be available in January, and will enable today’s workers to reach new heights in productivity.

Customers currently using Good Secure EMM Suites including BES12 and WatchDox can seamlessly upgrade to their tailored BlackBerry Enterprise Mobility Suite. Core components of the enhanced and renewed software portfolio will be rolled out in a phased approach over the coming weeks. The apps – Access, Connect, Notes, Share, and Tasks – will be the final step, released in January 2017.

Contact your support representative for more details.

]]>http://devblog.blackberry.com/2016/12/unveiling-a-comprehensive-mobile-security-platform-for-the-enterprise-of-things/feed/0l-series-overview-blog-featureinsideblackberryblogBusinessmen having discussion in officeVarious symbols and tablet devicesBusinessman using smartwatch.How AppDome and BlackBerry Are Democratizing Software Development, One SDK at a Timehttp://devblog.blackberry.com/2016/11/how-appdome-and-blackberry-are-democratizing-software-development-one-sdk-at-a-time/
http://devblog.blackberry.com/2016/11/how-appdome-and-blackberry-are-democratizing-software-development-one-sdk-at-a-time/#respondTue, 29 Nov 2016 21:21:50 +0000http://devblog.blackberry.com/?p=22918/ Read More]]>You can wash your clothes down by the river with a bar of soap and a rock, sure. But why would you, when washing machines and drycleaners exist? Technology has stepped in where manual labor used to pervade.

The job of the developer is to translate business objectives into lines of code. That’s a hard job, and it seems like in every organization, the development team has a backlog of features and requests that they want to add. They want to make apps better, solve more problems, and make the experiences better overall for users.

There are two ways this can be accomplished.

Software Development Kits (SDKs) allow developers to build custom functionality into their apps. Application Programming Interfaces (APIs), meanwhile, allow you to incorporate a feature or set of features from another application platform – the Google Maps API, for example, lets you add location services to apps. APIs sit inside SDKs, which often comprise more than the API itself.

In many cases, a development team will make equal use of both APIs and SDKs. Here’s where the problem arises. For an API or SDK to work with an application, it must first be integrated into that app.

The application must be modified to incorporate the new tool. This is a process that takes time and skill. However, not all organizations have either at hand. What if I told you integration could be done without either?

Say hello to AppFusion. This tool allows you to implement complex mobile services and SDKs to your applications in a matter of minutes. And now, thanks to BlackBerry’s Good Dynamics app platform, it’s better-equipped than ever to integrate new platforms and services with the push of a button.

The advantages of this ease of integration go well beyond a few saved man-hours. With BlackBerry, we’re taking an existing toolkit and applying it in places it’s never been applied to before. Organizations can now apply the rich app-level security controls of Good Dynamics to existing apps without writing a single line of code or even to third-party apps.

Suddenly, everyone is empowered with the ability to bring in additional functionality – they don’t need to be a software engineer to do so. It opens up the possibility that a new class can participate in the mobile development process. And that, in turn, leads to better collaboration, better applications, better workflows, and better outcomes.

Let’s say, for example, you have a security team and a dev team. The developers aren’t security experts, and the security experts aren’t developers. With AppFusion, the security team could recommend or select the services to be connected in a solution, and could promote those selections to the developer. All the developer has to do is click “Fuse My App,” and the security team has what they requested.

AppFusion’s also great for commercial ISVs. These application providers often serve a large portion of enterprise customers, and need to implement their SDK manually for every vendor whose store they want their apps to appear in. With AppFusion, they needn’t take on that burden.

And as more people use AppFusion, the technology is going to get better and better – every single update to the technology impacts and benefits every other user. It takes the notion of implementation from an individual discovery into a journey that serves an entire community. And with BlackBerry as a partner, there’s nowhere to go from here but up.

]]>http://devblog.blackberry.com/2016/11/how-appdome-and-blackberry-are-democratizing-software-development-one-sdk-at-a-time/feed/0Giving their design the seal of approvalinsideblackberryblogShot of young designers working around a laptop in an officeCaucasian businesswoman smiling at computerBlackBerry Developer Summit 2016: Developing feature-rich apps quickly and securelyhttp://devblog.blackberry.com/2016/11/blackberry-developer-summit-2016-developing-feature-rich-apps-quickly-and-securely/
http://devblog.blackberry.com/2016/11/blackberry-developer-summit-2016-developing-feature-rich-apps-quickly-and-securely/#respondTue, 22 Nov 2016 20:28:10 +0000http://devblog.blackberry.com/?p=22893/ Read More]]>

At the BlackBerry Developer Summit in Midtown Manhattan on November 17, we unveiled our expanded developer platform that reinforces — and accelerates — our software pivot. The packed event venue at Nasdaq headquarters included developers from our top customers and ISV Partners.

The event was much more than telling our developer community how great our platform is. We did that, of course, but the goal here was to literally demonstrate it through an immersive, hands-on workshop where developers were able to code and experience the platform first-hand in a practical way that went far beyond creating some typical “hello world” app. Virtually every aspect of our platform was covered in detail including tracks dedicated to subjects like secure storage and connectivity, inter-application communication, and server services.

Our platform continues to evolve to be more than mobile management and collaboration, it enables true business transformation. Our partners and developers onsite were excited

to hear about our software roadmap and how they can leverage it. Our product leadership team touched on the power of the expanding secure end-to-end mobile application platform, which helps our customers significantly grow their business capabilities.

Naturally, a large amount of energy drinks, cookies and other great food kept the developers happy and energized throughout the day, as they learned how to make our platform do what they want and spent high-quality time with some of the best engineering minds in the business.

This is just the beginning! Much of the content used at the summit will be integrated into our developer program where aim to engage and make it available for all our developers to leverage our secure, flexible platform. Make sure you register for the Developer Program / Enterprise Apps Newsletter to get the latest updates at http://developer.blackberry.com/enterprise

Here is a picture of our team of BlackBerry experts present on this fantastic day. It was a fun and truly engaging experience!

We hope to see everyone from our developer community out for our next event. Stay tuned… we’re sure it’s going to be even bigger and better!

]]>http://devblog.blackberry.com/2016/11/blackberry-developer-summit-2016-developing-feature-rich-apps-quickly-and-securely/feed/0devsummit_banner_featureinsideblackberryblogdevsummit_bannerdevsummit_workshopdevsummit_workingdevsummit_teamFixing the ‘False Alarm’ Problem in Secure Software Developmenthttp://devblog.blackberry.com/2016/11/fixing-the-false-alarm-problem-in-secure-software-development/
http://devblog.blackberry.com/2016/11/fixing-the-false-alarm-problem-in-secure-software-development/#respondMon, 21 Nov 2016 21:08:36 +0000http://devblog.blackberry.com/?p=22889/ Read More]]>Professional software developers have a love-hate relationship with static code analyzers. These tools burst onto the scene in the 2000s, offering what sounded almost too good to be true: the ability to automatically scan programs and locate software flaws that would otherwise be impossible or far more expensive to discover through traditional human code reviews. These tools could reduce cost while improving quality, safety, and security. Fifteen years later, static code analyzers are a disappointment to many, a technology that has not lived up to its promise. One of the main reasons: too much noise.

Static Code Analyzers: The Noisy Car Alarms of Software Development

When car alarms first came to market, they were designed to deter and reduce car theft by making loud noises and alerting those in the immediate area that something nefarious was going on. Unfortunately, many car alarms are too sensitive and trigger by accident when anyone touches the car or walks too close to it. As a result, we hear car alarms, get annoyed, and wait for them to shut off rather than calling the police. Most of the time we’re right to do so; any security technology that consistently provides false alarms is eventually ignored and shunned by its users.

In static analysis, these types of false alarms are known as “false positives,” where the analyzer incorrectly identifies good code as flawed and finds flaws that don’t make sense to fix. Examples of these types of flaws include a potential null pointer dereference that the developer knows in practice will never occur or a flaw that is so sufficiently minor (e.g. not exploitable) that modifying the code to address the flaw introduces more risk than doing nothing.

Our R&D teams have used a wide range of open source and commercial static analyzers over the years, and they all generate a massive rate of noise. Numerous development teams and academic researchers have corroborated these experiences, including a recent study of developer sentiment at Microsoft. Developers spend incredible effort “analyzing the analyzer” to decide which of the reported flaws make good sense to address. This expensive process causes the tool to be used sparingly or not at all. Noisy analyzers defeat their original purpose of generating higher quality code more efficiently. What a shame.

How We’re Fixing Code Analysis to Quiet False Alarms

BlackBerry CHACE has been attacking this important problem from a couple of angles. First of all, we’re working on newer techniques based on formal methods that are more precise than traditional static code analyzers. But just as importantly, we’re also expanding the purview of automated analysis to include aspects of software development beyond the code itself. Developers who use static analyzers know that they raise so many false alarms because the tools don’t understand the context of the code and how it’s meant to be used.

Imagine you saw someone trying to get into a locked car – how would you know if they were trying to steal it? Most of us would instinctively look for clues in the person’s behavior and environment. Do they seem calm, nervous, or annoyed? Are they looking around for help or to make sure no one is watching? Are you on a busy street or in a dimly lit alley? Is it dark outside or broad daylight? These are all contextual clues that can help you decipher the situation and avoid falsely accusing someone who might simply have locked their keys in their car.

Similarly, contextual clues provide insight into how code is meant to be used and avoid false positives. CHACE has partnered with the University of Waterloo and other top institutions to apply machine learning to this problem by leveraging the enormous amount of contextual information available during the software development cycle in addition to the analyzer output. For example, developers have a configuration management system that records code churn (rate of change), overall maturity of the affected software, and who “owns” the code and makes most changes in the affected area. Developers also have easy access to additional software metrics, such as code complexity and lines of code.

Our cooperative research focuses on determining how these additional factors can reduce the number of false alarms. Once this process is optimized, machine learning can automatically tune the analyzer output to a set of reports that dramatically reduces false positives with a minimized loss of true positives. With a far higher rate of actionability, static analysis can deliver on its promise of improved quality and security at reduced development cost and time to market.

Machine Learning Cuts False Alarms by 75%

The machine-learning tool we’ve been developing is showing promising results. The tool reduced false positives by 75% on a range of mature open source and commercial software projects. Without the tool, only 18% of generated alarms were actionable; with the tool, 93% of the alarms represented issues that needed to be fixed. This accuracy improvement represents a big step forward for the practical deployment of static analysis tools.

Save time and make custom apps easier to use by configuring them to specific needs out of the gate, reducing support issues, and increasing adoption rates for end users within your organization. Having an App Policy for your Good Dynamics application provides you with a graphical interface in the Good Control Console (GCC) to configure your application. Anytime the policy settings are changed, they are automatically pushed to all devices on the Good Control (GC) server with the policy assigned. Join us to learn how to create an App Policy and how to receive the App Policy settings in Good Dynamics apps.

Why Attend:

Learn how to create an App Policy

Learn how to receive App Policy settings

Provide Administrators with an easy way to remotely configure your application

Join us at the BlackBerry Developer Summit

Interactive coding sessions will help you build best-in-class enterprise apps in real-time leveraging the Good Dynamics SDK.

See how the BlackBerry application platform can help you create world class mobile solutions for your organization using BBM Protected, WatchDox, Good Enterprise Mobility Server (GEMS), and BlackBerry Enterprise Management Framework (BEMF).

At the BlackBerry Developer Summit, you will:

Receive interactive hands-on training on the Good Dynamics SDK designed for both new and experienced developers using the SDK

Get an exclusive first look at BlackBerry’s upcoming SDK release and its new innovative features

Software for enterprise use is made by developers who dedicate their time to creating safe and productive features for their applications. But the IT policies for these applications can vary greatly, depending on whether the application is running on a Corporate-Owned Personally Enabled device (COPE), a Company-Owned Business Only device (COBO), or a Bring Your Own Device (BYOD). Thus, before deploying your application into Android for Work (see Mark Sohm’s blog post: Deploying Applications into Android for Work Using BES12), you should consider testing your apps using the ‘Test Device Policy Control’ app (Test DPC).

The Test DPC app is a development tool that allows you to emulate the Android for Work environment on an Android device. Be sure to use a test device when running the app, as Test DPC will erase the instance of Android for Work that’s already set up on your device (which includes disabling the currently installed MDM tool and removing all Android for Work applications previously installed). The test environment can be configured to simulate anything from personal phones running company owned applications and data to devices that are entirely managed by the enterprise. Policy changes can be applied specifically to individual applications or can be applied across the entire device.

Test out your Android for Work application using the Test Device Policy Controller app

Test DPC’s policy management features include modifying accessibility services, app restrictions, NFC sharing, location access, certificate management, camera, data usage, and many more. For example, to simulate how an IT administrator might configure enterprise-specific policies on a work profile, simply click on the restrictions you would like to set from the Policy Management page and then run your application in an inflated work profile.

Test DPC is available as a free download on Google Play, and its source code can be found on GitHub.

Here’s the latest video blog review of some of the exciting Dev news and updates that was originally released in our newsletter on September 15th 2016. To ensure you stay in the loop with the latest and greatest from BlackBerry sign up for our Enterprise Apps Newsletter HERE.

New Developer Site Launch

The new developer site has been launched with all new material allowing developers to reach their enterprise clients. The site focuses on streamlining the developer experience and making the transition to the good dynamics SDK and future platform solutions from BlackBerry as easy as possible. To check out some of the sites resources like the webcast library, code samples, instructional videos and a getting started section check out the website here: https://developer.blackberry.com/enterprise

Good Dynamics SDK Update

The Good Dynamics SDK has recently been update to support Android N and iOS 10, developers looking to target Apple devices running iOS 10 and Android devices running Android N can re-compile their applications using the latest version of the Good Dynamics SDK. The Good Dynamics SDK can be updated through Xcode or Android Studio.

DTEK50 Release

The most secure Android device ever is here. At a very reasonable price point, the DTEK50 runs Android 6.0 on a comfortable 5.2 inch touch screen. The device also receives industry leading monthly security patch updates.

Hub+ Availability for Android Devices

The Blackberry Hub+ application extends our expertise in enterprise productivity by bringing the BlackBerry Hub unified inbox experience to the entire Android ecosystem. Now all Android 5.0 marshmallow devices can enjoy the Hub. The Hub brings your enterprise e-mail and personal e-mail together along with any social or chat apps to the same inbox allowing you to manage all of your messages in one effective place in a secure manner. Just search for BlackBerry Hub+ on your device in the Google Play store.

Learn how to write rich mobile applications with mobile backend services provided by Good Dynamics Mobility Platform. Enable your apps with powerful features such as Mobile Presence, Document repository access in your applications with simple out of box APIs. Good Enterprise Mobility Server (GEMS), provides valuable mobile backend APIs for Presence, Directory Lookups, Documents access etc. Learn about the different services and APIs available and check out what it means to add a service to your custom Good Dynamics application through sample applications and demonstrations.

]]>http://devblog.blackberry.com/2016/09/live-enterprise-developer-webcast-series-writing-rich-mobile-applications-with-blackberrys-good-enterprise-mobility-server-gems/feed/0good_blackberry_featureinsideblackberrybloggood_landscapeWhy You Should Let Your Kid be the Next BlackBerryhttp://devblog.blackberry.com/2016/09/why-you-should-let-your-kid-be-the-next-blackberry/
http://devblog.blackberry.com/2016/09/why-you-should-let-your-kid-be-the-next-blackberry/#respondThu, 15 Sep 2016 20:44:50 +0000http://devblog.blackberry.com/?p=22736/ Read More]]>(The following post is in response to a Huffington Post article published on 09/13/16)

Dear Mr. Finch and Mr. DePaul,

I read your article, “Don’t Let Yourself (Or Your Kid) Be The Next BlackBerry” this morning and felt compelled to respond. As a father, I agree that kids should “recognize the value of life beyond their grades” and “invest in different dimensions of their life.” Where I disagree with you, is the thought that kids shouldn’t be like BlackBerry.

Your health records, personal information and bank accounts are kept safe and secure because BlackBerry software is trusted by some of the world’s largest companies in industries such as banking, healthcare and legal. In the future, you may experience less scarring, less recovery time, and less pain should you need a heart transplant thanks to our software. These are just a few examples.

The reason I would want my kids (and your kids) to be like BlackBerry is this: Resiliency. We’re in the midst of an incredible transformation, bringing our software business – something we’ve always had – finally to the fore. And, it’s working due to the simple fact that BlackBerry has more than doubled its software revenue on a year-over-year basis for the past two quarters. We’re not letting one product/idea define us; rather, we are transforming our thinking, addressing our obstacles head-on to nimbly innovate in cutting-edge areas such as the Enterprise of Things.

There is a lot going on at BlackBerry today, which makes me want to leave you with one piece of advice: “just because you knew someone, doesn’t mean you know them.” Your old employer certainly looks a lot different these days.

Good Dynamics Applications SDK Update: iOS 10 & Android N Releases

With the upcoming release of iOS 10 and Android N there will be a Good Dynamics SDK update for compatibility. All Customers and Partners currently with Good Dynamics apps are encouraged to update and test with upcoming compatible versions of the Good Dynamics SDKs in order to avoid any app disruption when users upgrade their OS. The goal is to complete this by September 1st so your apps can be tested before iOS 10 and Android N are generally available. New apps must also be built with these SDKs.

Please visit this iOS 10 and Android N Updates page for the latest information, and follow it to get notified as changes go live. We highly recommend upgrading and testing your apps with the most recent GD SDKs located on the downloads page.

In my previous blog post – Remote Configuration of a Good Dynamics App – I explained how your application could support basic remote configuration. In that post I explained how an administrator could enter some textual information (server name, port and string) into the Good Control Console (GCC) that’s automatically delivered to a Good Dynamics (GD) application. That works great for basic text input, but what if you want to support more advanced configuration options? Requiring an administrator to enter complex configuration parameters as textual data would be inconvenient and error prone. The solution? App Policies!

If you want to jump straight to the samples, you can find “The Configurator” on GitHub:

By using an App Policy, you provide an administrator with a nice interface in the Good Control Console (GCC) to configure your application. An example is shown in the screenshot below. The App Policy definition that is loaded onto the GCC is defined in XML. Anytime the policy settings are changed, they are automatically pushed to all devices on the Good Control (GC) server with the application installed. Applications are alerted automatically when an updated policy arrives.

Screenshot of custom App Policy shown in GCC

App Policies, if defined, are applied to a single application and can govern the specific features of that application. App Policies are always applied in addition to the built-in policies, which apply to all applications. For example, there is a built-in policy for the minimum length of the GD security password. This policy applies to all Good Dynamics applications.

Let’s first take a look at how the App Policy can be accessed in your application. After that I’ll discuss the different elements you can use in a policy and show how you configure them on the server side and how you read them from within your application.

Reading the Policy on the Device (Android)

Your application can access the policy settings by calling the getApplicationPolicy and getApplicationPolicyString functions in the Good Dynamics Runtime object API. These methods are found in the GDiOS class for iOS and GDAndroid for Android. Note that these methods are only available for use after your application has been authorized, so you may not be able to read them as soon as your application starts up. The appropriate place to read the App Policy after your application is launched is within the onAuthorized call back.

//Triggered after Good Dynamics has initialized and the user has //been authorized to use the app.
@Override
public void onAuthorized()
{
//Get the App Policy, which is a java.util.Map.
AppPolicy appPolicy = new
AppPolicy(GDAndroid.getInstance().getApplicationPolicy());
//Do stuff here to apply the policy in your app.
}

This covers the scenario of application startup, but what about capturing changes made to the App Policy while the application is running? GDStateListener has that covered too, with its onUpdatePolicy method. This gets called when the application receives an updated App Policy.

//Triggered when a new App Policy arrives.
@Override
public void onUpdatePolicy(Map<String, Object> map)
{
//Get the new App Policy, which is a java.util.Map.
appPolicy.setPolicy(map);
//Do stuff here to apply the policy in your app.
}

Reading the Policy on the Device (Cordova)

To access the policy settings in a hybrid app (built with Apache Cordova) you simply just wait for the onDeviceReady event, and then call the updatePolicy function in the GDSpecificPolicies class.

When your app receives an updated policy, the callbacks you specified in the updatePolicy function will be called automatically.

Now that you can get the policy, we need to fill it with some interesting stuff that can be configured. We’ve created a sample applications called The Configurator that demonstrates the various elements (check boxes, text fields, etc…) you can use to make up your policy. The samples and its policy definition are both available on our GitHub site.

The sample reads the policy and configures various UI elements. Here is a screenshot of what the policy looks like on the Good Control Console, and the corresponding UI of the application.

App Policy viewed on Good Control Console

Android application with App Policy Applied

Installing your App Policy in a Good Control Server

As you are creating the XML file for your App Policy, you should try it out on your Good Control server to verify the policy is valid. The GCC doesn’t give detailed errors if your policy is invalid, which can make it difficult to find that line you made the syntax error on. An online XML validator can help in that regard. You can use an online validator with the AppPolicySchema.xsd to validate both syntax and structure. But if you test it out as you create it, you’ll know what areas are new, which will help you focus on a specific piece of XML to correct.

Once you have your application setup in GCC, you can upload a policy for it. To do that click on Manage Apps in your GCC menu, click on your application and then choose the Configuration tab. On this screen you’ll see an Upload button that can be used to upload your XML policy file. If there is a problem with the policy file, you’ll get an error after the file was uploaded.

After uploading the app policy directly into your own GCC, the updated policy will be visible right away for your custom application. If the policy is for an application up for sale in the Good Marketplace, it can take 12-24 hours before the updated policy is visible on your customers GCC. A customer could restart their GCC to trigger the policy update immediately.

To view and configure your policy, choose Policy Sets from the GCC menu, click on the Pencil icon for the policy you wish to edit and then choose the Apps tab. Expand App Specific Policies and look for your application in the list. Expand the view for your application and you’ll see the UI for your policy elements. Make any configuration changes you wish to try out and then click on the Update button to save your changes. When you click Update, the policy is pushed to the device, triggering the onUpdatePolicy method that was explained in the previous section.

Policy Components

Top Level

Now let’s take a look at the XML used to create a policy. The top level element in the policy is the AppPolicyDefinition tag. Everything we want to use in our policy must be within this tag.

Policy Views

Next we need to create one or more pview elements, standing for Policy View. The policy view describes how policies are displayed in the GC console and how policy settings are grouped when accessed by the application. The policy view can be hierarchical, with the pview element containing further pview instances as sub-elements. There are 3 different types of pview, normal, collapsible and tabbed.

Normal is the default where contents are displayed in a simple inline style. Collapsible displays the contents in a view that can be collapsed to a single line. The view’s title, if any, will be displayed in the collapsed line. Tabbed displays the contents in a view that can be selected by selecting a tab, which is what I’m using in this sample. The view’s title, if any, will be displayed in the tab. Nesting of tabbed views is not supported.

This creates a view that contains 3 tabs, titled “Vehicle Specification”, “App Effects” and “About” as defined by their title elements. The first tab contains 4 policy elements (pe), the second 2 elements and the final tab none. The final tab contains only a textual description element and is shown in the screenshot below. If you were reading closely you’ll notice that there is a policy element that is not within any tab. The “policyVersion” is a hidden element that is not displayed. This contains an internal policy version number that is not shown to the administrator. You can increment this version as you release new versions of your policy so that your applications are aware which version is on the server and the elements the policy contains.

Tab policy view with just text, no policy elements.

The sendto attribute is not used in this example, but is important to point out. You can define a sendto attribute to state the mobile operating systems the settings in the policy view pertain to. Only those elements meant for the operating system your application is running on are delivered. This allows you to have different options for iOS and Android applications. By default, elements are sent to all operating systems. For more details, refer to sendto on the Application Policies Definition page.

Policy Elements

Policy Elements refer to the actual configurable settings that an administrator can interact with (excluding the hidden element) and are delivered to your application. Let’s have a look at how each setting in this sample policy is created, working from top to bottom. For reference, here’s a screen shot again of the first tab of this policy.

Vehicle Specification Tab

Checkbox Element

The first policy element is a checkbox to choose whether to display a car image that is a coupe or convertible (or cabriolet if you prefer). Here’s the XML that was used.

This element is fairly basic, containing a name (that’s referenced in the policy view above), key (used as the key in the policy delivered to the application), label (displayed to the admin) and default value (false, meaning unchecked). The name and key don’t need to match, but I find it easier to use the same value for the policy element name and key.

To facilitate easy access to the policy in my sample application, I created a wrapper class called AppPolicy, which parses the policy Map object to retrieve the value for each setting. Let’s have a look at the method used to access the isConvertible value.

//Returns true if Convertible checkbox is checked in the app
//policy, false if it is not.
public boolean isConvertible()
{
//If the policy has been set (not null), extract the
//isConvertible value.
if (policy != null)
{
return
((Boolean)policy.get("isConvertible")).booleanValue();
}
else
{
return false;
}
}

In this method I’m returning the boolean value in the Map for isConvertible, if it exists. If it’s not present it defaults to false, or coupe (not a convertible).

The App Effects tab uses a checkbox feature where the second checkbox is only enabled if the first is checked. This isn’t actually defined within the checkbox setting itself, but in the policy view (pview). The depends attribute bolded in the XML sample below the screenshot highlights how to use this feature.

Select Element

The next policy element used is a select element. This appears as a drop down when clicked on, allowing the administrator to choose the car colour. One important thing to note about this element, is when the administrator first views the policy it’ll appear as if the first element is selected. However, unless they’ve actually clicked on something in the list the element is not delivered to your application. You could handle this one of two ways. You could have the application assume the first value is the default if not set, which is what I’ve done in this sample. You could also make the first entry in the select a dummy entry that says something like “Choose from this list”, forcing the admin to make a selection.

Select policy element expanded

This setting policy element is made up of two elements. First, there is the setting element, which shares some similar elements to the checkbox that were described above. The new item here is the options tag. The option tag refers to a descriptive list (dl) that defines the options available for selection in the select. The description (desc) defines what is shown to the administrator, the value defines what is passed to the application.

Here is the Android code used to retrieve the colour value. The key exteriorColor is used to reference the Integer stored in the policy map. As explained above the value of 0 (for black) is returned if “exteriorColor” is not set, which could happen if the administrator did not actually click on the select box and choose a colour.

Multiselect Element

This sample also allows the administrator to choose the elements to display to the user. They have the option of showing or hiding the car title, car image and car description. This is done using a multiselect element. The box in red encapsulates the entire multiselect element.

Multiselect Element

The multiselect element includes some of the same tags as the select element, which were described in the previous section. The new item here is the value tag in the multiselect, along with the data objects (do) list. The do list is used to define the options that are checked by default. If a value in the do list matches a value in the dl list, the option for that checkbox will be checked by default when the policy is first viewed in the GCC.

On the mobile application, the App Policy will contain a Vector object called visibleElements. The visibleElements vector will contain an entry that matches the value (from the do list) of each option in the multiselect that is checked. In the sample, I created separate methods to check if the name, image and description should be displayed. Here is the method that checks for the car name. The other methods are nearly identical, the key difference being the String value they search for in the vector (name, image or description).

Text & Textarea Elements

The text and textarea elements are nearly identical, so I’m going to cover them together there in the same section. The only difference between the two is how the look visually in the GCC. The text element appears as a single line, while the textarea appears as multiple lines. You can see examples used for the car name and car description.

The use of name, key and label items follows similar usage patterns to the elements already described. Maxlength is new, and specifies the maximum number of characters the administrator can enter. Maxlength can be used in both text and textarea, but is optional. In the examples below I only set a max length for the car name.

If the administrator has entered a value, it’ll be included in the policy map with its matching key. Simply extract it as a string to retrieve the value.

//Returns the value entered into the Car Name text field in the
//app policy. If it wasn't set "Not set" is returned.
public String getCarName()
{
//If the policy has been set (not null), extract the carName.
if (policy != null)
{
return (String)policy.get("carName");
}
else
{
return "Not set";
}
}

Hidden Element

The hidden element, as its name alludes to, is hidden from view in the GCC. It’s useful to use for hard coded values that administrator shouldn’t change, such as the version number for this policy definition. Although the element is not visible, it still does need to be referred to with a policy element (pe) tag that exists within a policy view (pview) tag.

Retrieval of hidden elements in an application is similar to what was done for the text and textarea elements. We refer to the key called version in the policy Map to extract the value of the hidden element.

//Returns the version specified that is a hidden variable in the app policy.
public String getAppPolicyVersion()
{
//If the policy has been set (not null), extract the version.
if (policy != null)
{
return (String)policy.get("version");
}
else
{
return "unknown";
}
}

A few weeks ago we made the brief trip down University Avenue in BlackBerry’s hometown of Waterloo, Ontario to host an employment info-session for students at the University of Waterloo. As we do each term at various STEM-focused universities, this provides us with the opportunity to meet with students interested in working at BlackBerry during their cooperative (co-op) education student work terms, in addition to full-time roles after graduation.

As student positions at BlackBerry continue to be some of the most sought after by students at the University of Waterloo, and other STEM-focused universities across the country, these events help us to converse with and mentor students on industry trends and gaining employment in the technology field.

Dr. Bob (Bowerman) greeting students in the DC lounge, just outside of his old office at UW

This term’s speakers from BlackBerry included:

Robert Bowerman (SVP, Enterprise Software, Architecture & Development) who returned to his alma matter where he taught for 6-years to speak about how the co-op program is engrained in BlackBerry’s corporate culture

Michael Clewley (Director Handheld Software Product Management) who spoke about his own student experience at BlackBerry and the opportunities afforded to him as a result

James Dreher (Senior Enterprise Solutions Manager) who offered insight into applying to student positions from a manager’s perspective, and

Matthew Fisher (Senior Manager, Business Applications – Customer Experience and Technology) who shared how students on his own team have an incredible amount of input in their own role, and have the ability to shape their own day-to-day responsibilities with their team.

James Dreher shares his insight into what hiring managers at BlackBerry are looking for.

Even within the BlackBerry Developer Blog we encourage our student colleagues to strive to write blog content to share with our BlackBerry Developers. They often provide us with a fresh perspective and are eager for the opportunity to reach such an audience. You can see some of the work of our previous students, Andrew and Sanam, below.

As far as the competitiveness of the applications received, you can see from the pie-chart depicting the approximate student positions at BlackBerry per term compared to the number of applications received. Students from throughout the world (and Canada) have been applying for the positions available which suit them best, according to their prior experience or interest.

At BlackBerry, students also have the opportunity to work from various locations around the globe. Current positions for students are available in the United States, United Kingdom, Germany and Canada.

If you’re a student or recent grad interested in applying at BlackBerry, feel free to reference the following links for employment and contact information. We’d love to hear from you!

]]>http://devblog.blackberry.com/2016/07/blackberry-goes-to-school/feed/0waterloo_coopinsideblackberryblogwaterloo_coopwaterloo_coop2waterloo_coop3coop student applications chartGood Access and Good Work for Mac and Windows Operating Systemshttp://devblog.blackberry.com/2016/07/good-access-and-good-work-for-mac-and-windows-operating-systems/
http://devblog.blackberry.com/2016/07/good-access-and-good-work-for-mac-and-windows-operating-systems/#respondTue, 12 Jul 2016 17:09:35 +0000http://devblog.blackberry.com/?p=22517/ Read More]]>Good Access app showing the Good community home page

Blog Post Written By: Sriram Krishnan

A couple weeks ago we extended the Good Work experience to the Windows and OS X platforms thereby offering a credible and effective alternative to the VPN and VDI technologies that exist today. As much as it’s a market expansion, it is the innovative path that we are super excited about.

First let me describe the essence of Good Work experience for Windows and OS X. We term this release as a minimum viable product (MVP) release. We have taken a multiphase approach and this first phase is targeted towards temporary or contract workers at a company. It delivers basic email, calendar and contacts functionality securely to a user’s laptop. Follow up releases will support more advanced messaging and collaboration capabilities that allow IT to completely displace legacy access technologies and help Enterprise IT to consolidate their EMM infrastructure. This results in a true single control pane for management with control of all popular end points.

The path breaking innovation I referred to earlier has been made possible by Good Dynamics and Good Access. Good Access secure browser has been built on top of the Good Dynamics platform leveraging Chromium libraries. A fundamental aspect of our support for Windows and OS X is that it has been delivered as an extension to the Good Access secure browser. The initial release of Good Access for Windows and OS X was in December 2015. This powerful combination of Good Dynamics and Chromium libraries has allowed us to deliver a Good Work experience in the form of a browser extension with rich secure offline storage capabilities. For the end user it is a modern app experience delivered utilizing a next gen HTML5 based technology. Good Access for Windows and OS X was built with this express vision and purpose, which is why we have been positioning Good Access as a Secure Browser platform.

Being a HTML5 app, Good Work delivers an identical experience across both Windows and OS X. Our overarching goal is to expose this framework as a Good Dynamics platform capability so that developers can also write their own HTML5 based applications which can help the line of business (LOB) to rapidly developed mobile first business work flows across all platforms.

The activation model for Good Work for Windows and OS X is akin to other OS’s we support i.e. iOS and Android. A subtle difference though is that the software for end users needs to be downloaded from www.good.com/enduser . The existing Good Access and Good Control policy frameworks can be leveraged for administration and management purposes. Remember this fits the bring your own device (BYOD) scenario perfectly. The administrator is only managing the app on the laptop, not the device itself.

On iOS and Android, we have used a combination of Exchange Web Services and Exchange Active Sync to access the Microsoft Exchange infrastructure. On Good Work for Windows and OS X we utilize Exchange Web Services 100%.

We pioneered the container based approach for iOS and Android platforms. We believe that Good Work for Windows and OS X is an industry leading and industry first approach, which offers an alternative to VPN and VDI technologies that can allow enterprise IT to extend the bring your own (BYO) model to Windows and OS X. We strongly encourage our customers to start a Good Work for Windows and OS X pilot and become part of the next wave of BYO revolution.

To download the applications, you can choose to download Good Work and Good Access as a package or Good Access on its own. Remember Good Work for OS X and Windows is built using Good Access so it is required as part of the install: