在应用程序购买 - 最后阶段的帮助 - 下载内容

时间:2013-08-19 03:32:04

标签: ios objective-c xcode in-app-purchase storekit

我已将IAP应用到我的应用程序中但是我在查明用户应该在付款后找到所购买内容的位置时遇到问题。

使用我的测试帐户,当我点击购买按钮时,它会标记IA​​P并勾选,好像是为了显示它已经购买但是从那里我找不到内容......

有人可以帮我解决我需要添加到我的代码和故事板的内容,以便用户能够访问他们购买的内容....(内容将通过IAP向用户提供几个短视频)

从我阅读的所有教程中,我认为缺少的代码是:

-(void)paymentQueueSKPaymentQueue *)queue updatedDownloadsNSArray *)downloads
{
    for (SKDownload *download in downloads)
    {
        switch (download.downloadState) {
            case SKDownloadStateActive:
                NSLog(@"Download progress = %f", 
                download.progress);
                NSLog(@"Download time = %f", 
                download.timeRemaining);
            break;
            case SKDownloadStateFinished:
                // 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;
        }
    }
}

但是我还需要一种方法将完成的下载内容传回应用程序,然后将视图控制器链接到那些下载/购买的内容(我该怎么做?)

1 个答案:

答案 0 :(得分:0)

以下是我的某个应用中的一些示例代码,可以帮助您。基本上,您需要做的是确定所购买产品的索引,然后根据该索引提供内容。如果您只有一次应用内购买,那么您只需在购买通知后提供内容即可。

- (void)productPurchased:(NSNotification *)notification {

    [self makeSuccessAlert];

    NSString * productIdentifier = notification.object;
    [_products enumerateObjectsUsingBlock:^(SKProduct * product, NSUInteger idx, BOOL *stop) {
        if ([product.productIdentifier isEqualToString:productIdentifier]) {
            if (idx == 0) {
                coins = [NSNumber numberWithInteger:[coins integerValue] + 5000];
                NSLog(@"coins %d", [coins integerValue]);
                [totalCoins setString:[NSString stringWithFormat:@"%d", coins.integerValue]];
                [[NSUserDefaults standardUserDefaults] setObject:coins forKey:@"coins"];
                [[NSUserDefaults standardUserDefaults] synchronize];

            }
            if (idx == 1) {
                coins = [NSNumber numberWithInteger:[coins integerValue] + 15000];
                NSLog(@"coins %d", [coins integerValue]);
                [totalCoins setString:[NSString stringWithFormat:@"%d", coins.integerValue]];
                [[NSUserDefaults standardUserDefaults] setObject:coins forKey:@"coins"];
                [[NSUserDefaults standardUserDefaults] synchronize];
            }

            *stop = YES;
        }
    }];
}