私はウェブページを持っています。それを と呼びましょうentry.html
。
ユーザーがこのページに入ると、JavaScript コード (以下を参照) がユーザーをネイティブの iOS / Android アプリにディープリンクしようとします。
ディープリンクが失敗した場合 (おそらくアプリがデバイスにインストールされていない場合)、ユーザーは別のページに「フォールバック」する必要がありますfallback.html
。
で実行されている JavaScript コードは次のentry.html
とおりです。
$(function(){
window.location = 'myapp://';
setTimeout(function(){
window.location = 'fallback.html';
}, 500);
});
これは、ネットワーク全体で推奨される標準のディープリンク方法です。ディープリンクを試み、タイムアウトが発生した場合は、ディープリンクが発生しなかったことを意味するため、フォールバックします。
アプリがデバイスにインストールされている限り、これは正常に機能します。
ただし、アプリがインストールされていない場合、これはディープリンクを試みるときの動作です。
Mobile Safari : 「Safari ではこのページを開けません...」という警告メッセージがしばらく表示された後、適切にフォールバックしますfallback.html
- これは予期された動作です。
モバイル Chromeが問題です。
アプリがインストールされていない場合、ブラウザは実際にmyapp://
URL にリダイレクトされますが、これはもちろん無効です。そのため、「見つかりません」というページが表示され、フォールバックは発生しません。
最後に- 私の質問は次のとおりです。
モバイルChromeでもフォールバックが発生するようにコードを修正するにはどうすればよいですか? モバイルSafariのように?
注:アプリがインストールされているかどうかに関係なく、SafariとChromeを使用して、LinkedInモバイルWebサイトがこれを適切に実行していることがわかりますが、それを担当するコードを追跡できませんでした:(
iframe
注 2: の代わりに を追加しようとしましたがwindow.location = url
、これは Safari でのみ機能し、アプリがインストールされていても iFrame を追加するときにモバイル Chrome はディープリンクしません。
皆さんありがとう!
アップデート:
私はまともな解決策を見つけ、自分の質問に答えました。私の解決策については、受け入れられた回答を参照してください。