ios - iPhone 和 Apple Watch 不共享 App Group

标签 ios iphone swift watchkit ios-app-group

我已经为这个问题苦恼了两天了。我在 iPhone 应用程序中生成了一个小电影文件,我想将其从 iPhone 发送到 Apple Watch 上播放。作为概念验证,我将类似的 .mov 放在 Apple Watch App 的 Bundle 中,并且能够毫无问题地播放它。所以我想,简单易行,现在当我想向 watch 发送一个新的小剪辑时,我只需将它放在 App Group Shared 容器中并从那里访问它,而不是从 Bundle 中访问它。不!

我经历过无数次 S.O.帖子,尝试了许多不同的方法,但没有任何效果像预期的那样。

在你问之前,我已经多次重做 App Group,从 iTunes Connect 中删除旧的,重新生成配置文件,多次清理目标,多次删除 DerivedData,删除应用程序并重新开始几次并尝试了几乎所有我能在 S.O. 上找到的小调整和修复。没有任何帮助。

我确实认为我知道问题出在哪里,但不知道如何克服它。

这是我在 iPhone 应用程序和 Watch 应用程序中使用的代码,用于获取共享容器的路径(如果来自 Watch 端,则为此代码段):

let fileManager = FileManager.default
    let sharedContainer = fileManager
        .containerURL(
            forSecurityApplicationGroupIdentifier: "group.com.mycompany.myappname")

    let dirPath = sharedContainer?.path
     sharedFilePathOnWatch = (dirPath! as NSString).appendingPathComponent("watchPreview.mov")

    print ("Shared File Path on Watch: \(sharedFilePathOnWatch)")
    print ("Shared File Path from iPhone: \(sharedFilePath)")

打印语句向我显示了我从 iPhone(通过 watch 连接)发送到 watch 的共享文件路径以及 watch 应用解析的共享路径。

运行时我得到的结果如下:

watch 上的共享文件路径:/private/var/mobile/Containers/Shared/AppGroup/94AA7797-528D-4E96-9623-23285BE0742B/watchPreview.mov

来自 iPhone 的共享文件路径:/private/var/mobile/Containers/Shared/AppGroup/4D43C314-CCBD-4861-BF90-69A8AC71198C/watchPreview.mov

现在我期待只有一个共享容器,iPhone 和 Watch 应该解析相同的路径,但事实并非如此。我还注意到,在多次运行中,这两个应用程序的这些路径保持不变。它不是我怀疑的每次运行时都在变化的动态地址。

作为让它运行的最后一次尝试,我想既然我有一个指向 iPhone 上的共享容器和 Apple Watch 上的共享容器的路径,也许我可以将文件从一个移动到另一个因为,嗯,他们应该分享。但不,即使这样也行不通。

所以最大的问题是:

  1. 为什么我在共享应用程序上解析两个不同的路径
  2. 我到底如何将我的小电影文件从 iPhone 传输到 Apple Watch

最佳答案

随着 watchOS2 和 native watchOS 应用程序的推出,Apple Watch 应用程序不再只是其 iOS 应用程序的扩展,因此它们不共享 AppGroups。

watchOS2 开始,您不能使用 AppGroups 共享数据。您必须使用 WatchConnectivity 框架在您的 iOSwatchOS 应用之间发送数据。

参见 Keeping your WatchOS content up-to-date有关该主题的更多信息的页面。

关于ios - iPhone 和 Apple Watch 不共享 App Group,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46140731/

相关文章:

ios - 在 iPhone 中使用颜色名称设置 UIButton 背景颜色

html - 替换图像以进行移动查看

iphone - 在 iPhone 上使用 opencv features2d

ios - 如何在 Swift 中放大或缩小 MKMapView?

swift - SKAudioNode 在 Xcode 9b2 中执行 SKActions 时遇到问题

ios - 将 ViewController 呈现为弹出窗口

ios - 概念化商店结账 channel 的 parse.com 数据结构

ios - 是否有私有(private) API 能够检测 iOS 上当前的前台应用程序是什么?

ios - 单个 IOS 应用程序可以连接到多个 Parse.com 应用程序吗?

Swift 4 - 用数组过滤数组