iOS 9.3.2自定义URL方案不能从Safari启动应用程序

iOS 9.3.2 Custom URL Scheme not launching app from Safari

本文关键字:不能 Safari 启动 应用程序 方案 URL 自定义 iOS      更新时间:2023-09-26

我的网页检测操作系统和浏览器,在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://";
}

自iOS 9.2引入以来,自定义URI方案一直不是一个好的选择。苹果已经明确表示,通用链接是深度链接的首选方式。

我不知道是否有任何溯及性的改变会导致Safari 9.0 - 9.3.2在这种情况下什么也不做 (你至少应该得到一个错误弹出),但在可预见的未来,这将继续不受支持,你应该尽快得到通用链接的启动和运行。