2011-11-15 26 views
3

私は、自動更新可能な定期購読のために働く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を取得するにはどうすればよいですか?

+0

私はこれが古いと知っていますが、他の誰かのために...もしあなたのアプリがプレミアム機能をあまりにも早く制限しているのであれば、サブスクリプションがまだアクティブかどうかを判断するために "status"値を使用する方が良いでしょう。 0 =アクティブ、他は何も=アクティブではありません。私のアプリでは、Appleとの領収書を確認してからキャッシュします。私はサブがアクティブであるかどうかを判断するために "ステータス"を使用します。キャッシュされた領収書は常に有効になるので、新しい確認呼び出しをいつ呼び出すかを知るために有効期限を使います。 –

答えて

3

サンドボックスモードでテストしており、運用モードではテストしていません。

この場合、サブスクリプションはずっと短くなります.7日のサブスクリプションはわずか5分で、1年間のサブスクリプションは1時間後に失効します。

+0

これは本当に質問に答えますか?私は今この問題を調査していますが、サブスクリプションが5分か7日かどうかは重要ではありません。「レシート」は以前の有効期限を報告するため、アプリはまだサブスクリプションが期限切れになっているランニング。私はポスターと同じ動作をします、アプリは期限切れだと言いますが、もう一度購入しようとすると、iOSはサブスクリプションがまだアクティブであると私に伝えます –

+0

ありがとうございました! –

関連する問題