AppLink Proposal - for iPhone apps

Date: 2009/09/11
Version: 1.0
Author: Alexander Clauss
E-Mail: alexander@icab.de
Web: http://www.icab.de/dev/AppLink.html

Download AppLink Source

AppLink.zip (32 KB)

Introduction

AppLink is an Objective-C class which can be used in (Internet-aware) iPhone Apps to call each other to open certain URLs.

There are many apps on the iPhone which provide a way to open a web page (for example the developers product page, FAQ or feedback page) in Safari or to send an email to the developer, launching the Mail app of the iPhone. This is done by simply asking the iPhone OS to open a certain URL, the iPhone OS will then launch an app which is able to open this URL. For example, the URL scheme "http" will launch Safari, the URL scheme "mailto" will launch Mail. All iPhone apps can register their own URL schemes and so it's possible to call them by letting the iPhone OS open URLs with their URL scheme.

In general this works fine, but there are some restrictions: The iPhone OS will always pass "mailto" URLs to Apple's own Mail app, even if the user has installed another app for email. The same for "http" URLs which are passed to Safari, regardless if other browsers (for example "iCab Mobile") are installed. In general, the iPhone OS will always pass certain standard URL schemes ("http", "https", "feed", "feeds", "mailto") and some iPhone-specific ones ("sms", "tel", "youtube", "itms", "maps") to the default apps which are coming with the iPhone. This is even the case when these apps are switched off in the parental control settings of the new iPhone OS 3. Instead of passing these URLs to alternative apps which support the same URL schemes, the user will only get an error message.

AppLink can address these issues. Apps which follow the AppLink protocol can configure themselves for a certain URL or for certain web pages at an alternate Browser, RSS Reader or Mail app. This way the alternate Browser, RSS Reader or Mail app could provide the user an additional UI element to open the other app whenever the user opens a URL or web page which matches the criteria of the other app. For example when the user opens a Facebook profile in an alternate web browser, the browser can provide a button to open a native Facebook App where the user usually manages all the facebook contacts. Also apps which do now only provide a way to open a web page (for example the support or help page of the App) in Safari can easily open the page in an alternate web browser instead.