Skip to content


Calling alternate browsers on the iPhone

Many users of iCab Mobile ask me, if they can change the default browser on the iPhone to iCab Mobile, so that iCab is called instead of Safari if another app lets the system open a web page. Unfortunately I have to answer “No”. The iPhone OS will always call Safari. Even if Safari is switched off in the parental control settings, the user would only get an error message that the web page cannot be opened, regardless if there’s a browser like iCab Mobile installed, which would be able to open the page.

So I asked myself, if there’s a solution for this. Would it be possible for an app to open a web page in iCab Mobile if it is installed and ┬áto open the page in Safari if iCab is not available. The answer is “Yes, but it requires some modifications in these apps”.

Of course the problem is not about iCab Mobile alone, there are many other alternative web browsers for the iPhone, also other applications like RSS readers, Mail apps where the same problem occurs: the iPhone OS won’t call them, it will insist in calling the default apps (e.g. Safari for web pages and RSS feeds, Mail for “mailto” URLs).

This is why I’ve created a proposal which can solve this issue. An app would be able to open a web page in a web browser, but it doesn’t have to know if this is Safari, iCab Mobile or any other alternative web browser. The same for RSS feeds, it can just pass the “feed” URL to the iPhone OS and it will be delivered to an RSS reader the user has installed, or if there’s none installed, the RSS feed would be opened in Safari. Of course a similar thing can be done for alternative Mail apps.

In order to get this working, the iPhone apps which provide an option to open URLs in external apps (currently these are probably only Safari and Mail) and the apps which can receive URLs from other apps do need to be modified.

My proposal includes a simple Objective-C class, which is doing all the magic stuff, so all apps would only need to add one or two lines of code, in order to get this working.

The fact that my proposal requires a modification of existing apps makes clear that it can be difficult to get accepted. Apps need to follow some new conventions. This is why I’m asking for some feedback and critics. Is my proposal a stupid idea, or is it worth to be implemented in iPhone apps? If there are developers who think that the proposal is worth to be discussed, please let me know. I’ll create a discussion board/Mailing list at google or yahoo in this case. Also spread the word to other developers, if you think iPhone apps can benefit from being able to open alternative internet apps instead of the default apps.

You can download an archive with my proposal, and a sample implementation.

There’s also a web page with an overview about my proposal.

Posted in iPhone & iPod Touch, Programming.

Tagged with , .


7 Responses

Stay in touch with the conversation, subscribe to the RSS feed for comments on this post.

  1. ydydjzartwdederth says

    got problem with icab browser mobile iphone, could not delete saved login passwords.

  2. Alexander Alexander says

    Can you tell me more about this problem by email? In general you shouldn’t have any problems deleting saved form data, in case you’ve accidently entered the wrong data in a login form. Just go to the in-app settings and you can inspect and edit the saved form data.

  3. Huey says

    I think your proposal makes sense. Would allowing other alternative to the defaults not be similar to Microsoft being forced to opening up it’s OS to other browsers etc, instead of defaulting to the pre-installed Internet Explorer?

  4. Curious Rabbit says

    Has anyone adopted this? Isn’t this of dubious value to the user unless adopted by the default apps, i.e., Mobile Safari and Mail?

  5. Alexander Alexander says

    @Curious Rabbit
    If you would only use the default Apps, then you would be right. But if you use also other Apps, then it makes sense when these would be able communicate with each other directly.

  6. Randal says

    You can already change default browser opener on jailbroken devices. It’s an easy Cydia tweak that you download called browser changer.

  7. MicroLao says

    @Randal
    Indeed there is a jailbreak app for this instance, but your comment/suggestion (while informational) is out of context with the overall goal here. You see…this is a proposal to be presented to Apple to allow the modification of code of the Apps defined URL scheme…as well as standard URL scheme recognition within existing apps & to implement within newly developed apps that run under WebKit. iOS devices run apps designed & coded with Apple’s Sostware Development Kit. When you jailbreak, you essentially change internal root permissions to allow for access to restricted file directories like //var & ///var mobile…as well as internal bus communications between apps. This basically gives you access to root directories and such allowing for modification of system files &directories. While this is the way the device really should be coded, giving the owner administrative access, the stingy reality is that Apple is still unwilling to allow this type of operating platform due to conflicts with DRM & profit. Therefore the intention of this development proposal is to push Apple one step further into implementing already available jailbroken tweaks & accessibilities into iOS devices…so that eventually there will be no more desire or reason to hack (jailbreak) your device. This is a step in that direction to put an end to the tedious cat & mouse game of jailbreaking an iOS device just to get what you expect & deserve out of what you own.



Some HTML is OK

or, reply to this post via trackback.