objective-c - iOS 通过应用内购买从服务器下载非消耗性内容

标签 objective-c ios in-app-purchase

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

例如,我有一个现有的应用程序,我想通过应用程序内购买来销售新图片。现有图像捆绑在一起。如何将捆绑的图像从服务器返回到我的应用程序中?我同意每次购买新的 bundle ,我知道您不能修改现有的 bundle 。

最佳答案

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

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

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

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

下载成功后,您将接到委托(delegate)电话:

-(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,现在您可以将其存储在图书馆的应用程序支持文件夹中,并防止它自动同步到云端(如果需要)。就是这样。

关于objective-c - iOS 通过应用内购买从服务器下载非消耗性内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12451492/

相关文章:

ios - 从 iPhone 应用程序启动 Google map 应用程序。

ios - 首次登录 Backendless 后保留用户

ios - NavigationLink 似乎只占用一点空间

ios - IAP 时无法连接到 iTunes Store 错误

android - 使用开发人员有效负载在应用程序购买中验证 android

ios - 如何在此代码中使用 CHQueryStringFromParametersWithEncoding

ios - 为 CALayer 的蒙版制作动画

objective-c - 应用程序在分配队列时阻塞

iphone - ipad 中的 SplitView 导航问题

android - 需要在 Android 和 iOS 中集成应用内购买以与患者进行视频通话?