iOS 9 中的应用链接无效
applinks in iOS 9 not working
我没有得到 applinks: 在 iOS 不工作,每当我在我的 iOS 9 上打开 link 之类的 https://www.example.com/something
设备,它会在 Safari 中打开。
我是 运行 通过调试配置文件的应用程序,在我的服务器上有一个名为 apple-app-site-association
.
的文件
我发现了两种不同的格式:
{
"applinks": {
"apps": [],
"details": {
"AB1CDEFGHI.com.mydomain.myapp": {
"paths": ["*"]
}
}
}
}
以及
{
"applinks": {
"apps": [],
"details": [
{
"appID": "AB1CDEFGHI.com.mydomain.myapp",
"paths": [ "*" ]
}
]
}
}
所以这是我不确定使用哪个的第一件事。
第二个是'AB1CDEFGHI'部分;应用程序的"Team-ID"?它是包含在 appid 中的东西还是开发者帐户的团队 ID?
所以这个是完全黑掉了吗?
还是这里的这个(又是完全黑掉的部分)?
编辑
我刚刚尝试在另一个应用程序中进行设置,第一次运行没有任何问题 - 真的不知道有什么区别。
- AppId 包含权利
- apple-app-site-association 是一样的
- 在应用程序中添加了关联域
- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray *restorableObjects))restorationHandler
实施
我可能遗漏了什么?
编辑 2
我刚刚看到两个应用程序的区别(一个可以工作,一个不能):工作的应用程序在开发者门户中有一个 AppId,其前缀与 TeamID 匹配,不工作的应用程序有不同于 TeamID 的前缀。我已经尝试使用 apple-association-file 中 AppID 的前缀,但它也不起作用...
我今天花了很多时间试图解决这个问题。最终归结为我的 SSL 证书的设置。您应该检查的事项:
1) 在 XCode 的设备控制台中(Window - 设备,select 您的 iphone,然后单击左下角的三角形打开对话框的主视图),你看到 "Rejecting URL for auth method 'NSURLAuthenticationMethodServerTrust': kAuthenticationError" 了吗?如果是这样,这意味着您的 SSL 证书很可能没有正确设置。
使用 https://cryptoreport.websecurity.symantec.com/checker/views/certCheck.jsp 确保您的网站没有 SSL 证书错误。
此外,如果您在 infoplist 中绕过 TLS 1.2,您可能还必须删除这些密钥。
2) 确保在 developer.apple.com 为正确的 App ID
打开关联域
3) 确保将适当的应用程序链接添加到 XCode 的项目目标中的关联域。还要确保权利文件已添加到您的项目中。我在某处读到该文件不是为某人生成的,这也可能是您的问题。
我发现了我这边的错误:我必须在 apple-app-site-association
文件中使用 App IDs 前缀,这与此特定应用程序的 TeamID 不同。
我没有找到说明 TeamID 以外内容的文档,这就是我花了这么长时间的原因。只有在我比较了两个应用程序之后,我才发现唯一的区别,现在它可以工作了。
device/native 应用向 https:///apple-app-site-association 端点发出请求的行为是不可预测的。但我确实注意到权利文件中的 adding/removing "applinks:" 似乎确实触发了请求。通过 CharlesProxy 代理您的设备,您可以看到正在发出的请求(尽管只是域,而不是完整的 SSL 请求,因为证书固定)但总比没有好。
我没有得到 applinks: 在 iOS 不工作,每当我在我的 iOS 9 上打开 link 之类的 https://www.example.com/something
设备,它会在 Safari 中打开。
我是 运行 通过调试配置文件的应用程序,在我的服务器上有一个名为 apple-app-site-association
.
我发现了两种不同的格式:
{
"applinks": {
"apps": [],
"details": {
"AB1CDEFGHI.com.mydomain.myapp": {
"paths": ["*"]
}
}
}
}
以及
{
"applinks": {
"apps": [],
"details": [
{
"appID": "AB1CDEFGHI.com.mydomain.myapp",
"paths": [ "*" ]
}
]
}
}
所以这是我不确定使用哪个的第一件事。
第二个是'AB1CDEFGHI'部分;应用程序的"Team-ID"?它是包含在 appid 中的东西还是开发者帐户的团队 ID?
所以这个是完全黑掉了吗?
还是这里的这个(又是完全黑掉的部分)?
编辑
我刚刚尝试在另一个应用程序中进行设置,第一次运行没有任何问题 - 真的不知道有什么区别。
- AppId 包含权利
- apple-app-site-association 是一样的
- 在应用程序中添加了关联域
- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray *restorableObjects))restorationHandler
实施
我可能遗漏了什么?
编辑 2
我刚刚看到两个应用程序的区别(一个可以工作,一个不能):工作的应用程序在开发者门户中有一个 AppId,其前缀与 TeamID 匹配,不工作的应用程序有不同于 TeamID 的前缀。我已经尝试使用 apple-association-file 中 AppID 的前缀,但它也不起作用...
我今天花了很多时间试图解决这个问题。最终归结为我的 SSL 证书的设置。您应该检查的事项:
1) 在 XCode 的设备控制台中(Window - 设备,select 您的 iphone,然后单击左下角的三角形打开对话框的主视图),你看到 "Rejecting URL for auth method 'NSURLAuthenticationMethodServerTrust': kAuthenticationError" 了吗?如果是这样,这意味着您的 SSL 证书很可能没有正确设置。
使用 https://cryptoreport.websecurity.symantec.com/checker/views/certCheck.jsp 确保您的网站没有 SSL 证书错误。
此外,如果您在 infoplist 中绕过 TLS 1.2,您可能还必须删除这些密钥。
2) 确保在 developer.apple.com 为正确的 App ID
打开关联域3) 确保将适当的应用程序链接添加到 XCode 的项目目标中的关联域。还要确保权利文件已添加到您的项目中。我在某处读到该文件不是为某人生成的,这也可能是您的问题。
我发现了我这边的错误:我必须在 apple-app-site-association
文件中使用 App IDs 前缀,这与此特定应用程序的 TeamID 不同。
我没有找到说明 TeamID 以外内容的文档,这就是我花了这么长时间的原因。只有在我比较了两个应用程序之后,我才发现唯一的区别,现在它可以工作了。
device/native 应用向 https:///apple-app-site-association 端点发出请求的行为是不可预测的。但我确实注意到权利文件中的 adding/removing "applinks:" 似乎确实触发了请求。通过 CharlesProxy 代理您的设备,您可以看到正在发出的请求(尽管只是域,而不是完整的 SSL 请求,因为证书固定)但总比没有好。