iOS がカスタム URL スキームを処理できるかどうかをテストする方法はありますか? モバイルサファリのハイパーリンクからアプリを開くことができるように、カスタム URL スキームを登録したアプリがあります。ただし、アプリがインストールされていない場合は、アプリストアにアクセスしてアプリをダウンロードする必要があることをユーザーに伝えたいと思います。
URL をテストし、失敗した場合とその理由をキャッチする賢い方法はありますか?
iOS がカスタム URL スキームを処理できるかどうかをテストする方法はありますか? モバイルサファリのハイパーリンクからアプリを開くことができるように、カスタム URL スキームを登録したアプリがあります。ただし、アプリがインストールされていない場合は、アプリストアにアクセスしてアプリをダウンロードする必要があることをユーザーに伝えたいと思います。
URL をテストし、失敗した場合とその理由をキャッチする賢い方法はありますか?
これは私が思いつくことができる最高のものですが、iOS 5 でのみテストされています。
モバイル サファリのリンクが の場合は<a href="myapp://path">link text</a>
、次のように変更します<a href="http://mydomain.com/launchapp?location=path">link text</a>
。次に、ページの上部に/launchapp
、目的の URL を持つ非表示の iframe を配置します<iframe src="myapp://path" style="display:none"></iframe>
。ページの本文に、アプリをダウンロードするにはアプリストアにアクセスする必要があるというメッセージを入力します。
ユーザーがアプリを持っている場合:launchapp
ページは表示されず、シームレスにアプリの URL に誘導されます。ユーザーがアプリを持っていない場合: 「URL を読み込めませんでした」という厄介な警告が表示されます。[OK] をクリックすると、「アプリをダウンロードする必要があります」ページが表示されます。
更新- 2013 年 3 月
関連するSOの回答に関するこのコメントを確認してください。どうやら、アプリがまだインストールされていない場合は、次のようなアプローチを使用して App Store のアプリにシームレスにリダイレクトできます(テストされていません)。
// setup fallback (redirect to App Store)
var start = (new Date()).valueOf();
setTimeout(function() {
var end = (new Date()).valueOf();
// prevent App Store redirect upon returning to safari from myapp
if (end - start > 1000) return;
// get a seamless redirect if you use itms://... instead of http://itunes.com/...
window.location = 'itms://my/app/URI';
}, 25);
// Attempt to load my custom url scheme
window.location = 'myapp://my/path'