レシートのverifyとSandbox

StoreKitを使ってアプリ内でアイテムの購入が行われると、レシートが発行されます。Appleは不正防止のため、レシートの内容が正しいかどうかverifyする機構を用意していますが、この機構を使うには若干注意が必要です。 “レシートのverifyとSandbox” の続きを読む

Non consumableプロダクトとRestoreボタン

最近妙に目立つ位置にアプリ内課金用のRestoreボタンが追加されたアプリが多いなと思ったら、どうもアプリ内課金で購入したプロダクトのリストアに関する審査が少し変化してきているようです。 “Non consumableプロダクトとRestoreボタン” の続きを読む

StoreKitのバックグラウンド時のトランザクションの挙動が少し変わった件

Twitterで@naokitsさんに教えていただいたので検証してみました。以前この記事に書いた通り、今まではトランザクションが進行中にアプリがバックグラウンドに移行してしまうと、トランザクションオブザーバーがトランザクションのアップデート通知を受け取れなくなってしまうという問題があったのですが、最近この挙動に変更があったようです。幸い手元にiOS 5.1.1, 5.0, 4.3.3の端末があったのでそれぞれで検証してみました。 “StoreKitのバックグラウンド時のトランザクションの挙動が少し変わった件” の続きを読む

SKPaymentQueueのaddPaymentとTransaction

StoreKit APIを使う上で不便な点の一つに、生成したTransactionを追跡するのが難しい、という問題があります。PaymentをQueueに積むとTransactionが生成されますが、その生成されたTransactionの情報を取得する方法について調べていきましょう。
“SKPaymentQueueのaddPaymentとTransaction” の続きを読む

SKPaymentTransactionについてkwsk

StoreKitのトランザクションには、トラブルが発生した際に重要になる情報が多く含まれています。SKPaymentTransactionオブジェクトに含まれる情報と、それらの挙動について確認していきましょう。なお、複雑になるのでNon-Consumableプロダクトのリストア関連の項目については、基本的に省略しています。 “SKPaymentTransactionについてkwsk” の続きを読む

StoreKitトランザクションとFast App Switching

久しぶりにStoreKitについての記事です。In-App Purchase Programming GuideStoreKit Framework ReferenceにはFast App Switchingやスリープに関する説明がありません。しかし、購入手続きの途中にアプリ切り替え(Fast App Switching)が発生すると、アプリケーションは正しくトランザクションの状態変化を把握できなくなってしまいます。そこで、この問題についての対策を考えます。
※2012/05/22追記 この部分の挙動が変更になったようです。再検証を行ったのでこちらの記事を参照してください。

注意

この記事は、Apple公式ドキュメント類では説明/推奨されていない実装方法についての考察です。挙動や実装は将来的に大きく変わる可能性があり、動作は一切保証できません。参考にする程度にとどめ、もし下記に書かれている内容を実装する場合は自己責任で行ってください。 “StoreKitトランザクションとFast App Switching” の続きを読む

StoreKit(組み込みプロダクトモデル編) まとめ

というわけで、StoreKitの挙動について細かく検証してきましたが、少なくとも組み込みプロダクトモデル編については、ここから先はかなり細かい話になってきてしまうので一旦ここでまとめておきます。
なお、この情報は2011年11月現在のiOS 5.0におけるもので、将来的に仕様が変わっている可能性があります。また、公式ドキュメント等には記載されていない独自の検証に基づく見解が含まれます。参考程度に読んでください。そして気づいた点を躊躇せず指摘してください。 “StoreKit(組み込みプロダクトモデル編) まとめ” の続きを読む

StoreKit トランザクションの重複を防ぐ

トランザクションが複数できると面倒なことになると前回のポストで書きました。特に購入手続きの途中でアプリケーションが終了してしまったような場合は、アプリケーション側で少し面倒ですが対策をいれないと問題を回避できません。 “StoreKit トランザクションの重複を防ぐ” の続きを読む

StoreKit Consumableプロダクトの二重購入

トランザクションの中断と再開について、さらにケースを見ていきます。未完状態のトランザクションが既にある状態で、新しいペイメントをリクエストした場合の挙動について。厄介です。 “StoreKit Consumableプロダクトの二重購入” の続きを読む