移动和使用托管的In App Purchase托管内容

时间:2014-07-09 06:04:15

标签: ios objective-c ios7 in-app-purchase

我已经明白我正在下载托管的应用程序内购买。 它将托管的In App Purchase内容下载到Cache目录,但由于我需要托管In App Purchase内容是永久性的,我需要将其移动到Documents目录。

一旦它在那里,我就需要实际访问内容。

我正在使用

    NSURL *url = download.contentURL;
    NSError *error = nil;
    NSArray *properties = [NSArray arrayWithObjects: NSURLLocalizedNameKey,
                           NSURLCreationDateKey, NSURLLocalizedTypeDescriptionKey, nil];

    NSArray *zipContentsArray = [[NSFileManager defaultManager]
                      contentsOfDirectoryAtURL:url
                      includingPropertiesForKeys:properties
                      options:(NSDirectoryEnumerationSkipsHiddenFiles)
                      error:&error];

显示缓存中的输出

The download's contentURL is
file:///private/var/mobile/Applications/**/Library/Caches/***.zip/

zipContentsArray = (
    "file:///private/var/mobile/Applications/***/Library/Caches/***.zip/ContentInfo.plist",
    "file:///private/var/mobile/Applications/***/Library/Caches/***.zip/Contents/",
    "file:///private/var/mobile/Applications/**/Library/Caches/***.zip/META-INF/"
)

我如何进入内容(即使是在Caches文件夹中 - 无论其位置如何,它都是相同的过程,我假设)?

令人抓狂的是,围绕整个过程Apple的文档很少,因此任何帮助都会受到极大的欢迎。

1 个答案:

答案 0 :(得分:1)

我目前遇到同样的问题,但我可能会向你迈进一步。您的权利必须从缓存中移出您的内容,这在Apple IAP指南中有说明。 我尝试下载非耗材IAP的内容并将其内容移至正确的路径。 我已设法将下载的内容下载到iphone缓存中,但现在需要将此内容传递到正确的路径。

我使用了http://xinsight.ca/blog/iap-content-download-in-ios6/中的一些代码,这似乎是我需要的;但是,我不确定我需要为我的应用包说明哪条路径。从代码中,这似乎与' MyConfig'

有关
- (void) processDownload:(SKDownload*)download;
{
// convert url to string, suitable for NSFileManager
NSString *path = [download.contentURL path];

// files are in Contents directory
path = [path stringByAppendingPathComponent:@"Contents"];

NSFileManager *fileManager = [NSFileManager defaultManager];
NSError *error = nil;
NSArray *files = [fileManager contentsOfDirectoryAtPath:path error:&error];
NSString *dir = [MyConfig downloadableContentPathForProductId:download.contentIdentifier]; // not written yet

for (NSString *file in files) {
    NSString *fullPathSrc = [path stringByAppendingPathComponent:file];
    NSString *fullPathDst = [dir stringByAppendingPathComponent:file];

    // not allowed to overwrite files - remove destination file
    [fileManager removeItemAtPath:fullPathDst error:NULL];

    if ([fileManager moveItemAtPath:fullPathSrc toPath:fullPathDst error:&error] == NO) {
        NSLog(@"Error: unable to move item: %@", error);
    }
}

有人可以加入这个,所以我们可以取得一些进展吗?