4

OK、私は IAP を iOs アプリに実装していますが、ストア内の一部の製品のみが実際にネイティブの購入処理ダイアログをトリガーします。

バックグラウンド:

このアプリは、クロスプラットフォーム対応のために JavaScript バインディングを備えた cocos2dx を使用します。ストア処理を実装するために、iOs のネイティブ セクターに取り組んでいます。

これらの呼び出しはすべて正しく機能します。

[[SKPaymentQueue defaultQueue] addTransactionObserver:self];
[SKPaymentQueue canMakePayments];
[[SKProductsRequest alloc] initWithProductIdentifiers:productIdentifiers];

ラストについて追記。すべての製品 ID がチェックされ、productsRequest:request didReceiveResponse:responseコールバックで有効なものとして返されますが、送信される ID にバンドル ID が含まれていない場合のみです。私が見たほとんどの例は、これが必要であると言っていましたが、含まれている場合はすべて として返されinvalidProductIdentifiersます。これは問題を示している可能性がありますか?

そのため、現在、一部の製品は、(以前に検証された) ID が に渡された後、ネイティブの購入確認ダイアログを表示し[[SKPaymentQueue defaultQueue] addPayment:payment]ます。それらのほとんどは、その後何もしません。コールバックなしpaymentQueue:queue updatedTransactions:transactions、エラー コードなし、クラッシュなし。

一部の機能とほとんどの機能が機能しない理由のパターンがわかりません。消耗品、非消耗品、サブスクリプションの作品が少なくとも1つあるので、それはないと思います。の後にコードを中断してステップ実行すると、[[SKPaymentQueue defaultQueue] addPayment:payment]一貫性はありませんが、いくつかの製品がより頻繁に動作する可能性がわずかにあることがわかりました。これにより、スレッドの問題である可能性があると思いましたが、以下で試したことがわかりますが、役に立ちませんでした.

私が試したこと:

SOや他の場所を読んで、人々はtest usersを変更し、 でキューをクリアし[[SKPaymentQueue defaultQueue] finishTransaction:transaction]、Apple の Sandbox サーバーには「問題がある」場合があることを提案しました。しかし、これで修正されたものはなく、クラッシュやエラーが発生しないのは奇妙に思えます。特定の製品IDにまったく反応しません。

これが私が試したいくつかのことを含む実際の呼び出しです:

- (void)purchaseProductWithId:(const char*)item_code
{
   /** OCCASIONALLY MAY NEED TO CLEAR THE QUEUE **
   NSArray *transactions = [[SKPaymentQueue defaultQueue] transactions];
   for(id transaction in transactions){
      [[SKPaymentQueue defaultQueue] finishTransaction:transaction];
   }// */

// dispatch_async(dispatch_get_main_queue(),^ {
      SKPayment *payment = [SKPayment paymentWithProductIdentifier:[NSString stringWithUTF8String:item_code]];
//    [[SKPaymentQueue defaultQueue] performSelectorOnMainThread:@selector(addPayment:) withObject:payment waitUntilDone:NO];
      [[SKPaymentQueue defaultQueue] addPayment:payment];
// } );
}

他に役立つコードがあれば教えてください。

ご協力いただきありがとうございます。

編集:このhasAddObserver質問からチェック を追加しましたが、それも問題ではありません。

4

1 に答える 1

1

一時的なものであることが判明しました。Apple のサンドボックス サーバーが不安定であると非難するのは気が進まないのですが、何も変更されず、数日後に突然機能するようになりました。

同様の問題が発生した場合は、休憩を取って後で戻ってきてください。

于 2014-01-22T18:05:00.720 に答える