web-dev-qa-db-ja.com

iOSサンドボックス環境の自動更新サブスクリプション

IOSの自動更新可能なサブスクリプションに関して次の質問があります

a)自動更新サブスクリプションは、サンドボックス環境で本当に自動更新されますか?問題は、サブスクリプションが自動的に更新されないことですが、ドキュメントにはサンドボックス環境でも6回更新されるはずであると記載されています。

b)自動的に延長されたサブスクリプションの新しいレシートを取得するためにrestoreCompletedTransactionsを呼び出す必要がありますか、それとも-paymentQueue:updatedTransactions:メソッドがiOSによって自動的に呼び出されますか? (「起動」と「バックグラウンドからの回転」で自動的に呼び出されると思います)

c)複数のデバイスで同じサブスクリプションをどのように処理しましたか?これはrestoreCompletedTransactionsで処理できますが、呼び出すとユーザーにパスワードが要求されるため、アプリが起動するたびに呼び出すのはあまり便利ではありません。

27
2cupsOfTech

a)自動更新サブスクリプションは、サンドボックス環境で一貫性がありません。サブスクリプションは、終了する前に複数回(約5回)更新される場合があります。それ以外の場合は、まったく更新されません。

b)(iOS6トランザクションレシートのみ)サブスクリプションのステータスを確認するためにrestoreCompletedTransactionsを呼び出す必要はありませんif以前のレシートを(できればサーバーに)保存しています。 anyそのユーザー用に保存したサブスクリプションレシートを受け取り、確認のためにAppStoreに送信するだけです。現在のサブスクリプションステータスを判断するために使用できるlatest_receipt_infoを含むexpires_dateで応答します。

c)新しいユーザーに「以前の購入を復元する」ように促す必要があります。その時点でrestoreCompletedTransactionsを呼び出します。次に、これらの領収書の1つ(できればサーバーから)をApp Storeに送信して確認し、トランザクションに関するデコードされた詳細を取得します。領収書情報でキーoriginal_transaction_idを探します。これには、このユーザーが初めてサブスクリプションを開始したときのIDが常に含まれます。このIDをシステム内の他のIDと比較すると、どのデバイスがAppleアカウントを共有しているかを判断できるはずです。(Appleでは許可されていないため)ユーザーのApple IDを確認するには、これが複数のデバイスにまたがるアカウントを識別するための最良の方法です)。

この質問と同様: iOSの自動更新は現在のサブスクリプション期間の終了時に期限切れになります

29
Andrew

これに加えて、Appleのドキュメントの行が誤って解釈されているようです

更新は加速された速度で行われ、自動更新可能なサブスクリプションは1日に最大6回更新されます。これにより、アプリがサブスクリプションの更新、サブスクリプションの失効、ギャップを含むサブスクリプション履歴をどのように処理するかをテストできます。

これは、1日あたりのすべてのサブスクリプションが6回しか更新されないことを意味しているようです。各サブスクリプションではなく、キャンセルする前に6回更新されます。これはしばらくの間私を投げました。

また、24時間の期間のようです。特定の時間に更新されません。たとえば、午前11時に更新されなかったサブスクリプションを作成しました。午後2時にもう一度作り、6回更新しました。

10
AndyRyan