#期待結果
javascriptで、スマホのchromeブラウザでwebアプリで特定のアプリにアクセス時、スマホアプリをバックグランドで起動させ、chromeの画面は遷移させないようにしたい。
#問題
javascriptにてURLスキームでアプリをバックグラウンドで、起動させるとchromeの画面がアクセス前の画面にブラウザバックしてしまう。
URLスキームを
#環境
cakePHP2系
android8
android chrome ver.77
#コード
html
1<a class="applicationstart"/> 2~~~~js記述箇所抜粋~~~~ 3<script type='text/javascript'> 4$(window).on('DOMContentLoaded', function() { 5 application(); 6 $('.applicationstart').click();//←ここで自動的にクリックイベントを発火させて、アプリバックグラウンド処理を実行させている。 7}); 8</script> 9~~~~js記述箇所抜粋~~~~
js
1 2$(document).on('click', '.applicationstart', function(e) { 3e.preventDefault(); 4var url = "intent://scheme=application;end;" 5top.location.href = url;// ←ここでURLスキームを`top.location.href`に格納した時にブラウザバックが起こる 6}
#わかっていること
- アプリはバックグラウンドで実行はできている。
- 画面がブラウザバックしてしまう点だけが問題。
top.location.href
にurlを格納した瞬間にブラウザバックが起こることを確認。$('.applicationstart').click();
で自動的にクリックさせるとブラウザバックが起こるが、画面にて手動で、<a class="applicationstart"/>
をタップすると画面遷移はしない。
#わかっていること詳細
今回の疑問対象画面は2つ
・画面A(画面Bへのリンクするためのaタグが記述されている)
・画面B(スマホアプリを起動させるjavascriptの記述が記載されている)
####2の詳細
画面Aでリンクをクリック→画面Bに遷移→Androidアプリ起動→自動的にブラウザバック処理発動→画面Aに戻る
####3の詳細
画面Bにてtop.location.href
にアンドロイドアプリを起動するURLIntent://~
を代入すると、代入したタイミングでブラウザバックが起こり画面Aに遷移する
####4の詳細
試しに、画面Bにてaタグを用意し、aタグをクリックするとアプリ起動する記述を追加。
画面Aでリンクをクリック→画面Bに遷移→画面Bでaタグをクリック→アプリ起動→画面は遷移せず画面Bが表示され続けた
##追加情報
望みとしては以下になります。
-
Androidアプリを起動させたい(済み)
-
アプリ起動後は画面Bにしておきたい
-
申し訳ありません、説明不足でした。画面Bはログイン必須のためもし、未ログインの場合画面Aから画面Bに遷移するさい、ログイン画面を挟みます。そのため、ブラウザバックが発動すると、未ログインの場合画面B表示後、再びログイン画面が表示されてしまうため、ブラウザバックさせたくないです。
-
同様につまづいている人がstackoverflowに記載している人がいたのでURL貼っておきます。
https://stackoverflow.com/questions/58092833/how-to-stop-back-behavior-of-intent-redirection