私はWebアプリを開発していて、Facebookを使用してコンテンツを共有しています。直面している問題は、Facebookに投稿されたリンクをクリックすると、アプリのブラウザーでFacebookを使用して開くことがあり、多くの問題を引き起こします。
Facebookがリンクを無効にし、代わりにデバイスのデフォルトのブラウザーを使用するのを防ぐ方法はありますか?
完全にユーザー次第であり、デフォルトのブラウザで強制的に開く方法はありません。このスレッドには詳細情報(およびいくつかの回答)があります: Facebookアプリ内ブラウザでファイルアップロードコントロールが機能しない
Facebookのアプリ内ブラウザーでjs動的グリッドを実行することはできませんでしたが、何が問題であり、実際のブラウザーで開く必要があるかどうかをユーザーに任せられませんでした。
私はjsを使用してFacebookアプリ内ブラウザーを検出し、jsアラートを使用して「サファリで開く」必要があることをユーザーに通知しようとしましたが、Facebookアプリ内ブラウザーではアラートが一貫してまたは確実に機能しません。
ユーザーアラートページへのリダイレクトが最も信頼できるソリューションであることがわかりました。必要に応じて提示できます(モーダルなど)。リダイレクトのコードサンプルが含まれています。リダイレクトページはFacebookブラウザー内に残ることに注意してください。ユーザーインタラクションのみが発生します。私はリダイレクトページを使用して、「共有> Safariで開く」機能を使用するように人々に伝えました。
ユーザーが[サファリで開く]をクリックすると、リダイレクトページがサファリに再読み込みされ、Facebookのアプリ内ブラウザーにないことが検出され、ユーザーが最初に必要なページに自動的にリダイレクトされます。 Facebookのアプリ内ブラウザー内からより長く。アプリ内ブラウザからユーザーを解放するための「ワンクリック」回避策。
最善の解決策は、私のjsグリッドがいつかFacebookブラウザーで「そのまま機能する」ことです。誰かがそれを見つけたら、私に知らせてください。
<!-- check if running in facebook app -->
<script>
var ua = navigator.userAgent || navigator.vendor || window.opera;
function isFacebookApp() {
return (ua.indexOf("FBAN") > -1) && (ua.indexOf("FBAV") > -1);
}
if (isFacebookApp()) {
window.parent.location.assign("https://yourdomain.com/redirect_page/index.html");
}
</script>
または...それほど複雑ではありません。なぜisFacebookApp()という関数があり、なぜFBアプリ内ブラウザのみを探しているときにtarget Opera
<script>
var ua = navigator.userAgent;
if (ua.indexOf("FBAN") != -1 || ua.indexOf("FBAV") != -1) {
if (!window.location.href.match('redirect_fb')) {
window.location.href = "https://example.com/redirect_fb";
}
}
</script>
二人ともありがとう。これは私を狂わせていました。私の主な問題は、Androidでフォントが拡大されることでした。今、私はfontsz = Math.round(fontsz * .7)で削減するのが完璧です(FBアプリが検出されたとき)。
Androidは Firebase Dynamic Links を開きます)== URLが投稿されたWebviewの種類に関係なく、外部ブラウザによって見つかりました.
私は https://stackoverflow.com/a/56143217/3000586 でより詳細な説明を書きました。
マクビースに基づく
<!-- check if running in facebook app -->
<script>
var ua = navigator.userAgent || navigator.vendor || window.opera;
function isFacebookApp() {
return (ua.indexOf("FBAN") > -1) || (ua.indexOf("FBAV") > -1);
}
if (isFacebookApp()) {
if (!window.location.href.match('redirect_fb')) {
window.location.href = "https://example.com/redirect_fb";
}
}
</script>