我使用此解决方案https://gist.github.com/davidwkeith/2662899从网页重定向到我的应用程序(如果已安装应用程序)。但它不适用于iOS9。它仍适用于Google-chrome。但是iframe
使用自定义URL方案无法从Safari启动应用程序。
如果我更换
document.getElementById('loader').src = 'custom-protocol://my-app'
(其中加载程序为iframe)与
window.location = 'custom-protocol://my-app'
它会工作。
操作系统:iOS 9 beta4和beta5
有人知道这个问题吗?是iOS 9 Beta错误吗?还是不会解决?
先前的答案是通用链接的部分实现,该实现缺少关键细节,并且不包括对App Store的回退。
首先,您无法再设置iframe src来触发URI方案。您已正确识别该问题。如上所述,您仍然可以设置window.location = 'custom-protocol://my-app';
。因此,如果您知道某个用户拥有您的应用程序是因为您之前已经通过浏览器打开了该应用程序,并且存储了可以在后端查找的Cookie,那么您仍然可以安全地触发custom-protocol://
。
其次,您可以使用navigator.userAgent检测用户代理字符串。在iOS 9之前的版本中,您仍然可以使用iframe触发URI方案,然后在超时后回退。在iOS 9上,您可以选择是否基于Cookie触发URI方案,然后将用户带到App Store。我在Branch从事这项工作,并利用Cookie来回忆用户是否已拥有该应用程序,这是我们已经实现的。如果您有其他疑问,请随时与我们联系,或者直接使用我们的解决方案。
实现通用链接并不像其他答案所描述的那么简单。实际上,存在更多的复杂性。以下是完整的步骤列表(最近几周,我已使用这些步骤帮助多个应用集成):
1.配置您的应用以注册批准的域
一世。如果您尚未在app.apple.com上注册您的应用程序
ii。在developer.apple.com上的应用程序标识符上启用“关联域”
iii。在您的Xcode项目中启用“关联域”
iv。applinks:yourdomain.com
在您的应用中添加适当的域权利,
2.配置您的网站以托管“ apple-app-site-association”文件
一世。购买域名或从您现有的域名中选择
ii。获得域名的SSL认证(您可以为此使用CloudFlare!)
iii。创建结构化的“ apple-app-site-association” JSON文件
{
"applinks": {
"apps": [ ],
"details": {
"TEAM-IDENTIFIER.YOUR.BUNDLE.IDENTIFIER": {
"paths": [
"*"
]
}
}
}
}
iv。使用SSL认证签署JSON文件
v。配置文件服务器
apple-app-site-association文件:-必须与标头'application / pkcs7-mime'一起发送-必须从端点youdomain.com/apple-app-site-association发送-必须返回200 http代码。
Express + Node示例:
var aasa = fs.readFileSync(__dirname + '/static/apple-app-site-association');
app.get('/apple-app-site-association', function(req, res, next) {
res.set('Content-Type', 'application/pkcs7-mime');
res.status(200).send(aasa);
});
信用:从此博客文章中大量借用
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句