首页 文章

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

提问于
浏览
2

我的网页检测到操作系统和浏览器,在iOS的情况下,Safari将使用自定义URL方案启动我的应用程序 .

它在我的测试设备上工作正常,但我发现在iOS / 9.3.2上使用Safari / 9.0的用户存在问题 - 该链接根本无效!

是否不再支持自定义网址方案?我需要开始使用通用链接吗?

对于那些感兴趣的人,这里是我在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://";
}

1 回答

  • 0

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

    我不知道任何追溯性更改会导致Safari在9.0 - 9.3.2在这种情况下什么也不做(你至少应该弹出一个错误),但是对于可预见的情况,这将继续得不到支持未来,你应该尽快启动并运行Universal Links . 有关详细信息,请参阅this blog post .

相关问题