我已经为这个问题苦恼了两天。我在 iPhone 应用程序中生成一个小的电影文件,希望能将其从 iPhone 发送到 Apple Watch 上播放。作为概念证明,我将类似的 .mov 文件放入 Apple Watch 应用程序的 bundle 中,并能够毫无问题地播放。因此,我认为现在当我想要向手表发送新的小片段时,只需将其放入 App Group 共享容器中,并从那里访问它,而不是从 Bundle 中访问。但事实并非如此!
我看过大量的 S.O. 帖子,尝试了许多不同的方法,但没有任何一个能如预期般工作。
在您问之前,我已经重新做了多次 App Group,从 iTunes Connect 中删除了旧的 App Group,重新生成了 provisioning profiles,多次清理了 targets,多次删除了 DerivedData,多次删除了应用程序并重新开始,并尝试了几乎所有我可以在 S.O. 上找到的微小调整和修复方法。但是都没有效果。
我确实认为我知道问题所在,但不知道如何克服它。
以下是我在 iPhone 应用程序和 Watch 应用程序中使用的代码,用于获取到共享容器的路径(此代码片段来自 Watch 端)。
打印语句向我展示了我从iPhone(通过Watch Connectivity)发送到手表的共享文件路径和手表应用程序解析的共享路径。
当此运行时,我得到以下结果:
手表上的共享文件路径:/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和手表应该解析相同的路径,但事实并非如此。 我还注意到这些路径在多次运行时保持不变。 它不是每次运行都会更改的动态地址,这让我怀疑一段时间。
为了最后努力使其正常工作,我想既然我有了iPhone上共享容器的路径和Apple Watch上的共享容器,也许我可以将文件从一个移动到另一个,因为它们应该共享。 但是不行,甚至连这个方法也不起作用。
因此,主要问题是:
1.为什么我在共享应用程序中解析出两个不同的路径
2.我该如何将我的小电影文件从iPhone传输到Apple Watch
我看过大量的 S.O. 帖子,尝试了许多不同的方法,但没有任何一个能如预期般工作。
在您问之前,我已经重新做了多次 App Group,从 iTunes Connect 中删除了旧的 App Group,重新生成了 provisioning profiles,多次清理了 targets,多次删除了 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 Connectivity)发送到手表的共享文件路径和手表应用程序解析的共享路径。
当此运行时,我得到以下结果:
手表上的共享文件路径:/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和手表应该解析相同的路径,但事实并非如此。 我还注意到这些路径在多次运行时保持不变。 它不是每次运行都会更改的动态地址,这让我怀疑一段时间。
为了最后努力使其正常工作,我想既然我有了iPhone上共享容器的路径和Apple Watch上的共享容器,也许我可以将文件从一个移动到另一个,因为它们应该共享。 但是不行,甚至连这个方法也不起作用。
因此,主要问题是:
1.为什么我在共享应用程序中解析出两个不同的路径
2.我该如何将我的小电影文件从iPhone传输到Apple Watch