Skip Navigation

Add the event-handler skeleton manually

Note that this task is only required if you choose not to use the Xcode template, which includes this code by default.
The application-delegate object 
UIApplicationDelegate
 manages the 
iOS
 app life cycle using events. You can decide how to implement the life cycle of events; the steps below provide an example that is based loosely on the 
Apple
 Breadcrumbs sample app (with differences in declarations and other key areas). Several of the sample apps included in the SDK also demonstrate the event handling lifecycle.
  1. Specify the entitlement ID (
    GDApplicationID
    ) and entitlement version (
    GDApplicationVersion
    ) in the 
    Info.plist
     file. See Using an entitlement ID and version to uniquely identify a BlackBerry Dynamics app.
  2. Import 
    GDiOS.h
     and implement a skeleton 
    GDiOSDelegate
     protocol. The example here relies on a boolean variable named 
    started
    . An alternative approach is to declare the variable in your project's 
    .m
     file.
    // AppDelegate.h #import <UIKit/UIKit.h> #import <GD/GDiOS.h> @interface AppDelegate : UIResponder <UIApplicationDelegate, GDiOSDelegate> { BOOL started; } @property (strong, nonatomic) UIWindow *window; @property (strong, nonatomic) GDiOS *good; - (void)onAuthorized:(GDAppEvent *)anEvent; - (void)onNotAuthorized:(GDAppEvent *)anEvent; @end
  3. Build the app and verify that there are no warnings or errors.
  4. Use 
    GDAppEvent
     to process events. Move the application launch code from 
    didFinishLaunchingWithOptions
     to the 
    GDAppEvent
     handler method.
    // AppDelegate.m - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Override point for customization after application launch. self.good = [GDiOS sharedInstance]; _good.delegate = self; started = NO; //Show the BlackBerry Authentication UI. [_good authorize]; return YES; } #pragma mark BlackBerry Dynamics Delegate Method - (void)handleEvent:(GDAppEvent *)anEvent { /* Called from _good when events occur, such as system startup. */ switch (anEvent.type) { case GDAppEventAuthorized: { [self onAuthorized:anEvent]; break; } case GDAppEventNotAuthorized: { [self onNotAuthorized:anEvent]; break; } case GDAppEventRemoteSettingsUpdate: { // handle app config changes break; } case GDAppEventPolicyUpdate: { // handle app policy changes break; } case GDAppEventServicesUpdate: { // handle services changes break; } case GDAppEventEntitlementsUpdate: { // handle entitlements changes break ; } default: NSLog(@"Unhandled Event"); break; } }
  5. Special-case the 
    onNotAuthorized
     events. Verify that the app can handle authorization errors or functionality like remote wipe, a lockout, or blocking events. Implement these events in the 
    onNotAuthorized
     function.
    - (void)onNotAuthorized:(GDAppEvent *)anEvent { /* Handle the BlackBerry Libraries not authorized event. */ switch (anEvent.code) { case GDErrorActivationFailed: case GDErrorProvisioningFailed: case GDErrorPushConnectionTimeout: case GDErrorSecurityError: case GDErrorAppDenied: case GDErrorBlocked: case GDErrorWiped: case GDErrorRemoteLockout: case GDErrorPasswordChangeRequired: { // A condition has occurred denying authorization, an application may wish to log these events NSLog(@"onNotAuthorized %@", anEvent.message); break; } case GDErrorIdleLockout: { // idle lockout is benign & informational break; } default: NSAssert(false, @"Unhandled not authorized event"); break; } }
  6.  On authorization, start the app. Initialize and start the UI with the 
    onAuthorized
     function. The 
    GDErrorNone
     event is returned by the 
    BlackBerry Dynamics Runtime
     whenever a container is opened and no error occurs.
    - (void)onAuthorized:(GDAppEvent *)anEvent { /* Handle the BlackBerry Libraries authorized event. */ switch (anEvent.code) { case GDErrorNone: { // started was declared in first step. if (!started) { // launch application UI here started = YES; } break; } default: NSAssert(false, @"Authorized startup with an error"); break; } }
  7. Add 
    GDAssets.bundle
     to the 
    Copy Bundle Resources
     build phase in 
    Xcode
    . Verify that the copy of the bundle that is distributed with the framework has been added to the project.