设置 iOS 应用程序(启用通用链接)
应用程序端的设置需要两件事:
- 配置应用程序的权利,并通过启用项目中的关联域功能来启用通用链接。
- 处理
AppDelegate
中的传入链接。
1.配置应用程序的权利,并启用通用链接
配置应用程序权利的第一步是为你的应用程序 ID 启用它。在 Apple Developer Member Center 中执行此操作。单击证书,标识符和配置文件,然后单击标识符。选择你的应用程序 ID(如果需要,首先创建它),单击编辑并启用关联域权限。
接下来,通过单击相应的 App ID 获取 App ID 前缀和后缀。
App ID 前缀和后缀应与 apple-app-site-association 文件中的前缀匹配。
接下来在 Xcode
中,选择应用程序的目标,单击功能并将关联域切换为打开。为你的应用支持的每个域添加一个条目,以 app 链接为前缀 :
例如 applinks:YourCustomDomainName.com
对于示例应用程序,这看起来像这样:
注意 :确保你已选择相同的团队并在成员中心输入与注册的 App ID 相同的 Bundle ID。还要确保 Xcode 通过选择文件包含权利文件,并在文件检查器中确保选中目标。
2.处理 AppDelegate 中的传入链接
所有重定向从 Safari 到应用程序的通用链接都通过 Application 的 AppDelegate 类中的以下方法进行。你解析此 URL 以确定应用程序中的正确操作。
[UIApplicationDelegate application: continueUserActivity: restorationHandler:]
Objective-C
-(BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray * _Nullable))restorationHandler{
///Checking whether the activity was from a web page redirect to the app.
if ([userActivity.activityType isEqualToString: NSUserActivityTypeBrowsingWeb]) {
///Getting the URL from the UserActivty Object.
NSURL *url = userActivity.webpageURL;
UIStoryboard *storyBoard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
UINavigationController *navigationController = (UINavigationController *)_window.rootViewController;
if ([url.pathComponents containsObject:@"home"]) {
[navigationController pushViewController:[storyBoard instantiateViewControllerWithIdentifier:@"HomeScreenId"] animated:YES];
}else if ([url.pathComponents containsObject:@"about"]){
[navigationController pushViewController:[storyBoard instantiateViewControllerWithIdentifier:@"AboutScreenId"] animated:YES];
}
}
return YES;
}
Swift:
func application(application: UIApplication, continueUserActivity userActivity: NSUserActivity, restorationHandler: ([AnyObject]?) -> Void) -> Bool {
if userActivity.activityType == NSUserActivityTypeBrowsingWeb {
let url = userActivity.webpageURL!
//handle url
}
return true
}
iOS 应用程序代码
应用程序代码可以在这里找到 master 分支。