当用户安装APP时,系统会检查存储在服务器上的apple文件,以验证网站是否允许app代表其打开URL
-
首先配置好apple-app-site-association
-
将其放入yourdomain.well-known下
-
通过网址打开https://yourdomain/.well-known/apple-app-site-association 检查apple-app-site-association是否已经配置
-
检查Apple cdn: app-site-association.cdn-apple.com/a/v1/yourdo... 必须等apple cdn与文件一致时,才是真正的生效,apple cdn一般在24小时内更新
-
在项目中添加Associated Domains,配置好applinks:yourdomain
-
在notes 中长按相应link,如一切正常,会出现打开app的选项
-
open app之后的处理
当你的app没有使用Scene时,可以在AppDelete.swift文件中处理
swift
func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) {
// Get URL components from the incoming user activity.
guard userActivity.activityType == NSUserActivityTypeBrowsingWeb,
let incomingURL = userActivity.webpageURL,
let components = NSURLComponents(url: incomingURL, resolvingAgainstBaseURL: true) else {
return false
}
// Check for specific URL components that you need.
guard let path = components.path,
let params = components.queryItems else {
return false
}
print("path = \(path)")
}
当你的app使用Scene时,可以在SceneDelegate.swift文件中处理
swift
//app没有运行,系统会在启动后将Universal link传递到Scene
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
// Get URL components from the incoming user activity.
guard let userActivity = connectionOptions.userActivities.first,
userActivity.activityType == NSUserActivityTypeBrowsingWeb,
let incomingURL = userActivity.webpageURL,
let components = NSURLComponents(url: incomingURL, resolvingAgainstBaseURL: true) else {
return
}
// Check for specific URL components that you need.
guard let path = components.path,
let params = components.queryItems else {
return
}
print("path = \(path)")
}
//当app在内存中运行或暂停时点击Universal link时,将链接传递到Scene
func scene(_ scene: UIScene, continue userActivity: NSUserActivity) {
// Get URL components from the incoming user activity.
guard userActivity.activityType == NSUserActivityTypeBrowsingWeb,
let incomingURL = userActivity.webpageURL,
let components = NSURLComponents(url: incomingURL, resolvingAgainstBaseURL: true) else {
return false
}
// Check for specific URL components that you need.
guard let path = components.path,
let params = components.queryItems else {
return false
}
print("path = \(path)")
}
参考资料
1.developer.apple.com/videos/play... 2.developer.apple.com/documentati...