Crudebyte Logo
JACKiOS  1.9.10.3
Changes SDK 1.9.10.2

Summary of noteworthy changes in the API of SDK 1.9.10.2.

This page describes the important changes of the JACKiOS SDK 1.9.10.2 release. We recommend you to rebuild your app with the latest JACKiOS SDK and perform the suggested changes described below, to support new important features of JACK in your app.

Summary

Remote App Start

app_launch_dialog_shot.png

The JACK control app provides a very important new feature from user aspect: the ability to launch JACK client apps directly from the JACK (server) app and fast switching the screen between the various JACK apps, without forcing the user to do such things with home button and iOS desktop.

To support these important features, you need to add an URL schema entry to your app's Info.plist file.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleDisplayName</key>
<string>My App Name</string>
...
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleURLName</key>
<string>com.foocompany.myapp</string>
<key>CFBundleURLSchemes</key>
<array>
<string>foocompanymyapp</string>
</array>
</dict>
</array>
</dict>
</plist>

It is important here that you choose an unique URL schema, which is not already been used by another iOS app. So preferably make the URL schema name i.e. a combination of your company's name and your app's name, which was i.e. foocompanymyapp in the example above.

We also recommend you to call jack_app_register() each time your app launches. For example in the following method of your app delegate.

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// Override point for customization after application launch.
...
// ensure this app is known by JACK
return YES;
}

This call checks whether your app is already been "known" to the local JACK installation. If not, it will inform the JACK installation about the existence of your app, so that your app appears in the list of installed JACK apps and accordingly to allow the user to start your app directly within the JACK control app.

You can check the launchOptions argument of that app delegate method shown above, for finding out whether your app was launched regularly from the iOS desktop or by JACK instead:

// was this app launched from the iOS desktop or by some other app?
NSURL* url = [launchOptions valueForKey:UIApplicationLaunchOptionsURLKey];
NSString* src = [launchOptions valueForKey:UIApplicationLaunchOptionsSourceApplicationKey];
NSLog(@"App launched by app '%@' with URL '%@'", src, [url absoluteString]);

You may also provide a button in your app to switch back to the JACK control app. You can download the JACK icon from our website and you may include it in your app, i.e. as skin for such a button.

jack_button_example_shot.png

When that button is pressed by the user, simply call jack_gui_switch_to_client() with the following string argument:

// bring the JACK control app into foreground on the screen
jack_gui_switch_to_client(client, "jack");

which will immediately bring the JACK (server) app into foreground on the screen. You might even use the same function with your own JACK client name instead to bring your own app into foreground, i.e. to inform the user about some very important occurrence in your app while the user is currently watching at another app. However we discourage to use jack_gui_switch_to_client() to bring your own app "unasked" into foreground. It might make sense under very, very rare and really important circumstances. But in doubt, don't use the function for that purpose. Because otherwise it could end up your app being very annoying to the user, causing more damage to the user experience instead of improving it.

Remote App Quit

The user now also has the possibility to close JACK client apps directly in the JACK control app, simply by pressing the new "X" button which pops out animated from the background of JACK client icons. When that buttons is pressed by the user, the respective JACK client is closed by the server and the client's shutdown callback is called with the new flag JackClientKilled. So you can check for the latter flag to distinguish between user triggered quit requests and other reasons. If your JACK client was closed by the user, your app should quit (i.e. with exit(0)). Since the user is already asked for a close confirmation in the JACK (server) app, this should not be problematic.

Overview of SDK releases ...

DE • EN
Copyright © MMXIII Crudebyte. All rights reserved.

twitter