5

我已经阅读并搜索了有关 iOS 应用内主题的所有内容。至少来自谷歌(减去无休止的应用内黑客链接)。我找不到的一件事是有关如何从服务器获取内容并在收据验证后将其存储到手机上的说明或教程。我知道我可以将内容存储在我自己的服务器上,也可以使用应用程序加载器将其打包并让 Apple 托管它。我得到了整个非消耗性内容并使用您自己的服务器或 NSUserDefaults 来记住购买的物品。我找不到有关如何从我自己的服务器或 Apple 的服务器获取应用内购买内容的编码教程,以及我可以将其存储在手机的哪个位置?正常的套接字调用?我可以将内容存储在应用程序的目录中吗?

例如,我有一个现有的应用程序,我想通过应用程序内购买来销售新图像。现有图像位于捆绑包中。如何将捆绑的图像从服务器返回到我的应用程序?我可以接受每次购买的新捆绑包,我知道您不能修改现有捆绑包。

4

1 回答 1

3

当您购买成功时,您将获得交易对象。不是吗?

- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions

遍历每个事务对象并使用以下代码:

if (transaction.downloads)
{
    [[SKPaymentQueue defaultQueue] startDownloads:transaction.downloads];
}

成功下载后,您将收到一个委托呼叫:

-(void)paymentQueue:(SKPaymentQueue *)queue updatedDownloads:(NSArray *)downloads
{
    for (SKDownload *download in downloads)
    {
        switch (download.downloadState) {
            case SKDownloadStateActive:
                NSLog(@"Download progress = %f and Download time: %f", download.progress, download.timeRemaining);
                break;
            case SKDownloadStateFinished:
                NSLog(@"%@",download.contentURL);
                // Download is complete. Content file URL is at
                // path referenced by download.contentURL. Move
                // it somewhere safe, unpack it and give the user
                // access to it
                break;
            default:
                break;
        }
    }
}

下载后,您将获得下载数据的 URL,现在您可以将其存储在库的应用程序支持文件夹中,并防止其自动同步到云端(如果需要)。而已。

于 2012-12-03T15:50:50.780 回答