我正在为应用内购买创建示例应用。我已经实现了一个产品,我使用了以下代码,我可以在其中实现一个产品购买,但如果假设有多个产品,那么我如何获得所有可用产品的所有标识符列表。希望我对这个问题很清楚。
我已将以下代码用于以下产品。
- (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];
}
通过这段代码,我可以获得一个产品,但不知道如何在运行时获得多个标识符。
答案 0 :(得分:15)
Apple没有提供一种方法来获取应用程序的所有inapp产品。他们在文档中提到了这一点。要么我们应该在我们的应用程序中对此进行硬编码,要么使用单独的API调用来返回产品列表。
如果我们有标识符列表,我们可以在一次API调用中获取所有产品的详细信息。
请参阅图表参考,该参考显示指向“开发人员服务器”
的链接答案 1 :(得分:6)
将所有已定义的产品硬编码到SKProductsRequest的NSSet中:
[NSSet setWithObjecta:@"com.companion.onemonth", @"com.companion.twomonth"], nil
)
您在委托方法中获得了NSArray的可用产品:
(void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response;
SKProductsResponse将有一系列产品。