2

いくつかの質問に答えていただければ、理解を深めることができます。

  1. 新しいサブスクリプションと以前に購入したサブスクリプションの更新を区別する方法はありますか?

  2. サブスクリプションは、expires_date に到達した直後に更新プロセスを通過しますか? ときどき (少なくともサンドボックスでは) 私のサブスクリプションは、expires_date の 30 ~ 60 秒前に更新されるようです。

  3. expires_date に達した後、更新は常に一定の時間に行われますか? たとえば、アプリを起動し、expires_date が過ぎている場合、更新はいつ行われますか (ユーザーがキャンセルしなかったと仮定して)? というか、Apple 側で更新が行われたことをアプリが認識するのはいつですか?

  4. シナリオ: アプリが起動され、サブスクリプションの 1 つで expires_date が過ぎています。そのサブスクリプションが更新されたかどうかを確認するために Apple に領収書を送信する必要がありますか? それとも、更新プロセスが行われるかどうかを確認するために数秒待つ必要がありますか?

ありがとう!

4

1 に答える 1

4

私は自分の質問に答えようとします:

  1. これを行うには、最初の購入が完了したらexpires_dateサブスクリプションを保存します。NSUserDefaultsサブスクリプションの有効期限が切れたら、オブジェクトを から削除しますNSUserDefaults。これにより、後続のサブスクリプションが更新( expires_dateNSUserDefaults に存在 - 更新expires_date完了時に新規で更新) であるか、新規購入(expires_date以前のサブスクリプションの有効期限が切れたときに削除されたか、製品が購入されていないために存在しない) であるかを判断できます。 )。

  2. この質問は無関係です - 私がしているのは、アプリがフォアグラウンドに入るたびにexpires_date保存されNSUserDefaultsているものと比較することです。が を通過したcurrent_date場合、サーバーに電話して、Apple で受信を確認します。Apple はサブスクリプションのステータスをサーバーに返し (サブスクリプションが有効であることを意味し、有効期限が切れていることを意味し、アプリに関する限り、他のすべては些細なことです)、サーバーはそれをアプリに転送します。このように、サブスクリプションの有効期限が切れているかどうかは確実にわかっているため、アプリが更新のアラートを受け取るのにどれだけ時間がかかるかは問題ではありません (つまり、サブスクリプションは Apple を通じて技術的に更新されていますが、アプリはまだ知りません)。か否か。current_dateexpires_date021006

  3. サンドボックスでは、更新は非常に信頼できないようです。私のサブスクリプションは 5 回か 6 回 ( Apple によれば標準)更新されることもあれば、1 回更新されることもあれば、まったく更新されないこともあります。記録として、7 日間のサブスクリプションは 30 日間のサブスクリプションより頻繁に更新されません。ライブ サーバーと同じ信頼性がサンドボックスにもあればよいので、それに応じてコードを記述できます (そしてストレスも軽減されます) が、余談になります。サブスクリプションが更新されたことをアプリに警告するために私が発見した唯一の確実で一貫した方法は、expires_date has passed && I force close/relaunch my app. バックグラウンド状態とフォアグラウンド状態の切り替えが機能する場合もありますが、私の経験では、これは信頼性がはるかに低くなります。

  4. 私がしていることは、サーバーexpires_dateが通過したことに気付いたときにサーバーをチェックすることです (Apple をチェックします)。したがって、サーバーがサブスクリプションの特定のステータスを教えてくれるので、更新が前/後/決して発生するかどうかは問題ではありません。

この情報が、私と同じ質問をしている他の人に役立つことを願っています!

于 2012-06-19T18:49:36.433 に答える