我正在使用最新的 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];
它甚至不会发回错误,因此用户不会收到任何消息。
我想这应该是一个普遍的问题?我该如何以最好的方式处理它?