3

我正在使用最新的 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];

它甚至不会发回错误,因此用户不会收到任何消息。

我想这应该是一个普遍的问题?我该如何以最好的方式处理它?

4

1 回答 1

4

我通过评估解决了它...

MKStoreKit.sharedManager.pricesDictionary.count == 0

...知道我是否应该告诉用户 App Store 无法购买。然后我尝试使用这种方法重新加载产品数据......

https://github.com/MugunthKumar/MKStoreKit/issues/75

...每次用户有兴趣购买并且 App Store 根据上述不可用时。

为了在产品下载并准备好购买时更新 UI,我听取了此通知...

[NotificationCenter addObserver:self
                       selector:@selector(productsFetched:)
                           name:kProductFetchedNotification
                         object:nil];
于 2012-08-12T00:35:26.120 回答