App Finder & Scheme Handler

 

App Finder

To facilitate inter-app communication and discovery, Boopsie has created an App Finder service that allows 3rd party apps on Android, iOS and BlackBerry (BlackBerry uses a different mechanism described below) to be able to detect if an app is installed and then offer to install the app if the app is not installed. The service uses Scheme Handlers on both Android and iOS. Module names are used by BlackBerry. By a 3rd party supporting a scheme for Android and iOS, inter-application communication can be handled easily by simply supporting the schemes and using the appfinder service. The amount of coding required on both platforms is trivial. Boopsie provides Android and iOS sample applications to demonstrate this capability. A competent programmer should take less than ½ hour to implement the entire infrastructure.

A key tenant of the appfinder service is that there are different requirements on each platform for supporting app downloads. For example, on any app downloaded from the Amazon Market for Android, if the application offers to download any other application, that app fulfillment is *required* to be from the Amazon Market. Therefore, the application *must* know which market it is originally from so that it can offer to download a 3rd party app from the Amazon Market as opposed to the Android Market. There is a facility in the appfinder service to accommodate this. Some markets supported are iTunes App Store, Barnes & Noble Nook Apps, Android Market and Amazon Market. Additional markets will be added as needed.

By supporting a ‘Scheme Handler’ on Android and iOS, there is a very basic procedure that can be used to launch 3rd party apps from any other app.

How can the app be programmed, so that it will be able to handle such links that weren’t anticipated?

Boopsie has implemented an “App Finder service” to solve this problem. The app does the following with each URL:

1. If the app knows how to handle the URL, do so. Otherwise:

2. Check to see if the particular scheme is supported. If so, tell the OS to handle the URL. It will cause the 3rd party app to launch with any parameters needed. From the user’s perspective, they clicked on a link and it did the right thing.

3. If the OS doesn’t know how to handle the scheme, the send the URL to the App Finder service. It will look up the URL by scheme, determine that there is a corresponding app, and reply with the following instructions:

a. Send external browser to a specified URL. This URL lands on a page that explains to the user that the app needs to be downloaded. It offers them a download link, which sends them to the app in the App Store, Android Market, etc. The user downloads the app.

4. the 3rd party app is installed, clicking on the App Link in the hosting application will automatically launch the 3rd party app vs. redirect to the App Finder service.

Sample projects are available for both Android and iOS that show how to implement a basic Scheme Handler as well as call the appfinder service if the given scheme is not supported. Please contact support@boopsie.com and request the sample projects for both Android and iOS. Some code fragments are below.

Boopsie Scheme Handlers

All of the “Boopsie for Library” apps on Android (Boopsie release 4.5.70 or greater), and iOS (version 4.55 or greater) support the ability to be called as well as the ability to return to a calling application. These can be used jointly or independently. Using the ‘return to calling application’ feature, can be used, for example, when a full campus app is created by a 3rd party (such as Straxis or Blackboard) and the campus app wants to invoke the Boopsie for Libraries application. Then, when the Boopsie for Libraries application is launched from the calling app, there is a menu item added that may say “Return to campus home page” or similar, that when selected, invokes the calling application.

General Use

Please contact Boopsie if you do not know your ‘scheme’.

You may supply parameters to the URL to tell the app to which ‘channel’ to launch. The default syntax would go to the ‘home’ page of the app. e.g.

hclib.boopsie://?home

To go to the “Catalog Search” channel of the mville app, you would use:

mville.boopsie://?c=http://mville.boopsie.bredir.com/i/mville_holdings/&k=

To go to the “Catalog Search” and search for something by James Patterson, use:

mville.boopsie://?c=http://mville.boopsie.bredir.com/i/mville_holdings/&k=jam+patt

On iOS you can actually type those URLs in the Safari browser and they work (provided you have the app installed). On Android, the browser doesn’t understand the URL scheme, but any app that launches an Intent will work (see below).

To launch these from code, here is the code needed from iOS and Android to launch any of the Boopsie apps as well as invoke the appfinder service for any scheme that is not installed. Further details of the appfinder service may be found in the sample code provided by Boopsie.

iPhone – launch the ‘hclib mobile’ application

hclib.boopsie://?home

NSString *C_URLTOCALL = @”hclib.boopsie://?home”;

NSString *C_APPFINDER = @”http://appfinder.boopsie.com/find?url=%@”;

NSURL *myURL = [NSURL URLWithString:C_URLTOCALL];

if ([[UIApplication sharedApplication] canOpenURL:myURL])

[[UIApplication sharedApplication] openURL:myURL];

else

{

// Use appfinder service to find and install

NSURL *appfinderURL = [NSURL URLWithString:[NSString stringWithFormat:C_APPFINDER, [C_URLTOCALL stringByAdingPercentEscapesUsingEncoding:NSASCIIStringEncoding]]];

[[UIApplication sharedApplication] openURL:appfinderURL];

}

 

Returning to an app that called Boopsie

2011-12-02: Added the ability to call the Boopsie app and provide a return menu item and URL. For example, the Orange Lutheran app can be called by the Straxis app and then the Boopsie app can add a Menu item to the main menu for the return to the Straxis app. Be careful to properly URL encode things.

We added these parameters to the Scheme Handlers for iOS and Android Boopsie apps:

rurl=

rmenu=

These items are additive – meaning, if we have a Boopsie app named FOO and a different app or url X launches FOO and adds a rmenu item, then app or url Y launches FOO and adds a menu item – both items will show up and be active.

