美文网首页
Mac 通用链接(Universal Links)第一次无法打开

Mac 通用链接(Universal Links)第一次无法打开

作者: 北_极_狐 | 来源:发表于2021-09-11 09:07 被阅读0次

    在Mac上通用链接默认打开方式为浏览器时候无法直接调起APP ,需要指定APP路径
    macOS10.15提供了一个接口可以指定路径并设置一些参数,代码中只写了一部分,有其它需求可自行查看系统文档

    lazy var appURL: URL? = {
        //  通用链接自行拼接
        let urlString = "https://xxx.xxx.com/xxx/xxx/xxx/?" + "parameter=" + "xxx"
        return URL(string: urlString)
    }()
    
    if let strongAppURL = appURL {
            if #available(macOS 10.15, *) {
                let configuration = NSWorkspace.OpenConfiguration()
                // 一个布尔值,指示您是否要打印文档和 URL 的内容而不是打开它们。
                configuration.isForPrinting = false
                // 一个布尔值,指示您是否要求 URL 具有关联的通用链接。
                configuration.requiresUniversalLinks = true
                // 一个布尔值,指示系统是否激活应用程序并将其置于前台。
                configuration.activates = true
                // 一个布尔值,指示您是否希望系统启动应用程序的新实例。
                configuration.createsNewApplicationInstance = false
                // 一个布尔值,指示是否向用户显示错误、身份验证请求或其他 UI 元素。
                configuration.promptsUserIfNeeded = false
                // 一个布尔值,指示是否使用正在运行的应用程序实例,即使它位于不同的 URL。
                configuration.allowsRunningApplicationSubstitution = true
                // 应用程序文件夹
                if let path = FileManager.default.urls(for: .applicationDirectory, in: .localDomainMask).first?.appendingPathComponent("名称.app") {
                    NSWorkspace.shared.open([strongAppURL],
                                            withApplicationAt: path,
                                            configuration: configuration) { app, error in
                        guard error == nil else {
                            print("打开失败")
                            //直接打开
                            self.gotoLowVersionURL()
                            return
                        }
                        print("打开成功")
                        // 到主线程
                        DispatchQueue.main.async {
                            NSApp.hide(nil)
                        }
                    }
                }else {
                    gotoLowVersionURL()
                }
            } else {
                // 10.14以下是用直接跳转
                gotoLowVersionURL()
            }
        }
    
    

    在低于10.15的版本等情况可以直接调旧版的接口

    //MARK: 低版本方式跳转(不指定app路径)
    func gotoLowVersionURL() {
        if let strongAppURL = appURL {
            let result = NSWorkspace.shared.open(strongAppURL)
            if result == false {
                // 显示到下载页
                if let lastURL =  URL(string: "https://xxx.xxx.com") {
                    NSWorkspace.shared.open(lastURL)
                }
            }
            else {
                // 到主线程
                DispatchQueue.main.async {
                    NSApp.hide(nil)
                }
            }
        }
    }
    

    相关文章

      网友评论

          本文标题:Mac 通用链接(Universal Links)第一次无法打开

          本文链接:https://www.haomeiwen.com/subject/oomowltx.html