46

アプリ内購入の追加に取り組んでおり、ストア キットを使用してアプリ内購入を作成およびテストすることができました (やった!)。テスト中に、購入中にアプリがクラッシュするような方法でアプリを実行しました (そのため、paymentQueue:updatedTransactions を受け取り、finishTransaction を呼び出す通常のサイクルが中断されたと思います)。

現在、トランザクションを正常に完了することができず、代わりに paymentQueue:updatedTransactions が呼び出されたときに transactionState SKPaymentTransactionStateFailed のトランザクションのみを取得しています。

transaction.error.code は -1003 で、transaction.error.localizedDescription は「iTunes Store に接続できません」です!

iTunesConnect からすべての製品を削除して、別の識別子を使用して再構築しようとしましたが、解決しませんでした。また、App Store アプリを使用して実際の App Store に実際に接続し、いくつかのアプリをダウンロードして、接続できるようにしました。最後に、Settings:Store アプリにアクセスして、通常のアプリ ストア アカウントからサインアウトしていることを確認しました。

4

20 に答える 20

40

私は似たような状況にあり、iPhone のネットワーク トラフィックをダンプして、何が起こっているのかを調べました。サンドボックスではなく、通常のストアに連絡したことがわかりました。デバイスからアプリを削除し、クリーンにして、再度ビルド/インストールするのに役立ちました。どうやら、開発プロファイルで何か問題が発生したようです。

更新:ジェイルブレイクされていない iPhone のネットワーク トラフィックをダンプするには、Mac でインターネット共有を使用し、Mac の WiFi を使用するように iPhone を構成します。次にtcpdump -n -i en1、Macでトリックを行います。

于 2011-01-23T13:11:34.293 に答える
26

エラー0「iTunes Storeに接続できません」(OPが尋ねたエラー-1003ではないことに気づきましたが、エラー0のWeb検索でもここにつながります)が発生した場合、これは2つの考えられる問題が原因である可能性があります。

  1. 間違った製品 ID を渡しています。その場合、 を呼び出した直後、-[SKPaymentQueue addPayment:]支払いの確認を求めるポップアップが表示される前に、エラー 0 が表示されます。
  2. テスト ユーザーが無効になりました。これは、テスト ユーザーで誤って App Store にログインした場合に発生する可能性があります。この場合、パスワードを入力して支払いを確認した後、エラー 0 が表示されます。

問題 1 を解決するには、正しい製品 ID を渡します。問題 2 を解決するには、iTunes Connect で新しいテスト ユーザーを作成し、必要に応じて古いテスト ユーザーを削除します。

于 2011-08-24T14:41:20.670 に答える
15

同様の問題があり、Code=0で「iTunesStoreに接続できません」という問題が発生しました。証明書の再ダウンロードからすべてのデバイス設定のリセット、処女の黒ヤギの犠牲まで、インターネット上で見つかった他のすべての儀式的なアドバイスを試した後、これが私がそれを解決した方法です:

アプリのターゲットサマリーでは、以前は「ビルド」フィールドにバージョン番号がありましたが、「バージョン」フィールドには何もありませんでした。これは私には奇妙に思えたので、バージョン番号を「ビルド」から「バージョン」に移動しました。これにより、前述のエラーが発生しました。バージョン番号を「ビルド」に戻すと、エラーが解決しました。

于 2011-09-24T19:02:39.350 に答える
14

アプリの新しいテスト ユーザーを追加します。

于 2011-01-01T02:47:23.053 に答える
11

設定で正しい日付と時刻が設定されていることを確認してください。そうしないと、ストアへのSSL接続に失敗します!!

于 2011-06-14T13:20:15.433 に答える
6

同じエラーが発生し、開発者フォーラムのいくつかのスレッドを読んだ後、デバイスの設定をリセットし ([設定] -> [一般] -> [リセット] -> [すべての設定をリセット])、クリアしました。劇的に見えましたが、うまくいきました。

于 2011-07-01T20:06:46.027 に答える
2

どこからともなく現れたような同じエラーが発生しました (ある日は正常に動作していましたが、次の日には、アプリ内購入をテストしようとした 3 回ごとに約 2 回これらのエラーが発生していました)。

それから私は (別の実際の購入を試みたときに) App Store にアクセスし、彼らが私に確認を求めている新しいユーザー契約を持っていることに気付きました。それを行った後、自分のアプリに戻ってテスト購入を再試行したところ、正常に機能し、それ以来エラーは発生していません. したがって、新しいユーザー契約を確認するように求められたため、エラーが発生したと思われます。

今、私が疑問に思っている唯一のことは、アプリ内購入で、ユーザーに不思議なエラーを与える代わりに、そのプロンプトをユーザーに転送する方法があるかどうかです?

于 2010-10-01T04:26:44.110 に答える
1

InSKPaymentTransactionStateSKPaymentTransactionStateFailed、リクエストがサーバー キューに追加される前であることを示します。

@class SKPayment;

