marumaruko
@marumaruko

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

カスタムURLスキームでアプリを起動させ、アプリが無ければストアに遷移させる方法について教えてください

Q&A

Closed

解決したいこと

端末にアプリがインストールされている場合、カスタムURLスキームでアプリを起動させ、アプリが端末になり場合は、ストアに遷移させたいです。

下記を参考に設定しています。
https://qiita.com/tarusawa_ken/items/9d9a8b7b6ca8b6984eb9

発生している問題・エラー

アプリがない場合、アプリストアに遷移しますが、ユーザーの端末によって
「”AppStore”で開きますか?」というアラートが表示されないためconfirmで「○○○アプリをインストールしますか?」という注意文を表示させるように設定しています。
上記により、アプリを起動させたユーザーがブラウザに再度戻ってきた際に「○○○アプリをインストールしますか?」というアラートが表示されてしまうため、困っています。

該当するソースコード

function launchApp() {
    var IOS_SCHEME = 'myapp://';
    var IOS_STORE = 'https://apps.apple.com/jp/app/myapp/id1234567890';
    var ANDROID_SCHEME = 'myapp://';
    var ANDROID_STORE = 'https://play.google.com/store/games?device=windows&hl=ja&gl=USp';

    var userAgent = navigator.userAgent.toLowerCase();
    // iPhone端末ならアプリを開くかApp Storeを開く。
    if (userAgent.search(/iphone|ipad|ipod/) > -1) {
        window.location.href = IOS_SCHEME;
                setTimeout(function() {
            var result = confirm("○○○アプリをインストールしますか?");
                if (result == true) {
             // Do something
                    window.location.href = IOS_STORE;
                } else {
            // Do something else
            }
        }, 500);
    }
    // Android端末ならアプリを開くかGoogle Playを開く。
    else if (userAgent.search(/android/) > -1) {
        window.location.href = ANDROID_SCHEME;
        setTimeout(function() {
            var result = confirm("○○○アプリをインストールしますか?");
            if (result == true) {
                // Do something
                       window.location.href = ANDROID_STORE;
            }else {
            // Do something else
            }
        }, 500);
                
    }
    
}

自分で試したこと

アプリを起動したと同時にダミーパラメータをつけたWebページに遷移させるなどは行いましたが、「○○○アプリをインストールしますか?」というアラートが出てしまいます。

解決方法があれば教えてください。
アプリリンクやユニバーサルリンクは使わない想定でお願いいたします。

0

1Answer

もし、ご希望の動作を満せるとするとセキュリティホールになります(Webページを見ただけで端末にインストールされているアプリがわかってしまい攻撃の糸口になってしまう)。
なので、セキュリティ的に無理なんじゃないかと思います。

0Like

Your answer might help someone💌