私は、自動更新可能な定期購読のために働くStoreKitを持っており、サンドボックスを使って定期購読を購入して更新することができます。ここまでは順調ですね。StoreKit - 有効期限を取得するにはどうすればよいですか?
私が抱えている問題は、Appleによって返された有効期限が正しくないということです。
最初に購読を購入すると、receipt
という応答が表示されます。この応答では、expires_date_formatted
が表示されます。これはAppleから返された応答の一部であるreceipt
またはlatest_receipt_info
の一部です。
サブスクリプションの有効期限が切れたときは、latest_expired_receipt_info
の回答が返されます(これは通常の購入では表示されず、期限が切れた場合にのみ表示されます)。
latest_expired_receipt_info
は、別の日付がexpires_date_formatted
に格納されていて、それが私にあらゆる種類の頭痛を引き起こします。
通常、私のアプリはサブスクリプションの有効期限が切れていると報告しますが、サブスクリプションを購入しようとすると、サブスクリプションはまだ有効であると表示されます。
これは、latest_expired_receipt_info
の日付が正確であることを暗示しているようですが、その日付を取得する方法はないようです(ただし、定期的に期限切れにしない限り)。
例:上記の例で
receipt (stored) = {
bid = "myappid.goeshere";
bvrs = "1.0";
"expires_date" = 1321365095905;
"expires_date_formatted" = "2011-11-15 13:51:35 Etc/GMT";
...other stuff....
}
latest_expired_receipt_info = {
bid = "myappid.goeshere";
bvrs = "1.0";
"expires_date" = 1321366860000;
"expires_date_formatted" = "2011-11-15 14:21:00 Etc/GMT";
...other stuff...
}
、我々はexpires_date_formatted
が全く異なっていることがわかります、一つは13時51言う、他は14時21分
は違いが他のテストではできると言います数分から10分または20分の間であれば何でも構いません。
正しいexpires_date_formatted
を取得するにはどうすればよいですか?
私はこれが古いと知っていますが、他の誰かのために...もしあなたのアプリがプレミアム機能をあまりにも早く制限しているのであれば、サブスクリプションがまだアクティブかどうかを判断するために "status"値を使用する方が良いでしょう。 0 =アクティブ、他は何も=アクティブではありません。私のアプリでは、Appleとの領収書を確認してからキャッシュします。私はサブがアクティブであるかどうかを判断するために "ステータス"を使用します。キャッシュされた領収書は常に有効になるので、新しい確認呼び出しをいつ呼び出すかを知るために有効期限を使います。 –