3

アプリの購入をチェックインするためのテスト アカウントを作成しました。購入でき、購入に成功しました。その後、ナビゲーションにバグが見つかりました。バグを修正し、別のアカウントを作成し、以前のセッションでログインしたアカウントを削除しました。アプリストアは、まだ存在しないゴーストアカウントで自動的にログインするため、アプリ内購入をテストできなくなりました。各デバッグ セッションの前に [設定] でストアからサインアウトし、以前のバージョンのアプリケーションを削除しているにもかかわらず、パスワードの入力のみを求められます。これをリセットするにはどうすればよいですか?

ありがとう、

ナバ

4

3 に答える 3

1

これは古いトピックであることは知っていますが、解決策を見つけるのに苦労し、解決策が見つかるまで試行錯誤を繰り返したので、他の場所で見つけることができなかったので、ここで共有すると思いました.

まず、呼び出したトランザクションごとに次のことを確認してください。

    [[SKPaymentQueue defaultQueue] finishTransaction:transaction];

私の場合、トランザクションが完了せずキューに残っていたため、別のサンドボックス アカウントに切り替えても、古いアカウントのパスワードを要求し続けました。

それを修正するために追加しました:

SKPaymentQueue *queue = [SKPaymentQueue defaultQueue];
for (SKPaymentTransaction *transaction in queue.transactions) {
    [[SKPaymentQueue defaultQueue] finishTransaction:transaction];
}

トランザクション オブザーバーを追加する前に、つまり次のようにします。

[[SKPaymentQueue defaultQueue] addTransactionObserver:self];

また、

(void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions

関数に、次のコード行を追加しました。

[queue finishTransaction:transaction];

switch ステートメントの SKPaymentTransactionStateRestored および SKPaymentTransactionStateFailed ケース。私が知っていることから、それを終了することは許可されていないため、購入済みの状態に追加しないでください。

上記の 2 つの手順のどちらでバグが修正されたのかわかりません。iPhone からサインアウトし、アプリを削除し、電源を切り、クリーンな再構築/インストールを実行して、パスワードの入力を求めるのを最終的に停止するまでバグが持続したためです。盗まれたアカウント。これが誰かに役立つことを願っています。

編集: (11/12/15)

というわけで、サンドボックスアカウントが壊れる原因を突き止めました。購入を復元してからホームキーを押し、再度開いて復元ボタンをもう一度押すと、クラッシュが発生しました。復元はキューに残り、上記のプロセスがパスワードを要求するポップアップから抜け出す唯一の方法でした。

それを止めるために、私は追加しました:

[[SKPaymentQueue defaultQueue] removeTransactionObserver:self];

アプリ内購入マネージャー オブジェクトを nil する前に、メイン ビュー コントローラーの TearDown 関数 (applicationDidEnterBackground: によって呼び出されます) によって。何が起こっていたのかと思うと、オブジェクトをトランザクション オブザーバーとして複数回追加したため、奇妙な動作が発生していました。見たところ、エラーを再現できていないため、問題は完全に修正されたようです。

于 2014-11-11T01:09:45.027 に答える
1

私も同じ問題を抱えていました。これが私の問題を解決したものです:

  1. 設定 -> リセット -> すべての設定をリセット
  2. 設定 -> iTunes & App Store -> サインアウト
  3. アプリを削除する
  4. XCode からアプリを再起動します

更新:コードに次の行がないことが問題であることに気付きました:

[[SKPaymentQueue defaultQueue] finishTransaction:tran];

つまり、私の古い取引は完了しておらず、iPhone は以前に発生した古い取引を完了しようとしていました。この行をコードに追加すると、古いユーザー パスワード リクエストは発生しなくなりました。

于 2013-12-17T17:05:23.470 に答える
0

つまり、設定アプリ -> ストア -> サインアウトに移動しても、以前のテスト アカウントからユーザー名を引き続き取得するということですか? また、デバイスからアプリを削除しようとしましたか? それは私にとって同様の問題を修正しました。

于 2010-08-13T15:30:16.760 に答える