iOS Universal link注意事项

当用户安装APP时,系统会检查存储在服务器上的apple文件,以验证网站是否允许app代表其打开URL

  1. 首先配置好apple-app-site-association

  2. 将其放入yourdomain.well-known下

  3. 通过网址打开https://yourdomain/.well-known/apple-app-site-association 检查apple-app-site-association是否已经配置

  4. 检查Apple cdn: app-site-association.cdn-apple.com/a/v1/yourdo... 必须等apple cdn与文件一致时,才是真正的生效,apple cdn一般在24小时内更新

  5. 在项目中添加Associated Domains,配置好applinks:yourdomain

  6. 在notes 中长按相应link,如一切正常,会出现打开app的选项

  7. 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...

相关推荐
清晨細雨3 分钟前
UniApp集成极光推送详细教程
android·ios·uni-app·极光推送
ii_best5 小时前
iOS 按键越狱脚本支持一键新机软件教程
ios
lilili啊啊啊7 小时前
查看iphone手机的使用记录-克魔实战
ios·智能手机·iphone
鸿蒙布道师8 小时前
鸿蒙NEXT开发随机工具类(ArkTs)
android·ios·华为·harmonyos·arkts·鸿蒙系统·huawei
鸿蒙布道师21 小时前
鸿蒙NEXT开发Base64工具类(ArkTs)
android·ios·华为·harmonyos·arkts·鸿蒙系统·huawei
美狐美颜sdk1 天前
美颜SDK兼容性挑战:如何让美颜滤镜API适配iOS与安卓?
android·深度学习·ios·美颜sdk·第三方美颜sdk·视频美颜sdk
Invisible_He1 天前
iOS自定义collection view的page size(width/height)分页效果
ui·ios·swift·collection
小橙子20771 天前
一条命令配置移动端(Android / iOS)自动化环境
android·ios·自动化
yidahis1 天前
iOS启动优化 - 1分钟让你的启动速度降低 1s
ios·客户端
帅次1 天前
Flutter DropdownButton 详解
android·flutter·ios·kotlin·gradle·webview