iphoneTweet[追記1]サンドボックス環境では自動継続がある条件下でオフになることがあるそうです。この記事の情報は不正確な可能性があるため、近日中に検証します。[追記2]調査したところ、iPadで2ヶ月購読した場合は動作することは確認できました。現状ではアプリに組み込んでリリースするのは危険だとは思います。Subscrptionに関する問題など注意点まだ新しい定期購読型のアプリ内課金を使ったアプリはリリースしていません。不明な点があるため間違いなどありましたら、ぜひご連絡ください。自動更新後、アプリ側から有効期限を確認する方法が正しいかどうかが不明です。新しい定期購読型のアプリ内課金は何が違うの?新しい定期購読型のアプリ内課金は、Appleが2011/2/15に発表した自動更新型の課金サービスです。今までもアプリ内課金では購読型(Subscription)があったのですが、定期購読の期限の管理や更新時の請求は開発者任せなため、外部サーバを必要としました。今回追加された自動更新(Auto-Renewable)は自動更新で課金されるため、購読情報をApple側に任せることが出来ます。購読期間1週間1ヶ月2ヶ月3ヶ月6ヶ月1年クレイではアプリ内課金と連携したコンテンツ管理システムを持っているため、今回の新しい課金サービスにも対応出来るように調査、実装してみました。実装の流れと注意点ドキュメントを読むと、既存の非消耗型(Non-consumables)と同じクライアントのコードがそのまま使えると書いてあります。IDを変更するだけで決済自体は出来るのですが、次の点に注意する必要があると思います。アプリから定期的に有効期限を確認する自動更新を途中で止めた場合にアプリから確認する方法が必要。アプリから購読情報を復元するアプリを削除して再インストールした後など購読情報を取得する方法が必要。上記の点を考慮して、次のような流れで組んでいきます。connectに自動更新の商品を追加する必要があるのですが、その前にやることが増えています。Secretというユニークなコードを作成する必要があります。これを取得してレシートを確認する時に一緒に送ることで購読情報を取得することが出来るようになります。ボタンを押してください。Bankingの新しい規約を承認してください。非消耗型と同じ購入を実装わかりやすいようにまず非消耗型の決済の実装を行います。以前の記事で実装について詳しく書きましたので、そちらを参考にしてください。有効期限を確認するためにはレシートをAppleのサーバに投げることで行います。Appleのサーバは本番環境とSandbox環境で違うので注意してください。21006は期限切れの場合のレシートの時のエラーコード。リストア処理の場合に発生するためアラート処理は除外する。}}expires_dateとlatest_receiptをアプリに保存して確認用に利用するのが良さそうです。TRConfigは設定を保存するクラス、KKALERTはアラートを表示するマクロです。起動時やバックグラウンドから復帰した場合に、有効期限を確認するようにします。TRConfigやTRStorekitといったクラスが書かれていますが、アプリに保存したlatest_receiptをAppleのサーバに投げて確認しています。今回実装してみてわかったことなのですが、アプリを一度削除してから再インストールした後で、購入ボタンから購入するフローでは購読情報を取得できないようです。いうのは購入済みの状態で購入ボタンを押すと最初に「購入しますか?」のアラートが出て、OKを押すと「購読済み」のアラートが出ます。そのままOKを押すと購入自体はキャンセル扱いになってしまうようです。(非消耗型の場合、一度購入したアイテムを再度購入しようとすると、「このアイテムはすでに購入されています。一度無料でダウンロードするにはOKをタップします。」と出て、OKを押すとそのまま購入になります。)わかりにくいので、実際のコードで説明しますと、下記の流れの中で、SKPaymentTransactionStateFailedが返ってきてしまって購入処理が終わってしまいます。そのため、復元は別のボタンで実装した方が良さそうだと判断しました。