2017-12-06 8 views
0

私はトランザクションキューオブザーバに来るトランザクションに含まれているtransactionReceiptを見てIAPを実装するために廃止予定のpre-iOS 7以前の方法を使用しているアプリを持っています。それは素晴らしい仕事でした。オブザーバの新しい実装は、新しいトランザクションが報告されているかどうか(状態はSKPaymentTransactionStatePurchased)を追跡し、キュー内に見つかったものがあれば(transactionReceiptではなく)を取得し、それをサーバに送信します。アプリレシートはいつ新しい取引を取得しますか?

今日まで、アップルから返品された復号化されたアプリの領収書で、新しいトランザクションが常に「in_app」フィールドにあることがわかりました。今日私はサブスクリプションをテストしていますが(私が知る限りでは動作していますが)、サブスクリプション以外の非消耗品を注文すると、そのトランザクションはではなく、が "in_app"アプリの領収書を注文するまで非購読、非消耗品。その時点で、以前に注文された製品が「in_app」配列に表示されますが、新しく注文された製品は表示されません。

の両方とも、以前に購入したアイテムと新たに購入したアイテムが「latest_receipt_info」アレイに存在します。私はちょうど "in_app"の代わりにその配列を使用するだろうが、私はサブスクリプションをテストするまで "latest_receipt_info"を見ていなかったので、常にそこにいるとは思わない。

質問:ステップがありませんか?トランザクションキューオブザーバでアプリレシートをリフレッシュする必要がありますか?もし私がそうした場合、Apple IDの資格情報がわかりにくい(注文して資格情報を入力しただけで、もう一度やり直さなくてもいい)ようにユーザーに促すのではないでしょうか?

答えて

0

私はあなたが一歩足りないとは思わない。私は消耗品の購入がディスクレシート上にすぐに現れないのは奇妙だと思うが、これは正常な動作である可能性がある、わからない。

レシート更新をいつでも開始できます。ユーザーが非消耗品を購入して購入フローを行った場合、にはに別のログインポップアップが表示されません。

もう1つの方法は、サーバ側でlatest_receipt_infoを真実のソースとして使用することです。このフィールドは、リクエストJSONのpasswordフィールドにiTunes Connect App固有のシークレットシークレットを送信した場合にのみ表示されます。

個人的には、latest_receipt_infoを使用します。

+0

私はあなたがIAPについて何か知っている唯一の人だと思います。 :-) – Craig

関連する問題