菜鸟教程小白 发表于 2022-12-11 18:37:10

ios - 原生 Mac 应用无法切换到原生 iOS 应用


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

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

<p>在 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 工作。</p>

<p>最好的问候
拉斐尔</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>我终于解决了。答案与接受的答案所暗示的签署个人资料无关。</p>

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

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

<p>在左侧导航面板的 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 隐藏了...... </p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 原生 Mac 应用无法切换到原生 iOS 应用,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/41720356/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/41720356/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 原生 Mac 应用无法切换到原生 iOS 应用