OGeek|极客世界-中国程序员成长平台

标题: ios - 原生 Mac 应用无法切换到原生 iOS 应用 [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-11 18:37
标题: ios - 原生 Mac 应用无法切换到原生 iOS 应用

我正在我的 iOS 和 Mac 应用中采用 Handoff。 iOS -> iOS 和 iOS -> Mac 运行完美!这很棒。 但是,Mac -> iOS 永远不会工作。我已经在不同的机器上测试了 El Capitan 和 Sierra。如果我添加一个网页URL 作为后备,iOS 中的 Safari 会拾取该事件,但不会显示 native iOS 应用程序。 我在 Mac 应用中使用了这段代码

class ViewController: NSViewController {  
    override func viewDidAppear() {  
        super.viewDidAppear()      
        self.startUserActivity()  
    }    
    func startUserActivity() {  
        let userActivity = NSUserActivity(activityType: "net.myapp.myactivitytype")  
        userActivity.isEligibleForHandoff = true  
        userActivity.isEligibleForSearch = false  
        userActivity.isEligibleForPublicIndexing = false  
        userActivity.title = "Handoff test"  
        userActivity.userInfo = ["key": "value"]  
        userActivity.requiredUserInfoKeys = Set<String>(arrayLiteral: "key")  
        userActivity.webpageURL = URL(string: "https://myapp.net/myurl") // I can pick this up in mobile safari  
        self.userActivity = userActivity  
    }    
    override func updateUserActivityState(_ userActivity: NSUserActivity) {  
        userActivity.addUserInfoEntries(from: ["key":"Updated value"])  
        super.updateUserActivityState(userActivity)  
    }  
} 

在 iOS 端,我已经使用 applinks:myapp.net 处理了通用链接,并尝试添加 activitycontinuation:myapp.net (以及在 apple-app-site-association 文件上的正确配置。这使我的 native 应用程序从 Mac 的 Safari 中获取相应的 url,但 Native Mac 应用程序仍然无法切换到 Native iOS 应用程序。 我没有想法,有人知道为什么会发生这种情况吗? 在 iOS 上,我使用的是 10.2。顺便说一句,我在 iOS 9 上根本无法让 Handoff 工作。

最好的问候 拉斐尔



Best Answer-推荐答案


我终于解决了。答案与接受的答案所暗示的签署个人资料无关。

我向 Apple 报告了一份错误报告,解释了整个情况,Apple 告诉我,我的 iOS 应用程序的 info.plist 根本没有声明 NSUserActivityTypes,而我的 Mac 应用程序的 info.plist 正确声明了 NSUserActivityTypes,导致切换只能工作从 iOS 到 Mac,而不是从 Mac 到 iOS。

这个问题是由于iOS版本的app没有在info.plist中声明activity类型,导致iOS设备不知道要切换到哪个app。

在左侧导航面板的 Xcode 项目中,我打开 info.plist 并且 NSUserActivityTypes 确实已经存在。但是当我使用项目文件夹中的 Finder 搜索它时,我意识到我的项目中有多个 info.plist 文件。然后我用 Finder 进入我的项目文件夹并试图找到这个 info.plist 文件,但是当我在 projectName/projectName 中找到一个文件时,它打开了一个不同的 info.plist 文件,我最初无法通过 Xcode 项目导航器访问该文件。不同的 info.plist 文件没有 NSUserActivityTypes,所以我添加了它,woala~handoff 终于从 Mac 到 iOS 工作了!很奇怪,我的项目中有多个假的 info.plist。我的真实信息列表被 Xcode 隐藏了......

关于ios - 原生 Mac 应用无法切换到原生 iOS 应用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41720356/






欢迎光临 OGeek|极客世界-中国程序员成长平台 (http://jike.in/) Powered by Discuz! X3.4