質問: ### ■やりたいこと アプリ内ブラウザでリンクを開いた時に、強制的にデフォルトブラウザ(iosならばsafari)で開く処理を、javascriptまたはwebサービス側で制御できるなにがしかで対応できないかと思っています。 最低限対応したいのは下記のアプリです。 ・LINE ・Messanger ・facebook ・Twitter ### ■困っていること safariやchromeでは正常に動くwebサービスですが、LINEやMessangerなどのアプリ内ブラウザだと、挙動がそれぞれ異なっており壊れてしまいます。 はじめはアプリ内ブラウザでも動くように奮闘しましたが、インスペクタが使えないのでデバッグもしづらく、種類も多くてかなり時間がかかってしまっています。。またアプリ側でアップデートがある度に対応していくことも考えると、かなり辛いなと思っています。 ### ■調べたこと ※一旦iosを前提に考えています。 LINEはリンクのURLパラメータに `?openExternalBrowser=1`が入っていると、強制的にsafariに遷移することができるようです。 これは正常に動作し、例えば自分のwebサービスに流入した際に、ユーザーエージェントからLINEブラウザを判定し、LINEブラウザからの流入だった場合にこのパラメータを付与しリダイレクトすれば想定した挙動をしてくれます。 ですが、これはおそらくLINEアプリのネイティブで実装された仕様のようで、他のアプリに当てはまるわけではなく...。 調べたところ、safariへの遷移はURLスキーマも使うことができず、ネイティブコードで書くしかないようでした。 ▼What is Mobile Safari's custom URL Scheme? https://stackoverflow.com/questions/22642223/what-is-mobile-safaris-custom-url-scheme Google Chromeへの遷移ならば、これ↓で想定した挙動をしてくれるのですが、標準インストールされているアプリでもないですし、ちょっと厳しいかと思っています。。 `Open site in Chrome` ### ■ご質問 この他に何か方法はないでしょうか?ご経験のある方いらっしゃいましたら、アドバイスいただけますと幸いです...! アプリ外遷移という手段がもし難しれければ、web開発をしているみなさんがアプリ内ブラウザの対応をどうしているか(検証対象としているか)、対応する場合はデバッグはどうしているかなどもアドバイスいただけますと大変助かります...! 何卒、よろしくお願いいたします。
回答: 各アプリ側での制御になるため、 こちら(Webビュー)側でのコントロールはできません。 各アプリで、そういった機能が用意されていれば話は別ですが。 ただ、挙げていただいたものは全て、ユーザーの任意では、 ユーザー設定ブラウザで開き直すことができるものと思います。 ただし、前述の通り、こちら(Webビュー)側からの強制効果としてのユーザー設定ブラウザ起動は、 各アプリがそういった機能(大抵はURLスキームによるコントロール)を提供していない限りは不可能です。 > > アプリ外遷移という手段がもし難しれければ、web開発をしているみなさんがアプリ内ブラウザの対応をどうしているか(検証対象としているか)、対応する場合はデバッグはどうしているかなどもアドバイスいただけますと大変助かります...! > > > アプリ外遷移に関しては、上記の通りなので、 (iOS版LINEだったら可能のようですね) 崩れを解消したいだけならば、 ユーザーエージェントにより、ブラウザを特定し、 CSSなどを変えたり、 「推奨のブラウザにて閲覧してください。」などのモーダルアラートを出すとか、ですかね・・・。 私は、Androidの古いOS上の、**Yahoo!ブラウザ**に非常に苦戦した記憶がありますが、 泣き寝入りして、**Yahoo!ブラウザはサポート外です**ので違うブラウザで見てください、ってつっぱねました。 (アラート出して) アプリWebビューではよく起こることなので、 そういった、泣き寝入り策は必要な時があります。 ちなみに余談ですが、その中でも、Android OS 4系の時の、Yahoo!ブラウザは、**めちゃくちゃ凶悪**です。 (同じブラウザでも、Androidの新しいOSでのYahoo!ブラウザはまともな動きをするので、単純なユーザーエージェントのみでは除去仕切れない)