2012-04-03 7 views
15

私の踏み台はどうですか?アプリ内購入トランザクションの領収書をいつ有効にする必要がありますか?

1)SKPaymentTransactionStatePurchased

2)[[SKPaymentQueue defaultQueue] finishTransaction: transaction];

3)検証により領収書を、コンテンツをSKPaymentQueueからそれを削除し、提供を取得し、それが無効だ場合、その後、ブロック私が今まで提供したコンテンツ

または、代わりに第2ステップを第3に変更する必要がありますか?

1)

3)はとにかくSKPaymentQueueから[[SKPaymentQueue defaultQueue] finishTransaction: transaction];

それを削除したコンテンツ SKPaymentTransactionStatePurchased

2)検証領収書を入手し、それが無効だ場合、その後、dont'tを提供

最初のシナリオのユーザー購入後すぐにインターネットをオフにすることができますので、領収書の有効性を確認することはできません。しかし、第2段階では、ステップ1と2の間にインターネットに関する問題が発生する可能性があるので、トランザクションを終了せず、コンテンツを提供しない、それはユーザーエクスペリエンスが悪いことです。

あなたのアプリをどのように選択したのですか?その理由は何ですか?私は最初のいずれかを選択するので、2番目のシナリオを選びだしました

マイ・チョイス・

は私のアプリを簡単にIAPクラッカーによって亀裂が入ります。

+0

私はまた、この答えに興味深いです。私は現在、あなたの最初のアプローチを行っています。それはユーザーエクスペリエンスが向上していて、悪用するのが難しいからです(私はバックグラウンドで領収書を検証しようとしています)。 –

+0

私のアプリケーションの1つを選択することにしました –

+0

アプリケーションコード内からコンテンツ(有効な領収書)をダウンロードするかどうか(無効な領収書)そうであれば、 'if(valid)'を 'if(1)'に変更するだけです。私の答えを見てください。 –

答えて

9

シナリオ2 インターネットが爆発すると、-finishTransactionにはなりません。 しかし、それはクールだ、あなたが再試行することができます(NSTimer)とあなたのアプリは起動時に未完成のトランザクションが与えられます。 そしてそれはで、正確にはです。StoreKitはどのように動作するように設計されていますか(ドキュメントを読んでも分かりませんが)。

StoreKitには、理由があるため、トランザクションが付属しています。ユーザーは購入後すぐにアプリケーションを終了することができますが、それでも回復する必要があります。 そのため、アップルはアプリケーションライフサイクルの中でできるだけ早くトランザクションオブザーバを設定することを推奨しています。

コンテンツを提供する前にトランザクションを終了しないでください。あなたはStoreKitの上に独自のトランザクションシステムを実装する必要があります。そうしたくない場合は、私を信じてください、 それは災害だった)。

編集:すべての正直なところ、購入した後、妥当性を確認する前に、最終的にインターネットをオフにするユーザーは、非常に低いです。その男はちょっと前にインターネットに乗っていましたが、誰も買い物の途中でインターネットを切断することはありません。 しかし、その時点でユーザーが中断してアプリをバックグラウンドに送信する可能性があります。 あなたのアプリは、iOSが適切だと考えている理由を問わず殺される可能性があります。 そして、あなたがもう一度アプリを始めると、あなたのアプリは購入を覚えていませんし、ストアキットはすでにトランザクションを完了しているので大きな助けにはなりません。

+0

はい、iAPクラッカーによって私のアプリが簡単にクラックする可能性があることを見てから、このシナリオに移行します。そして、はい、コフコース私はdidFinishLaunchingにオブザーバーを追加します)あなたの答えをありがとう! –

1

最初に確認します。それは2〜3秒かかります。この目的でReceiptKit https://github.com/maciekish/ReceiptKitを使用することができます。

+1

ReceiptKitは、制御されたサーバー環境での検証なしでレシートの検証をどのように支援しますか?ハックするのがとても簡単だと思いますか? –

3

これは私が何をすべきかです:

  1. のAppは、添付の領収書とコンテンツに対する要求を送信します。

  2. サーバーはiTunesで領収書を検証し、有効な場合は購入したコンテンツを元の要求の応答本文として返します。

この方法では、アプリのバイナリがハッキング/変更されても、コンテンツは有効な領収書に対してのみダウンロードされます。

関連する問題