

  * [カスタムURLスキームでアプリを起動させ、アプリが無ければストアに遷移させる](https://qiita.com/kwst/items/cb099e175cf414043332)
  * [iPhoneにInstagramのアプリがインストールされていればアプリに、なければウェブブラウザ版に遷移するリンクをつくる](https://blog.kimizuka.org/entry/2022/11/20/232134)

上記の記事を参考に、「アプリがインストールされていなければストアへ、インストールされていればアプリの特定のコンテンツを表示させる」という挙動をJSで実現しようとしているのですが、想定通り動かず困っています。  
上記の記事及びその他の記事をググっても「アプリが存在するかどうかはsetTimeoutの中身が動くかどうかでわかる」という主旨の説明がされているため、下記のようなコードを書いてiPhone(iOS16.x)で試しました。  
※下記は説明用で、実際にはUAで判定をかけてそれぞれのアプリストアに飛ばしています。

[code]

    <script>
      location.href = 'instagram://app';
      var _timerId = setTimeout(function() {
        location.replace('https://www.instagram.com');
      }, 500);
    </script>
    
[/code]

インスタアプリがインストールされている場合、記事に従えばsetTimeoutの中身は実行されないと思ったのですが、試してみるとインスタアプリが起動した後ブラウザに戻るとそちらもWebのインスタが表示されていました。  
自分の想定ではアプリが起動したことでsetTimeoutの中身は実行されない認識でした。  
OSのアップデートで挙動が変わってしまったのでしょうか。それとも自分が上記記事の説明を誤読しているのでしょうか。  
他に同様の事象に遭遇して、解決された方がおられましたら教えて頂けますと幸いです。  
よろしくお願いいたします。

※代替手段としてユニバーサルリンクというやり方があることは調査していて、もしCustom URL
Schemeのみでやりたいことを実現できない場合はそちらを試すつもりです。


CC BY-SA 4.0
2023-07-15T05:51:00.113
95635
2023-07-15T05:56:53.003
2023-07-15T05:56:53.003
3060
14346
question
javascript ios html google-chrome safari
Custom URL Schemeのディープリンクで、アプリをインストールしていない場合にストアに遷移させたい