如果安装了应用程序,我使用此解决方案https://gist.github.com/davidwkeith/2662899将网页重定向到我的应用程序。但它在iOS 9上不起作用,在Google-chrome上还能用。但是带有自定义URL方案的iframe不能从Safari启动应用程序。
如果我替换掉
document.getElementById('loader').src = 'custom-protocol://my-app'(其中loader是iframe)
window.location = 'custom-protocol://my-app'看起来不错。
操作系统: iOS 9 beta4和beta5
有人知道这个问题吗?是不是iOS 9测试版的bug?或者它不会被修复?
发布于 2015-09-22 12:14:58
前面的答案是Universal Links的部分实现,它缺少关键的细节,并且不包括到App Store的回退。
首先,您不能再通过设置iframe src来触发URI方案。您已经正确地识别出了这个问题。正如您所提到的,您仍然可以设置window.location = 'custom-protocol://my-app';。因此,如果你知道一个用户拥有你的应用程序,因为你之前从浏览器打开了他们的应用程序,并存储了一个可以在你的后端查找的cookie,你仍然可以安全地触发custom-protocol://。
其次,您可以使用navigator.userAgent检测用户代理字符串。在iOS 9之前,您仍然可以使用iframe来触发URI方案,然后在超时后回退。在iOS 9上,您可以根据cookies选择是否触发URI方案,然后将用户带到应用程序商店。我在Branch做这方面的工作,我们已经实现了利用cookies来回忆用户是否可能拥有这个应用程序。如果您对此有更多问题,请随时联系,或者直接使用我们的解决方案。
实现通用链接并不像另一个答案所描述的那么简单。在现实中,有相当多的复杂性。这是一个完整的步骤列表(最近几周我使用这些步骤帮助了几个应用程序集成):
1.配置您的应用程序以注册已批准的域名
i.如果你还没有在developer.apple.com上注册你的应用
二、在developer.apple.com上对您的应用程序标识符启用“关联的域名”
三、在您的Xcode项目中启用“关联的域”

四.在您的应用程序中添加适当的域名权限applinks:yourdomain.com

应用2.配置您的网站托管‘-app-site-association’文件
i.购买域名或从您现有的域名中挑选
二、获取域名的SSL认证(可以使用CloudFlare!)
三、创建结构化的‘apple-app-site-association’JSON文件
{
"applinks": {
"apps": [ ],
"details": {
"TEAM-IDENTIFIER.YOUR.BUNDLE.IDENTIFIER": {
"paths": [
"*"
]
}
}
}
}四.使用SSL证书对JSON文件进行签名
v.配置文件服务器
apple-app-site-association文件:-必须与报头‘application/pkcs7-mime’一起发送-必须从端点youdomain.com/apple-app-site-association发送-必须返回200http代码。
示例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);
});来源:从 大方借用
发布于 2015-08-12 04:10:50
是的,现在你可以使用iOS9进行深度链接了。请查看链接以获得详细的解释,但我列出了基础知识。
http://blog.hokolinks.com/how-to-implement-apple-universal-links-on-ios-9/
首先,您必须转到您的目标并单击capabilities。添加关联的域。
接下来,您必须上传apple-app-site-association文件。
基本上,打开一个JSON编辑器并构造如下所示的内容
{
"applinks": {
"apps": [],
"details": {
"TBEJCS6FFP.com.domain.App": {
"paths":[ "*" ]
}
}
}
}下一步,你必须在你的应用程序中支持通用链接。你需要实现
extension AppDelegate {
func application(application: UIApplication, continueUserActivity userActivity: NSUserActivity, restorationHandler: ([AnyObject]?) -> Void) -> Bool {
if userActivity.activityType == NSUserActivityTypeBrowsingWeb {
let webpageURL = userActivity.webpageURL! // Always exists
if !handleUniversalLink(URL: webpageURL) {
UIApplication.sharedApplication().openURL(webpageURL)
}
}
return true
}
private func handleUniversalLink(URL url: NSURL) -> Bool {
if let components = NSURLComponents(URL: url, resolvingAgainstBaseURL: true), let host = components.host, let pathComponents = components.path?.pathComponents {
switch host {
case "domain.com":
if pathComponents.count >= 4 {
switch (pathComponents[0], pathComponents[1], pathComponents[2], pathComponents[3]) {
case ("/", "path", "to", let something):
if validateSomething(something) {
presentSomethingViewController(something)
return true
}
default:
return false
}https://stackoverflow.com/questions/31891777
复制相似问题