The below URL from a browser will launch the USC HSL app, go to the Home channel and add a menu item to go to Google:

uschsl.boopsie://?home&rurl=http%3A%2F%2Fgoogle.com&rmenu=Go+Google

Here is a complex URL that will launch the USC HSL app from the browser and provide a return menu item of “PLYMC”. Since PLYMC is also a Boopsie app, the ‘rurl’ is encoded to add a menu item to PLYMC of USCHSL. So, basically, the below launches the USC HSL app and adds a PLYMC menu item. When you click the PLYMC menu item, it launches PLYMC with a return menu item for USC HSL. So, effectively, this is how you get 2 Boopsie apps to call each other.

uschsl.boopsie://?home&rurl=plymc.boopsie%3A%2F%2F%3Fhome%26rurl%3Duschsl.boopsie%253A%252F%252F%253Fhome%26rmenu%3DUSCHSL&rmenu=PLYMC

To test the above on Android or iOS, you may download these:

http://uschsl.boopsie.com

http://plymc.boopsie.com

Then, in the mobile browser, go to [http://public.boopsie.com/uschsl.html]

Click that link and it will launch USC HSL and put a PLYMC link on the main menu. Click the PLYMC link and it will launch PLYMC with a return menu to USC HSL. Now, go to [http://public.boopsie.com/plymc.html] and it will launch PLYMC and add a Go Google menu item. So, you’ll see both items in the PLYMC app.

Source Code for iOS and Android Sample projects:
iOS: http://data.boopsie.com/utils/CallBoopsie_iOS.zip
Android: http://data.boopsie.com/utils/CallBoopsie_Android.zip

Supporting Boopsie Builds for the App Finder service and Scheme Handler launching:
Android: 4.5.70 or later
iOS: 4.40
BlackBerry: 4.5.74

 

App Finder in the BlackBerry OS

The BlackBerry does not support Scheme Handlers, so a different mechanism is used on that platform. Specifically, the App Finder service may redirect to a BlackBerry friendly URL (App store or mobile site) or the 3rd party vendor may supply the ‘module name’ of their application. For example, BlackBerry Maps has the module name “net_rim_bb_lbs” on the BlackBerry.

In the App Finder service, there is a place to put the BlackBerry module name. The Boopsie BlackBerry apps intercept the scheme request in the application, then make a call to the App FInder service to provide a module name for the given scheme. For example, the OverDrive app for BlackBerry has a module name of “MediaConsole” and a scheme name of “overdrive:”. The Boopsie app will intercept any overdrive://<link> and request the App Finder service to return the module name for ‘overdrive’ – in this case, the service would return : “MediaConsole”. The Boopsie app then launches that module directly if it is on the device, or redirects to the proper download URL if the module is not installed on the device.

Transferring from a Mobile Website to a Boopsie Generated App

This technique will allow a mobile website to detect whether a Boopsie app is installed or not, then launch the proper Application Store URL to install the app if it is not already installed. This comes in very handy, for example, when a University has a mobile website, but the Library has a Boopsie for Libraries generated app. This allows the mobile website to call or install the app automatically. We will use the Seattle Public Library (SPL) application as the example. The calling website only need add this Javascript to support this feature. The above version #s will support this on Android, and iOS. On BlackBerry, the app needs version 4.7.57 or higher (2012-may-10 or later)

<html>
<head>

<meta name=”viewport” content=”width=device-width, initial-scale=1.0, user-scalable=yes”/>

<script type=”text/javascript”>
function launchSPL()
{

if (navigator.userAgent.indexOf(‘iPhone’) > -1 || navigator.userAgent.indexOf(‘iPad’) > -1) {

setTimeout(function noapp() { window.location=”http://spl.boopsie.com”; }, 25);
window.location = ‘spl.boopsie://?Home’;

}

else if (navigator.userAgent.indexOf(‘Android’) > -1) {

var iframe = document.createElement(‘iframe’);
iframe.style.visibility = ‘hidden’;
iframe.src = ‘spl.boopsie://?Home’;
iframe.onload = function noapp() { window.location=”http://spl.boopsie.com”; };
document.body.appendChild(iframe);

}

else if (navigator.userAgent.indexOf(‘BlackBerry’) > -1) {

setTimeout(function() { window.location=”http://spl.boopsie.com”; }, 3000);
window.location = ‘http://greg.boopsie.com/srvc/getmofi2.aspx?b-pin=spl.boopsie&c=http://spl.boopsie.bredir.com/i/Home/’;

}

else {

window.location = ‘http://spl.boopsie.com’;

}

}

</script>
</head>
<body>
<h1>Seattle Public Library (SPL)</h1>
Clicking the button below will detect whether the Seattle Public Library app is installed. If it is installed, it will launch the app, if it is not installed, it will transfer you to the correct market to download it.</br></br>

<button type=”button” onclick=”launchSPL()”>Launch/install SPL</button>

</body>
</html>

facebooktwitterpinterestlinkedinrssyoutube

Learn More about Boopsie for Your Library!

Deliver your bookshelves to all patrons' smartphones or tablets

Public Public bg
eContent BookLook Mobile™ BookCheck™
Academic Academic bg
eContent Credo Literati Mosaic by Blackboard
Special Speciality bg
eContent Smart Prefix™ search CONTENTdm
K-12 K12 bg
eContent tutor.com Ask a Librarian
Corporate Co & Gov bg
eContent Smart Prefix™ search Multilingual
Military Military bg
eContent Smart Prefix™ search Multilingual