我正在使用最新的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];
它甚至没有发回错误,因此用户没有收到任何消息。
我想这应该是一个常见的问题?我该如何以最佳方式处理它?</ p>
答案 0 :(得分:4)
我通过评估......
解决了这个问题MKStoreKit.sharedManager.pricesDictionary.count == 0
...要知道我是否应告诉用户App Store无法购买。然后我尝试使用这种方法重新加载产品数据......
https://github.com/MugunthKumar/MKStoreKit/issues/75
...每次用户有兴趣购买时,App Store根据上述内容不可用。
要在产品下载并准备购买时更新用户界面,我收听了此通知...
[NotificationCenter addObserver:self
selector:@selector(productsFetched:)
name:kProductFetchedNotification
object:nil];