我正在我的 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-推荐答案 strong>
我终于解决了。答案与接受的答案所暗示的签署个人资料无关。
我向 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/
|