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 に答える