iOS - 通过共享扩展在应用程序之间移动项目
iOS - Move item between applications, via share extension
有 2 个应用程序:
- WhatsApp 应用程序
- 我的应用(testAPP)
我尝试在 WhatsApp 之间共享一个音频文件到我的应用程序 (testAPP),我已经实现了应用程序组和共享扩展。
我成功地集成了这些应用程序并收到了 url,如下所示:
文件:///private/var/mobile/Containers/Data/Application/xxxxxx/tmp/documents/xxxxxx/2017-04-16-AUDIO-00001077.opus
例如,当我尝试将此文件移动到我的本地文档应用程序时,问题就开始了
目标路径:
startingPath = /private/var/mobile/Containers/Data/Application/xxxxxx/tmp/documents/xxxxxx/2017-04-16-AUDIO-00001077.opus
目标路径:
endingPath = /var/mobile/Containers/Data/Application/685A0D6F-AB7C-4DCF-ADD9-19AAE6A8DAFD/Documents
do {
try filemgr.moveItem(atPath: startingPath, toPath: endingPath!)
} catch let error as NSError {
NSLog("Unable to create directory \(error.debugDescription)")
}
我收到此错误,但我不明白为什么
无法创建目录 Error Domain=NSCocoaErrorDomain Code=516 ““2017-04-16-AUDIO-00001077.opus”无法移动到“xxxx”,因为已存在同名项目” UserInfo={NSSourceFilePathErrorKey=/private/var/mobile/Containers/Data/Application/xxxxx/tmp/documents/xxxxxxx/2017-04-16-AUDIO-00001077.opus, NSUserStringVariant=(
移动
), NSDestinationFilePath=/var/mobile/Containers/Data/Application/6xxxx/Documents, NSFilePath=/private/var/mobile/Containers/Data/Application/xxxxx/tmp/documents/xxxxxx2/2017-04-16-AUDIO-00001077.opus, NSUnderlyingError=0x17005f6b0 {Error Domain=NSPOSIXErrorDomain Code=17 "File exists"}}
终于明白问题所在了
当应用程序使用共享扩展来共享 file/image... 到您的应用程序内部时,文件存在于此位置:
/private/var/mobile/Containers/Data/Application/
为了获得文件的完整权限,需要将文件复制到应用组共享文件夹:
/private/var/mobile/Containers/Shared/AppGroup/
将文件移动到应用组共享文件夹后,您将获得对该文件的完全权限
有 2 个应用程序:
- WhatsApp 应用程序
- 我的应用(testAPP)
我尝试在 WhatsApp 之间共享一个音频文件到我的应用程序 (testAPP),我已经实现了应用程序组和共享扩展。
我成功地集成了这些应用程序并收到了 url,如下所示:
文件:///private/var/mobile/Containers/Data/Application/xxxxxx/tmp/documents/xxxxxx/2017-04-16-AUDIO-00001077.opus
例如,当我尝试将此文件移动到我的本地文档应用程序时,问题就开始了
目标路径: startingPath = /private/var/mobile/Containers/Data/Application/xxxxxx/tmp/documents/xxxxxx/2017-04-16-AUDIO-00001077.opus
目标路径: endingPath = /var/mobile/Containers/Data/Application/685A0D6F-AB7C-4DCF-ADD9-19AAE6A8DAFD/Documents
do {
try filemgr.moveItem(atPath: startingPath, toPath: endingPath!)
} catch let error as NSError {
NSLog("Unable to create directory \(error.debugDescription)")
}
我收到此错误,但我不明白为什么
无法创建目录 Error Domain=NSCocoaErrorDomain Code=516 ““2017-04-16-AUDIO-00001077.opus”无法移动到“xxxx”,因为已存在同名项目” UserInfo={NSSourceFilePathErrorKey=/private/var/mobile/Containers/Data/Application/xxxxx/tmp/documents/xxxxxxx/2017-04-16-AUDIO-00001077.opus, NSUserStringVariant=( 移动 ), NSDestinationFilePath=/var/mobile/Containers/Data/Application/6xxxx/Documents, NSFilePath=/private/var/mobile/Containers/Data/Application/xxxxx/tmp/documents/xxxxxx2/2017-04-16-AUDIO-00001077.opus, NSUnderlyingError=0x17005f6b0 {Error Domain=NSPOSIXErrorDomain Code=17 "File exists"}}
终于明白问题所在了
当应用程序使用共享扩展来共享 file/image... 到您的应用程序内部时,文件存在于此位置:
/private/var/mobile/Containers/Data/Application/
为了获得文件的完整权限,需要将文件复制到应用组共享文件夹:
/private/var/mobile/Containers/Shared/AppGroup/
将文件移动到应用组共享文件夹后,您将获得对该文件的完全权限