カスタムURLスキーム(vstream://)を処理するアプリがあります。誰かがvstream://コンテンツを含むWebページにアクセスした場合、アプリがインストールされていない場合は、ストアにリダイレクトする必要があります。
iOSでは、これを行います。
setTimeout(function() {
window.location =
"itms://itunes.apple.com/us/app/kaon-v-stream/id378890806?mt=8&uo=4";
}, 25);
window.location = "vstream:view?code=...stuff...";
割り当てが失敗した場合window.location、ダイアログボックスが表示される前にタイムアウトがAppStoreを飛び越えます。(このテクニックをここで見つけました:YouTubeやマップなどのiPhoneアプリにhttp +ドメインベースのURLスキームを登録することは可能ですか?)
残念ながら、このトリックはAndroidでは機能しません。デバイスサーバー側を検出し、itmsの代わりにこれを記述しました:line:
"market://details?id=com.kaon.android.vstream";
問題は、未処理のURLスキームに移動するとiOSがエラーをスローするのに対し、Androidは生成されたページに移動することです。したがって、タイムアウトが実行される機会はありません。
カスタムURLスキームが処理されるかどうかを明示的にテストする方法は、Webページにありますか、または誰かがAndroidで機能するこのようなハックを提案できますか?(もちろん、使用しているブラウザに関係なく機能するハックが必要だと思います。これはおそらく難しい注文です...)
更新:以下のアプローチは、Nexus7のJellyBeanでは機能しません。新しいChromeブラウザは生成されたページに移動しません(したがって、iFrameは必要ありません)が、URLかどうかを知る方法はないようです。スキームが処理されました。もしそうなら、とにかくタイムアウトが発生します。処理されなかった場合、タイムアウトが発生します。onloadハンドラーとiframeを使用すると、onloadハンドラーが起動しません(アプリがインストールされているかどうかに関係なく)。スキームが処理されたかどうかを知る方法がわかったら更新します...
以前のソリューションの「解決済み」は機能しなくなったため、削除しました。
更新2:iOS、Chromeを搭載したAndroid 4.1、およびChromeより前のAndroidで動作する優れたクロスプラットフォームソリューションがあります。下記参照...
更新3:グーグルは意図的にすべてを再び壊した。どこかでamit_saxenaによって受け入れられた非常に素晴らしい解決策をチェックしてください/