ユーザーが特定の URL にアクセスしたときに、ネイティブ アプリを起動しようとしています。
アプリはカスタム URL スキーマに登録されているので、その部分は完了です。
問題は、フォールバックを実装することです。
私が欲しいのは次のようなものです:
try {
# Redirect to the app
} catch(e) {
# Redirect to the web version
}
window.location
例外が発生しないため、明らかに機能しません。
私はこれをやってみました:
window.location = 'some-schema://some/url';
setTimeout(function() { window.location = '/some/url'; }, 100);
ユーザーが URL にアクセスすると、アプリが開きます。ただし、ユーザーがブラウザーに戻ると、フォールバック コードが実行され、ユーザーには Web バージョンが表示されます。
これは唯一の欠点です。次回ユーザーが URL にアクセスすると、何らかの理由でアプリが開きません (Android でのみテスト済み)。301 リダイレクトを使用していないため、リダイレクトをキャッシュする理由がわかりません。
私はほとんどあきらめており、「アプリがある場合はここをクリックし、それ以外の場合はここをクリックする」というビューを実装する可能性が高いです。
あなたが尋ねる前に、純粋にJSで書かれており、window.location
ajaxリクエストと画像の読み込みを中断するため、Webバージョンからアプリを開くことができません。