iPhone和Apple Watch未共享应用群组

时间:2017-09-10 12:33:24

标签: ios iphone swift watchkit ios-app-group

我已经把头发拉出这个问题两天了。我在iPhone应用程序中生成一个小电影文件,我想从iPhone发送到Apple Watch上播放。作为我的概念证明,我在Apple Watch App的Bundle中放了一个类似的.mov,并且能够毫无问题地播放它。所以我想,轻松自如,现在当我想向手表发送一个新的小片段时,我只需将它放在App Group Shared容器中,然后从那里而不是从Bundle访问它。都能跟得上!

我经历了大量的S.O.帖子,尝试了许多不同的方法,没有任何工作按预期。

在您提出要求之前,我已多次重新完成App Group,从iTunes Connect中删除旧的,重新生成配置文件,多次清理目标,多次删除DerivedData,删除应用程序并重新开始几次尝试几乎所有的小调整和修复,我可以在SO上找到什么都没有帮助。

我认为我知道问题是什么,但不知道如何征服它。

以下是我在iPhone App和Watch App中使用的代码,以获取共享容器的路径(如果来自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 Connectivity)发送到手表的共享文件路径以及Watch App解析的共享路径。

当运行以下内容时我得到了什么:

观看时的共享文件路径:/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

1 个答案:

答案 0 :(得分:4)

随着ORDER BY `CHANGE` DESC 和原生watchOS2应用的推出,Apple Watch应用不再仅仅是iOS对应的扩展,因此它们不会共享AppGroup。

您无法使用AppGroups从watchOS开始共享数据。您必须使用watchOS2框架在WatchConnectivityiOS个应用之间发送数据。

有关该主题的详情,请参阅WatchKit Programming Guide - Sharing Data页面。