StoreKitがIAPコンテンツパッケージをダウンロードすると、次のようなNSURLが返されます。
file://localhost/private/var/mobile/Applications/45EF2B3A-3CAB-5A44-4B4A-631A122A4299/Library/Caches/BA32BC55-55DD-3AA4-B4AC-C2A456622229.Zip/
StoreKitはダウンロード後にコンテンツパッケージを解凍すると主張しているすべての情報源にもかかわらず、Zipを渡してくれます。このZipには、おそらくコンテンツパッケージのファイル構造が含まれています。しかし、どうすればこれを解凍できますか?
使用 SSZipArchive
これを使用して解凍できます
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *outputPath = [documentsDirectory stringByAppendingPathComponent:@"/ImagesFolder"];
NSString *zipPath = Your Zip file path;
[SSZipArchive unzipFileAtPath:zipPath toDestination:outputPath delegate:self];
それがあなたを助けることを願っています。
IPhone用のファイルを圧縮/解凍するための優れたサードパーティツールがあります
https://github.com/soffes/ssziparchive
使い方はとても簡単です。お役に立てば幸いです!!
編集:
私が作成したクイックメソッドは、URLを取得し、Zipをダウンロードして、解凍します。
-(void)downloadAndUnzip : (NSString *)sURL_p : (NSString *)sFolderName_p
{
dispatch_queue_t q = dispatch_get_global_queue(0, 0);
dispatch_queue_t main = dispatch_get_main_queue();
dispatch_async(q, ^{
//Path info
NSURL *url = [NSURL URLWithString:sURL_p];
NSData *data = [NSData dataWithContentsOfURL:url];
NSString *fileName = [[url path] lastPathComponent];
NSString *filePath = [NSTemporaryDirectory() stringByAppendingPathComponent:fileName];
[data writeToFile:filePath atomically:YES];
dispatch_async(main, ^
{
//Write To
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0]; // Get documents folder
NSString *dataPath = [documentsDirectory stringByAppendingPathComponent:sFolderName_p];
[SSZipArchive unzipFileAtPath:filePath toDestination:dataPath];
});
});
}