3

我的网页会检测操作系统和浏览器,如果是 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

自 iOS 9.2 推出以来,自定义 URI 方案一直不是一个好的选择。Apple 明确表示,通用链接是深度链接的首选方法。

我不知道有任何追溯性更改会导致 9.0 - 9.3.2 上的 Safari在这种情况下什么都不做(您至少应该收到一个错误弹出窗口),但在可预见的情况下,这将继续不受支持未来,您应该尽快启动并运行通用链接。此博客文章中提供了更多详细信息。

于 2016-11-15T20:32:36.300 回答