【问题标题】:iPhone and Apple Watch not sharing App GroupiPhone 和 Apple Watch 不共享应用程序组
【发布时间】:2017-09-10 12:33:23
【问题描述】:

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

我经历过无数次 S.O.帖子,尝试了许多不同的方法,但没有按预期工作。

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

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

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

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 解析的共享路径。

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

    • 好的,我已经读过这个(在问我的问题之前好几次),但令人困惑的部分是在运行时共享文件的第二部分,这是我正在尝试做的,状态this:使用共享应用组在运行时在 Watch 应用界面和 WatchKit 扩展之间共享媒体文件。应用程序组创建多个进程可以访问的安全容器。通常,每个进程都在自己的沙盒环境中运行,但应用程序组允许两个进程共享一个公共目录。然后继续提供有关设置应用程序组的说明,就像我所做的那样。
    • 那是在 WatchKit 应用目标和 WatchKit 扩展目标之间共享文件,而不是在 iOS 和 watchOS 应用之间共享文件。
    • 哇。我不敢相信苹果的文档对此并不清楚。我花了几天时间试图弄清楚这一点。
    猜你喜欢
    • 2015-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多