アプリ内購入に最新の MKStoreKit を使用しています。私が遭遇した問題は、アプリの起動時にインターネットがない場合、製品がアプリ ストアから読み込まれないことです。次に実行すると
- (void) buyFeature:(NSString*) featureId
onComplete:(void (^)(NSString* purchasedFeature, NSData*purchasedReceipt)) completionBlock
onCancelled:(void (^)(void)) cancelBlock;
その後、購入可能なオブジェクトが見つからない場合はここに戻るため、onComplete または onCancelled のいずれも実行されません。
NSArray *allIds = [self.purchasableObjects valueForKey:@"productIdentifier"];
int index = [allIds indexOfObject:productId];
if(index == NSNotFound) return; <-- IT RETURNS HERE
SKProduct *thisProduct = [self.purchasableObjects objectAtIndex:index];
SKPayment *payment = [SKPayment paymentWithProduct:thisProduct];
[[SKPaymentQueue defaultQueue] addPayment:payment];
エラーも返さないので、ユーザーは何のメッセージも受け取りません。
これはよくある問題だと思いますか?どうすれば最善の方法で処理できますか?