ユーザーが自分のデバイスでファイルを印刷できる iOS アプリケーションを作成しています。私のアプリケーションから、DocumentPicker
iCloud Drive、Dropbox などの他のアプリが提供するデバイス上のファイルにアクセスできます。
ここで、ユーザーが他のアプリケーションを介して自分のアプリケーションとファイルを共有できる機能を追加したいと考えています。そのために作成しAction Extension
ました。たとえば、写真アプリケーションで画像を選択し、[Share
共有] シートで [拡張子を取得] を選択すると、それを選択すると、ファイルの URL も取得されます。次に、このファイルの zip ファイルを作成して、サーバーに送信します。しかし問題は、zip ファイルが常に空であることです。私が使用しているコードは次のとおりです。
In Action 拡張機能の viewDidLoad()
if itemProvider.hasItemConformingToTypeIdentifier(kUTTypeImage as String) {
itemProvider.loadItemForTypeIdentifier(kUTTypeImage as String, options: nil,
completionHandler: { (image, error) in
NSOperationQueue.mainQueue().addOperationWithBlock {
print("Image: \(image.debugDescription)")
//Image: Optional(file:///Users/guestUser/Library/Developer/CoreSimulator/Devices/00B81632-041E-47B1-BACD-2F15F114AA2D/data/Media/DCIM/100APPLE/IMG_0004.JPG)
print("Image class: \(image.dynamicType)")
//Image class: Optional<NSSecureCoding>
self.filePaths.append(image.debugDescription)
let zipPath = self.createZip(filePaths)
print("Zip: \(zipPath)")
}
})
}
そして、私のcreateZip
機能は次のとおりです。
func createZipWithFiles(filePaths: [AnyObject]) -> String {
let zipPath = createZipPath() //Creates an unique zip file name
let success = SSZipArchive.createZipFileAtPath(zipPath, withFilesAtPaths: filePaths)
if success {
return zipPath
}
else {
return "zip prepation failed"
}
}
共有ファイルの zip を作成する方法はありますか?