enum {
    SKPaymentTransactionStatePurchasing,    // Transaction is being added to the server queue.
    SKPaymentTransactionStatePurchased,     // Transaction is in queue, user has been charged.  Client should complete the transaction.
    SKPaymentTransactionStateFailed,        // Transaction was cancelled or failed before being added to the server queue.
    SKPaymentTransactionStateRestored       // Transaction was restored from user's purchase history.  Client should complete the transaction.
};
typedef NSInteger SKPaymentTransactionState;

また、SKPaymentTransactionクラス参照エラーのディスカッションでは、次のように述べています。

error プロパティは、transactionState が に設定されている場合を除き、未定義SKPaymentTransactionStateFailedです。アプリケーションは error プロパティを読み取って、トランザクションが失敗した理由を判断できます。

したがって、transaction.error.localizedDescription は「iTunes Store に接続できません」です! は一般的なエラー メッセージです。アプリ内購入のテスト中に、このエラー メッセージが定期的に表示されます。

あなたができるいくつかのヒントは、

  1. を使用してアプリ ストアからすべての製品を取得し、要求された が含まれていることSKProductsRequestを確認します。この使用のために、 response.productsproductIdentifier

    SKProductsRequest *request = [[SKProductsRequest alloc] initWithProductIdentifiers:[NSSet setWithArray:[objProducts allKeys]]];
    //pass product identifier array as argument
    [request start];  
    

そして、応答をキャッチします:

    - (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response{
        NSArray *myProduct = response.products;
}

アプリストアと通信できるかどうかを判断できるようにします。そしてあなたの製品IDはそこにあります。

  1. テストには、必ずアプリ内テスト ユーザー アカウントを使用してください。
  2. また、アプリ内購入で構成したのと同じアプリ ID プロビジョニングを使用します。

ありがとう

于 2011-01-25T09:55:38.770 に答える
1

私にとってうまくいったのは、テストデバイスからアプリをアンインストールしてから、Xcode から新しいコピーをインストールすることでした。

于 2011-09-08T19:27:01.403 に答える
0

私たちの問題は、Itunes Connect で間違ったバンドル ID を持っていたことです。誰かが事前にアプリを作成していたので、アプリを編集して appId を新しいものに設定する必要がありました。

于 2013-02-22T23:40:11.567 に答える
0

残念ながら、ここに記載されていない問題に遭遇しました。アプリ内購入は、アプリおよびアプリ内購入に関連するすべての契約に同意するまで機能しません。したがって、あなた (またはあなたの顧客) が iTunesConnect ですべての契約を適切に設定していることを確認してください。購入を機能させるには、契約が「有効な契約」セクションに表示される必要があります。

于 2012-11-12T11:49:42.717 に答える
0

iTunes アカウントからログアウトして (今はテスト アカウントにログインしないでください!)、プログラムを起動します。アプリ内購入時にログインの詳細を尋ねる場合は、テスト アカウント情報を入力する必要があります。

于 2015-01-16T13:40:08.677 に答える
0

App Store に行ってから、Settings/Store に戻ってサインアウトすることをいじりました。これを 3 回行い、毎回アプリにアクセスして NSLog 出力のデバッグを追加しました。これで、アプリ内購入コードをエラー -1003 なしで引き続きテストできるようになりました。これが再び機能する正確な理由はわかりませんが、NSLogs を追加してアプリを再実行するだけだったので、コードの変更ではないことは確かです。

于 2009-11-11T20:52:26.990 に答える
0

これを引き起こした2つの問題がありました:

1) 別の (動作中の) アプリから IAP コードをコピーしましたが、オブザーバーのセットアップを見逃していました。

オブザーバー = [[IAPHelper alloc] init]; [[SKPaymentQueue defaultQueue] addTransactionObserver:observer];

2) デバイスの設定で iTunes にログインしていました。サンドボックスで使用できるのはテスト ユーザーのみです。ログアウトしたところ、再び機能しました。

于 2014-10-18T10:44:20.333 に答える
0

ええ、最初に iPad/iPhone を別のコンピューターに接続し、現在別のコンピューターで使用している場合は、必ず iPad でストアからサインアウトし、通常のアカウントで MAC の ITunes にサインインしてから、同期する必要があります。 .

また、iPadの「WIF​​I」がオンになっていることを確認してください...

于 2010-05-05T20:29:40.213 に答える
0

私は2日間立ち往生しています。これが私の解決策です:

  1. アプリ内アイテムをすべて削除します。
  2. 新しいアプリ内アイテムを削除します。
  3. サンドボックス テスターを作成します。
  4. デバイス (iPad) から Apple アカウントをログアウトしてから、製品を購入してみてください。
  5. ログインを求められ、サンドボックス テスター アカウントで再ログインします。
  6. 購入は通ります。

重要なのはサンドボックス テスター アカウントだと思います。常にエラー 0 になるので、これまで使用したことがありません。

于 2015-12-30T15:14:43.390 に答える
0

XCodeですべてのターゲットをクリーンアップし、デバイスからアプリケーションを手動で削除してから、XCodeからビルドして実行すると、同様の問題が修正されました(同じエラーメッセージですが、エラーコードが異なります:-1009)

于 2011-02-16T14:50:32.320 に答える