我有一些困难,让通用链接在我的应用程序工作。以下是我已经做过的事情。
-创建了我的apple-app-site-association文件这是我的档案
{
"applinks": {
"apps": [],
"details": [{
"appID": "XXXXXXXXXX.com.companyName.app",
"paths": ["/view/*", "/class/*"]
}]
}
}我没有签名我的文件,我把我的项目部署目标设置为iOS 9.2 (这样我就不必对这个文件进行签名)。
--在我的项目功能中添加了相关域
applinks:companyName.com
applinks:www.companyName.com-关联域也在我的开发人员门户中启用
-更新供应配置文件并使用新配置文件
-增加了对建筑物的权利。
--推翻了此委托方法
- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray *))restorationHandler
该文件可从我的HTTPS服务器获得,我从这个苹果验证器中检查了通用链接状态。https://search.developer.apple.com/appsearch-validation-tool/验证器正在验证这一点。但是当我点击iMessage中的链接并且链接类似于companyName.com/view/7375时,它就会在safari中打开,我的应用程序也不会收到任何回电。
你知道我错过了什么吗
发布于 2016-03-23 12:21:51
这可能是操作系统现在考虑在“覆盖”模式下处理您的URL --为什么它会进入Safari。
当你的应用程序解析一个通用链接时,在屏幕的右上角你会看到"companyName.com -->“之类的东西。如果您点击这一点,这是操作系统“覆盖”通用链接的方式,并打开它在Safari在当时和永远。
试着重新进入消息应用程序,然后按下你的链接。一两秒钟后,您应该会看到一个操作表,它为您提供了诸如“在Safari中打开”和“在‘您的应用程序名中打开’”这样的选项。选择“在您的名字中打开”选项。然后,应该“重置”操作系统视图如何处理您的通用链接,现在将它们引导回您的应用程序。
发布于 2019-12-12 12:56:03
当您支持通用链接时,iOS 9用户可以点击一个链接到您的网站,并且可以无缝地重定向到您安装的应用程序,而无需通过Safari。如果你的应用程序没有安装,点击一个链接到你的网站打开你的网站在Safari。
在这里,如何设置您自己的服务器,并处理相应的链接在您的应用程序。
页面
在developer.apple.com注册你的应用程序。在应用程序标识符上启用“关联域”.
在Xcode项目中启用“关联域”

当您在developer.apple.com中的应用程序ID中启用关联域时,“向应用程序ID添加关联域功能”的错误就会消失,就像前面的步骤一样。如果它没有消失,退出并重新启动xcode几次,它就会工作。
添加适当的域权限,并确保在build中包含了“应享权利”文件: Xcode将自动完成此操作。

然后使用终端创建apple-app站点关联文件。
使用此命令创建AASA(apple-app-site-association)文件。
然后打开AASP文件并编写这个json格式的数据。
{
"applinks": {
"apps": [ ],
"details": [
{
"appID": "TeamID.BundleID2",
"paths": [ "*" ]
}
]
}
}一旦您准备好了AASA文件,现在就可以承载https://<>/.well-known/apple-app-site-association了。
上传苹果应用网站关联文件到您的HTTPS网络服务器。您可以将该文件放置在服务器根目录或.知名子目录中。
(AASA)验证器转到以下链接并输入您的域名。它将检查AASA文件是否有效并可访问。链接:https://branch.io/resources/aasa-validator/#resultsbox
完成之后,将下面的代码添加到Appdelgate中
Swift4
func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([Any]?) -> Void) -> Bool {
print("Continue User Activity called: ")
if userActivity.activityType == NSUserActivityTypeBrowsingWeb {
let url = userActivity.webpageURL!
print(url.absoluteString)
//handle url and open whatever page you want to open.
}
return true
}目标-c
-(BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray * _Nullable))restorationHandler{
if ([userActivity.activityType isEqualToString: NSUserActivityTypeBrowsingWeb]) {
NSURL *url = userActivity.webpageURL;
}
return YES;
}然后检查您的权限,添加到应用程序目标,并运行它将重定向到您的app.Make,确保AASA将验证像下面的屏幕,然后它重定向到您的application.If,任何错过,它不是重定向到您的应用程序。
在您的服务器中,任何内容类型验证错误都会出现,然后您可以创建一个.htaccess文件,在其中您可以编写以下代码。
<Files "apple-app-site-association">
ForceType 'application/json'
</Files>这个程序从我这边起作用了,.I希望你方也能正常工作。如果你喜欢看这篇文章。
发布于 2017-11-24 09:31:30
您还必须实现以下AppDelegate函数。
- (BOOL)application:(UIApplication *)application willContinueUserActivityWithType:(NSString *)userActivityType我也有过同样的问题。不幸的是,苹果并没有很好地记录这一点。
https://stackoverflow.com/questions/36177732
复制相似问题