通用链接 iOS
Universal Links iOS
我在让 Universal links 在我的应用程序上运行时遇到了一些问题。这是我已经做过的事情。
-- 创建了我的 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 服务器获得,我检查了此苹果验证器的通用 links 状态。 https://search.developer.apple.com/appsearch-validation-tool/ 验证者正在验证这个。但是当我点击 iMessage 中的 link 并且 link 类似于 companyName.com/view/7375 时,它将在 safari 中打开并且我的应用程序没有收到任何回电。
知道我错过了什么吗
可能 OS 现在考虑在 "override" 模式下处理您的 URL -- 为什么它会进入 Safari。
当您的应用解析通用 Link 时,您会在屏幕的右上角看到类似 "companyName.com -->" 的内容。如果你点击它,这就是 OS 的方式 "overriding" Universal Link 的处理方式,并在那时和永远在 Safari 中打开它。
尝试返回“消息”应用并长按 link。一两秒后,您应该会看到一个操作 sheet 出现,它为您提供 "Open in Safari" 和 "Open in 'Your App Name'" 等选项。 Select "open in your name" 选项。那应该 "reset" OS 视图如何处理你的通用 Links,现在将它们引导回你的应用程序。
您还必须实现以下 AppDelegate 函数。
- (BOOL)application:(UIApplication *)application willContinueUserActivityWithType:(NSString *)userActivityType
我遇到了同样的问题。不幸的是,Apple 对此没有很好的记录。
当您支持通用 links 时,iOS 9 位用户可以点击 link 访问您的网站并无缝重定向到您安装的应用程序,而无需通过 Safari。如果您的应用程序未安装,点击 link 您的网站将在 Safari 中打开您的网站。
在这里,如何设置您自己的服务器,并在您的应用程序中处理相应的 link。
转到 Apple 开发者页面
在 developer.apple.com 注册您的应用程序。
在您的应用程序标识符上启用“关联域”。
在您的 Xcode 项目中启用“关联域”
一旦您像上一步一样在 developer.apple.com 中启用您的应用程序 ID 中的关联域,错误“将关联域功能添加到您的应用程序 ID”将消失。如果它没有消失,请退出并重新启动 xcode 几次,它会起作用。
添加正确的域授权并确保授权文件包含在构建中:Xcode 将自动完成。
然后使用终端创建 apple-app-site-association 文件
使用此命令创建 AASA(apple-app-site-association)文件。
cd 桌面
touch apple-app-site-association
然后打开AASP FILE写入这个json格式的数据
{
"applinks": {
"apps": [ ],
"details": [
{
"appID": "TeamID.BundleID2",
"paths": [ "*" ]
}
]
}
}
准备好 AASA 文件后,您现在可以托管 https://<>/.well-known/apple-app-site-association
将 apple-app-site-association 文件上传到您的 HTTPS Web 服务器。您可以将文件放在服务器的根目录或 .well-known 子目录中。
苹果应用程序网站协会 (AASA) 验证器
转到以下 link 并输入您的域名。它将检查 AASA 文件是否有效且可访问。
Link: 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
}
Objective-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>
这个程序在我这边有效。我希望你这边也能正常工作。如果您喜欢阅读本文 post。
我在让 Universal links 在我的应用程序上运行时遇到了一些问题。这是我已经做过的事情。
-- 创建了我的 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 服务器获得,我检查了此苹果验证器的通用 links 状态。 https://search.developer.apple.com/appsearch-validation-tool/ 验证者正在验证这个。但是当我点击 iMessage 中的 link 并且 link 类似于 companyName.com/view/7375 时,它将在 safari 中打开并且我的应用程序没有收到任何回电。
知道我错过了什么吗
可能 OS 现在考虑在 "override" 模式下处理您的 URL -- 为什么它会进入 Safari。
当您的应用解析通用 Link 时,您会在屏幕的右上角看到类似 "companyName.com -->" 的内容。如果你点击它,这就是 OS 的方式 "overriding" Universal Link 的处理方式,并在那时和永远在 Safari 中打开它。
尝试返回“消息”应用并长按 link。一两秒后,您应该会看到一个操作 sheet 出现,它为您提供 "Open in Safari" 和 "Open in 'Your App Name'" 等选项。 Select "open in your name" 选项。那应该 "reset" OS 视图如何处理你的通用 Links,现在将它们引导回你的应用程序。
您还必须实现以下 AppDelegate 函数。
- (BOOL)application:(UIApplication *)application willContinueUserActivityWithType:(NSString *)userActivityType
我遇到了同样的问题。不幸的是,Apple 对此没有很好的记录。
当您支持通用 links 时,iOS 9 位用户可以点击 link 访问您的网站并无缝重定向到您安装的应用程序,而无需通过 Safari。如果您的应用程序未安装,点击 link 您的网站将在 Safari 中打开您的网站。
在这里,如何设置您自己的服务器,并在您的应用程序中处理相应的 link。
转到 Apple 开发者页面
在 developer.apple.com 注册您的应用程序。 在您的应用程序标识符上启用“关联域”。
在您的 Xcode 项目中启用“关联域”
添加正确的域授权并确保授权文件包含在构建中:Xcode 将自动完成。
然后使用终端创建 apple-app-site-association 文件
使用此命令创建 AASA(apple-app-site-association)文件。
cd 桌面
touch apple-app-site-association
然后打开AASP FILE写入这个json格式的数据
{
"applinks": {
"apps": [ ],
"details": [
{
"appID": "TeamID.BundleID2",
"paths": [ "*" ]
}
]
}
}
准备好 AASA 文件后,您现在可以托管 https://<>/.well-known/apple-app-site-association
将 apple-app-site-association 文件上传到您的 HTTPS Web 服务器。您可以将文件放在服务器的根目录或 .well-known 子目录中。
苹果应用程序网站协会 (AASA) 验证器 转到以下 link 并输入您的域名。它将检查 AASA 文件是否有效且可访问。 Link: 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
}
Objective-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>
这个程序在我这边有效。我希望你这边也能正常工作。如果您喜欢阅读本文 post。