3

私の Web ページは OS とブラウザーを検出し、iOS の場合、Safari はカスタム URL スキームを使用して私のアプリを起動します。

テスト デバイスでは正常に動作しますが、iOS/9.3.2 で Safari/9.0 を使用しているユーザーに問題が発生しています。リンクは単に何もしません。

カスタム URL スキームはサポートされなくなりましたか? 代わりにユニバーサル リンクの使用を開始する必要がありますか?

興味のある方のために、私が iOS ブラウザーで使用している Javascript コードを以下に示します (99% の確率で動作しています)。

var timer;
var heartbeat;
var lastInterval;

window.addEventListener("pageshow", function(evt){
    clearTimers();
}, false);

window.addEventListener("pagehide", function(evt){
    clearTimers();
}, false);

function getTime() {
    return (new Date()).getTime();
}

// For all other browsers except Safari (which do not support pageshow and pagehide properly)
function intervalHeartbeat()
{
    var now = getTime();
    var diff = now - lastInterval - 200;
    lastInterval = now;
    if(diff > 1000)
    { // don't trigger on small stutters less than 1000ms
        clearTimers();
    }
}

function clearTimers()
{
    clearTimeout(timer);
    clearTimeout(heartbeat);
}

function intervalHeartbeat()
{
    if (document.webkitHidden || document.hidden)
    {
        clearTimers();
    }
}

function launch()
{
    lastInterval = getTime();
    heartbeat = setInterval(intervalHeartbeat, 200);
    timer = setTimeout(function ()
    {
        logErrorToMyServer();
    }, 2000);

    //Launch app via custom URL scheme
    window.location = "myapp://";
}
4

1 に答える 1

0

カスタム URI スキームは、iOS 9.2 の導入以来、好ましくないオプションでした。Apple は、ユニバーサル リンクがディープ リンクへの好ましいアプローチであることを明確に示しています。

この状況で 9.0 ~ 9.3.2 の Safari が何もしない原因となる遡及的な変更については認識していませんが (少なくともエラー ポップアップが表示されるはずです)、これは当面の間サポートされません。できるだけ早く Universal Links を起動して実行する必要があります。詳細については、このブログ投稿を参照してください。

于 2016-11-15T20:32:36.300 に答える