如何在应用程序购买中获取所有标识符

mru*_*gen 9 iphone xcode in-app-purchase

我正在为应用内购买创建一个示例应用.我已经实现了一个产品,我使用了以下代码,我可以在其中实现一个产品购买,但如果假设有多个产品,那么我如何获得所有可用产品的所有标识符列表.希望我对这个问题很清楚.

我已经使用以下代码为一个产品,如下所示.

- (void)viewDidLoad {
[super viewDidLoad];


if ([SKPaymentQueue canMakePayments]) {
        NSLog(@"Parental-controls are disabled");

        SKProductsRequest *productsRequest = [[SKProductsRequest alloc] initWithProductIdentifiers:[NSSet setWithObject:@"com.companion.onemonth"]];
        productsRequest.delegate = self;
        [productsRequest start];
    } else {
        NSLog(@"Parental-controls are enabled");
        //com.companion.onemonth ;
    }
}


    - (IBAction)purchase {
    SKPayment *payment = [SKPayment paymentWithProductIdentifier:@"com.companion.onemonth"];
    [[SKPaymentQueue defaultQueue] addTransactionObserver:self];
    [[SKPaymentQueue defaultQueue] addPayment:payment];
}
Run Code Online (Sandbox Code Playgroud)

通过这段代码,我可以获得一个产品,但不知道如何在运行时获取多个标识符.

Nan*_*r R 15

Apple没有提供一种方法来获取应用程序的所有inapp产品.他们在文档中提到了这一点.要么我们应该在我们的应用程序中对其进行硬编码,要么使用单独的API调用来返回产品列表.

如果我们有标识符列表,我们可以在一次API调用中获取所有产品的详细信息.

参考:http://developer.apple.com/library/mac/#documentation/NetworkingInternet/Conceptual/StoreKitGuide/APIOverview/OverviewoftheStoreKitAPI.html#//apple_ref/doc/uid/TP40008267-CH100-SW11

请参阅图表参考,其中显示了"开发人员服务器"的链接


Ale*_*gel 6

将所有已定义的产品硬编码到SKProductsRequest的NSSet中:

[NSSet setWithObjecta:@"com.companion.onemonth", @"com.companion.twomonth"], nil)

并且您在委托方法中获得了可用产品的NSArray:

(void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response;
Run Code Online (Sandbox Code Playgroud)

SKProductsResponse将有一系列您的产品.