【发布时间】: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 上都有共享容器的路径,也许我可以将文件从一个移动到另一个因为,嗯,他们应该是共享的。但是不,即使这样也行不通。
所以大问题是:
- 为什么我要解析共享应用程序上的两条不同路径
- 我如何将我的小电影文件从 iPhone 获取到 Apple Watch
【问题讨论】:
标签: ios iphone swift watchkit ios-app-group