尝试打开未安装的本机应用程序时如何防止iOS safari警报?

Dim*_*man 40 javascript safari mobile-safari mobile-website ios

我一直在寻找一种从浏览器打开原生iOS应用程序的方法.我在这里找到了一个不错的解决方案:是否可以为YouTube应用程序(如YouTube和地图)注册基于http +域的URL方案?

安装应用程序后,此解决方案非常有用.但是当用户没有安装此应用程序时 - safari会触发一条错误消息,指出"Safari无法打开该页面,因为该地址无效".

有没有办法防止这种行为,而是提示用户下载应用程序?

Eli*_*zaS 27

这是一个适合我的解决方案:

var timeout;

function preventPopup() {
    clearTimeout(timeout);
    timeout = null;
    window.removeEventListener('pagehide', preventPopup);
}

function openApp() {    
    $('<iframe />')
    .attr('src', appurl)
    .attr('style', 'display:none;')
    .appendTo('body');

    timeout = setTimeout(function() {
            document.location = appstore;
    }, 500);
    window.addEventListener('pagehide', preventPopup);
} 
Run Code Online (Sandbox Code Playgroud)

  • 它仍然适用于ios9吗?我不这么认为. (13认同)
  • iframe技巧在iOS9中不起作用.有关iOS9 +的具体讨论,请参阅此处:/sf/ask/2288263841/ (6认同)
  • 它不适用于Android的Crome. (2认同)

小智 5

使用iframe.

$('<iframe />').attr('src', "appname://").attr('style', 'display:none;').appendTo('body');
Run Code Online (Sandbox Code Playgroud)


Tho*_*iau -1

正确的方法是使用智能应用横幅: https://developer.apple.com/library/ios/documentation/AppleApplications/Reference/SafariWebContent/PromotingAppswithAppBanners/PromotingAppswithAppBanners.html

如果您的应用程序未安装,横幅将让用户安装它。如果安装了,它将打开应用程序,并且您可以指定要传递给应用程序的自定义 URL 参数。

  • 添加智能应用横幅有其缺点。例如,如果用户关闭它(按 X 按钮),则无法再次显示它。 (4认同)

归档时间:

查看次数:

27915 次

最近记录:

10 年,8 月 前