web-dev-qa-db-ja.com

iPhoneアプリ内購入ストアキットエラー-1003「iTunes Storeに接続できません」

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

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

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

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

45
Rei

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

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

40
Ortwin Gentz

エラー0「iTunes Storeに接続できません」(OPが尋ねたエラー-1003ではないが、エラー0のWeb検索もここにつながる)を受け取っている場合、これは2つの問題の可能性があります。

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

問題#1を修正するには、正しい製品IDを渡します。問題#2を修正するには、iTunes Connectで新しいテストユーザーを作成し、オプションで古いテストユーザーを削除します。

25
Adam Rosenfield

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

14
HelloWorld

[設定]で正しい日付と時刻が設定されていることを確認してください。それ以外の場合、ストアへのSSL接続の作成に失敗します!!

11
k3a

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

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

その後、App Storeにアクセスして(別の実際の購入を試みたとき)、彼らが私に確認してほしい新しいユーザー契約があることを知りました。それを行った後、自分のアプリに戻ってテスト購入をもう一度試したところ、正常に動作し、それ以来エラーはありませんでした。だから私は彼らが私に新しいユーザー同意書を検証してほしかったので私はエラーを受け取っていたのではないかと思う。

今私が疑問に思うのは、アプリ内購入でユーザーに不可解なエラーを表示する代わりにそのプロンプトを転送する方法があるかどうかです。

2
frandogger

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

1
lifjoy

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

@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クラス参照エラーの議論には次のように書かれています。

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

transaction.error.localizedDescription is "Cannot connect to iTunes Store"!は一般的なエラーメッセージです。InAppPurchasesのテスト中にもこのエラーメッセージが定期的に表示されます。

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

  1. SKProductsRequestを使用してアプリストアからすべての製品を取得し、response.productsには、要求されたproductIdentifierが含まれます。この用途のために、

    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. また、In App Purchaseを構成したのと同じapp-idプロビジョニングを使用します。

ありがとう

1
Naveen Shan

私は2日間立ち往生しています、ここに私の解決策があります:

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

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

0
iiley Chen

私の場合、インターネットですべてを試しましたが、何も機能しませんでした。

Appleは実際に本番支払いシステムとサンドボックスを壊しました。私は2日間待たなければならなかった、とそれが動作し始めました。

0

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

0
wasabi

ここでスレッドで提供されるすべてのソリューションを試しましたが、役に立ちませんでした。私の場合、アプリ内購入プロビジョニングプロファイルのバンドル識別子を作成するときに使用したものと同じドメイン名で始まるワイルドカードバンドル識別子がありました。

ここに私が問題を修正した方法があり、あなたの修正に役立つかもしれません(添付を参照):

1)iPhoneをMacに接続します。

2)[デバイス]([Xcode]> [ウィンドウ]メニュー> [オーガナイザー]ウィンドウ)で、iPhoneの[プロビジョニングプロファイル]オプションを選択します。 iPhoneに現在存在するすべてのプロビジョニングプロファイルが表示されます。

3)バンドル識別子の特定のドメイン名(com.MYDOMAIN。*)で始まるすべてのプロビジョニングプロファイル、特に、アプリ内購入を実行できる機能で特別に作成したものを除くワイルドカードを使用するもの(com .MYDOMAIN.inappidentifier)。

4)アプリを新たにインストールし、新しいiTunes接続テストユーザー(サンドボックス)で実装をテストします

スクリーンショット:

enter image description here

0
programmer

In-App Purchase FAQ のコメント:

iTunes Storeに接続できません

「iTunes Storeに接続できません」問題は、次の1つ以上の理由による可能性があります。

  • サンドボックスに到達できない可能性があります。
  • アプリにバンドルバージョン(CFBundleVersion)がありません。詳細については、バージョン番号とビルド文字列の設定を参照してください。
  • アプリはシミュレータで実行されていますが、シミュレータはアプリ内購入をサポートしていません。
  • 販売できない製品を購入しようとしています。詳細については、アプリのストアUIを表示する前に、製品情報をApp Storeに照会するをご覧ください。

私の場合、Xcodeシミュレーターを使用していたためエラーが発生しました。デバイスを使用すると動作し始めました。

In-App Purchase Programming Guide でも、開発iOSデバイスを使用するように言われているに推奨されるテスト手順があります

0
ricardopereira

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

0
Can Gülse

残念ながら、ここに記載されていない問題に遭遇しました。アプリ内購入およびアプリ内購入に関連するすべての契約を承認するまで、アプリ内購入は機能しません。 iTunesConnectですべての契約を適切に設定していることを確認してください。must「Contracts In Effect」セクションに表示され、購入が機能します。

0
Thomas Kekeisen

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

0
trcarden

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

0
Rei

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

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

0
PerimeterMan

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

1)別の(動作している)アプリからIAPコードをコピーしましたが、オブザーバーの設定ができませんでした:

observer = [[IAPHelper alloc] init]; [[SKPaymentQueue defaultQueue] addTransactionObserver:observer];

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

0
JanB