9

アプリケーションで非消耗品を提供しています。

ユーザーがそのアイテムを購入し、同じIDを持つ別のデバイスにそのアプリケーションをインストールしようとしたとします。ユーザーがログインしていて、そのアイテムをすでに購入している場合は、ポップアップを表示して、すでに購入していることをユーザーに伝えたいので、今すぐ無料でダウンロードします。今、アイテムをもう一度クリックして購入すると、それはあなたがすでにそのアイテムを購入したということですクリックしてダウンロードしてください。

ユーザーのログイン情報を取得し、ユーザーがすでにアプリ内購入を行っているかどうかを確認する方法はありますか?

ログインして購入済みのアイテムを購入しようとすると問題が発生します。2種類のアラートビューが時々表示されます。サンドボックス環境を使用しています。

  1. すでに購入していますが、まだダウンロードされていません。[OK]をタップして今すぐダウンロードしてください。このアラートビューには[OK]ボタンしかありません。[OK]を押すと、コントロールは-(void)failedTransaction:(SKPaymentTransaction *)transactionに移動します。

  2. すでに購入済みです。[OK]をタップして、無料で再度ダウンロードします。このアラートビューには、[キャンセル]と[OK]の2つのボタンがあります。OKボタンを押すと、コントロールは-(void)completeTransaction:(SKPaymentTransaction *)transactionに移動します。これは問題ありません。

トランザクションがこの独特の振る舞いを示している理由のアイデア。

ありがとう

4

3 に答える 3

6

なぜあなたが何か違うことをする必要があると思うのか分かりません。

あなたが言ったように、システムはユーザーがすでに製品を所有していることを検出し、ユーザーに「クリックしてダウンロード」アラートを出します。ユーザーがダウンロードを選択した場合、SKPaymentTransaction状態が「購入済み」または「復元済み」のいずれかを取得します(どちらかを忘れています)。次に、通常どおり製品を提供します。したがって、ユーザーは2回目の請求が行われていないことを認識し、製品を入手します。

ユーザーが何もしなくても、ユーザーが所有している製品を自動的に検出したい場合は、に送信restoreCompletedTransactionsすることによってのみそれを行うことができますSKPaymentQueue。これを行うと、ユーザーは自分のiTunesパスワードを入力しなければならない場合があります。UIに「購入を復元」ボタンを表示するだけで、ユーザーはパスワードの入力を求められた理由を知ることができます。

于 2012-05-03T06:07:50.093 に答える
0

サンドボックスには多くの安定性の問題があるようです。AppleDeveloperForumのこのスレッドhttps://devforums.apple.com/thread/164500?tstart=0を参照してください(ログインが必要です)。消耗品を使用してアプリ内購入をテストしてきましたが、ケース2は見たことがありませんが、ケース1のみが表示されます(フォーラムで言及されているとおり)。だからあなたは時々2)を手に入れることさえ幸運だと思うかもしれません:(

于 2012-08-30T12:36:09.087 に答える
0

両方の問題に直面したので、私はそれらについて次のように考えています

1]私を含む多くの開発者は、デバイスを再起動することで最初の問題を解決しました。

2] 2番目の問題については、「購入済み」または「復元済み」のコールバックが「OK」のテーピングで呼び出されるため、製品自体が利用可能になります。

それが役に立てば幸い !

于 2014-01-12T08:26:02.753 に答える