2011-07-21 40 views
89

StoreKit関連のコードを書いていますが、購入をキューに追加しようとするとかなり厄介なエラーコードが表示されます。StoreKitを使用してNSURLErrorDomainエラーコード(-1001、-1003、-1004)が記載されていません

これまでのところ、私はエラーコード-1003と-1004を経験しましたが、インターネット上のコードについては何も見つかりません。

製品リクエストを実行すると、有効な製品番号が返されるため、[[SKPaymentQueue defaultQueue] addPayment:aPayment];への通話がなぜこの文書化されていない問題で失敗するのか分かりません。

同じコードが1つのデバイスでエラーなしで動作し、別のデバイスでエラーが発生することはありません。私が持っている

質問は、まだのように、応答がない:

これらのコードは何を意味するのですか? この問題を緩和するにはどうすればよいですか? 商品のリクエストではなく、購入の試みが行われているのはなぜですか?

私が行ったトラブルシューティングには、署名証明書とプロビジョニングプロファイルの再生成、WiFiネットワークの変更、関連するソフトウェアとコンポーネントのすべてのクリーニングと再インストール、およびこれらのいずれも個別にまたは一緒に問題を解決できませんでした。

EDIT:

はアップルのdevのフォーラムでこのことについて議論を見つけましたが、アップルから誰も答えていない:

私がしたhttps://devforums.apple.com/thread/107121?tstart=75 EDIT

(iOSデベロッパアカウントを表示するために必要)今日のエラーコード-1001でヒットし、この不可解な断続的な問題のリストに追加します。 Appleからの説明責任はまだありません。

EDIT:

私はこれらのエラーコードはランダムに生成されているという疑いを持っているし、本当に唯一のサンドボックスがダウンしていることを示しています。他の誰でもこの問題が発生しますか?

答えて

293

すべてのエラーコードは上のドキュメントの「CFNetworkはエラーコードの参照」(link

CFURLとCFURLConnectionエラーの小さな抽出です:

kCFURLErrorUnknown = -998, 
    kCFURLErrorCancelled = -999, 
    kCFURLErrorBadURL = -1000, 
    kCFURLErrorTimedOut = -1001, 
    kCFURLErrorUnsupportedURL = -1002, 
    kCFURLErrorCannotFindHost = -1003, 
    kCFURLErrorCannotConnectToHost = -1004, 
    kCFURLErrorNetworkConnectionLost = -1005, 
    kCFURLErrorDNSLookupFailed  = -1006, 
    kCFURLErrorHTTPTooManyRedirects = -1007, 
    kCFURLErrorResourceUnavailable = -1008, 
    kCFURLErrorNotConnectedToInternet = -1009, 
    kCFURLErrorRedirectToNonExistentLocation = -1010, 
    kCFURLErrorBadServerResponse    = -1011, 
    kCFURLErrorUserCancelledAuthentication = -1012, 
    kCFURLErrorUserAuthenticationRequired = -1013, 
    kCFURLErrorZeroByteResource  = -1014, 
    kCFURLErrorCannotDecodeRawData  = -1015, 
    kCFURLErrorCannotDecodeContentData = -1016, 
    kCFURLErrorCannotParseResponse  = -1017, 
    kCFURLErrorInternationalRoamingOff = -1018, 
    kCFURLErrorCallIsActive    = -1019, 
    kCFURLErrorDataNotAllowed    = -1020, 
    kCFURLErrorRequestBodyStreamExhausted = -1021, 
    kCFURLErrorFileDoesNotExist   = -1100, 
    kCFURLErrorFileIsDirectory   = -1101, 
    kCFURLErrorNoPermissionsToReadFile = -1102, 
    kCFURLErrorDataLengthExceedsMaximum = -1103, 
+1

これらはCFNetworkフレームワーク> CFNetworkErrors.hヘッダーにあります。 –

+1

このドキュメントには、エラーが発生したときの詳細が記載されています。[NSURLError family](https://developer.apple.com/library/ios/documentation/cocoa/reference/foundation/Miscellaneous/Foundation_Constants/Reference/reference。html#// apple_ref/doc/constant_group/URL_Loading_System_Error_Codes) –

+2

これはまた役に立つかもしれません:http://nshipster.com/nserror/ – user1021430

25

私は私の場合には、同様の問題を抱えているが、ネットワーク接続に関連すると思われる。

エラードメイン= NSURLErrorDomainコード= -1001「要求がタイムアウトしました。」チェックする

もの:

  • サーバーは、いくつかの制限時間内に応答できないことを任意のチャンスがありますか? 60秒または4分のように?
  • デバイスがネットワーク(WiFi、3G、VPN)を切り替える可能性はありますか?
  • 誰か(クライアント対サーバー)が認証を待っていますか?

申し訳ありませんが、修正方法はありません。ただ、問題が何であるかを見つけようとし、これをデバッグ(-1021、-1001、-1009)

更新: Google検索は、この見つけることは非常に親切だった:

  • -1001 TIMEDOUTを - それを時間切れよりも時間がかかりました。
  • -1003 CannotFindHost - ホストが見つかりませんでした。
  • -1004 CannotConnectToHost - ホストは私たちに接続を許可しませんでした。
+1

は、「あなたのチャンスはありますサーバーは一定の時間内に応答できませんか? "あなたが知っているのは、それがキラーです。アップル社のサーバーで、私はこのコードに触れようとしています。だからこそ、私のサーバーはうんざりしていません。 – Hyperbole

+0

Hey Jom、iPhoneでうまくいきましたが、iPadで時々クラッシュしています。このメッセージは「-1001 TimedOut」というメッセージを表示します。しかし、私の質問は、それがiPhoneとiPadの両方で来なければならない場合、TimedOutです。ありがとうございます@JOM – Babul

4

私は私の中に次のメソッドを使用しますプロジェクト

-(NSArray*)networkErrorCodes 
{ 
    static NSArray *codesArray; 
    if (![codesArray count]){ 
     @synchronized(self){ 
      const int codes[] = { 
       //kCFURLErrorUnknown,  //-998 
       //kCFURLErrorCancelled, //-999 
       //kCFURLErrorBadURL,  //-1000 
       //kCFURLErrorTimedOut, //-1001 
       //kCFURLErrorUnsupportedURL, //-1002 
       //kCFURLErrorCannotFindHost, //-1003 
       kCFURLErrorCannotConnectToHost,  //-1004 
       kCFURLErrorNetworkConnectionLost, //-1005 
       kCFURLErrorDNSLookupFailed,   //-1006 
       //kCFURLErrorHTTPTooManyRedirects, //-1007 
       kCFURLErrorResourceUnavailable,  //-1008 
       kCFURLErrorNotConnectedToInternet, //-1009 
       //kCFURLErrorRedirectToNonExistentLocation, //-1010 
       kCFURLErrorBadServerResponse,    //-1011 
       //kCFURLErrorUserCancelledAuthentication,  //-1012 
       //kCFURLErrorUserAuthenticationRequired,  //-1013 
       //kCFURLErrorZeroByteResource,  //-1014 
       //kCFURLErrorCannotDecodeRawData,  //-1015 
       //kCFURLErrorCannotDecodeContentData, //-1016 
       //kCFURLErrorCannotParseResponse,  //-1017 
       kCFURLErrorInternationalRoamingOff, //-1018 
       kCFURLErrorCallIsActive,    //-1019 
       //kCFURLErrorDataNotAllowed,    //-1020 
       //kCFURLErrorRequestBodyStreamExhausted, //-1021 
       kCFURLErrorFileDoesNotExist,   //-1100 
       //kCFURLErrorFileIsDirectory,    //-1101 
       kCFURLErrorNoPermissionsToReadFile,  //-1102 
       //kCFURLErrorDataLengthExceedsMaximum,  //-1103 
      }; 
      int size = sizeof(codes)/sizeof(int); 
      NSMutableArray *array = [[NSMutableArray alloc] init]; 
      for (int i=0;i<size;++i){ 
       [array addObject:[NSNumber numberWithInt:codes[i]]]; 
      } 
      codesArray = [array copy]; 
     } 
    } 
    return codesArray; 
} 

次に、エラーコードを確認し、リストにある場合は警告を表示します

if ([[self networkErrorCodes] containsObject:[NSNumber 
numberWithInt:[error code]]]){ 
// Fire Alert View Here 
} 

しかし、わかりましたが、私は私の考えではないと思うコードをコメントアウトしました。たとえば-1012のコード(認証に失敗しました) あなたは好きなようにリストを編集できます。

私のプロジェクトでは、ユーザー名/パスワードの入力時に使用します。私の見解では(物理的な)ネットワーク接続エラーは、ネットワークベースのアプリケーションでアラートビューを表示する唯一の理由である可能性があります。それ以外の場合(ユーザー名とパスワードの組み合わせが間違っているなど)、カスタムユーザーフレンドリーなアニメーションを行うことをお勧めします。特に、ユーザーが明示的にネットワーク通話を開始していない場合

martinezdelarivaがドキュメントへのリンクに感謝します。

+0

これはクラスメソッドになる可能性があります! –

12

NSURLError.hが

NSURLErrorUnknown =    -1, 
NSURLErrorCancelled =   -999, 
NSURLErrorBadURL =    -1000, 
NSURLErrorTimedOut =   -1001, 
NSURLErrorUnsupportedURL =   -1002, 
NSURLErrorCannotFindHost =   -1003, 
NSURLErrorCannotConnectToHost =   -1004, 
NSURLErrorNetworkConnectionLost =  -1005, 
NSURLErrorDNSLookupFailed =   -1006, 
NSURLErrorHTTPTooManyRedirects =  -1007, 
NSURLErrorResourceUnavailable =   -1008, 
NSURLErrorNotConnectedToInternet =  -1009, 
NSURLErrorRedirectToNonExistentLocation = -1010, 
NSURLErrorBadServerResponse =  -1011, 
NSURLErrorUserCancelledAuthentication =  -1012, 
NSURLErrorUserAuthenticationRequired = -1013, 
NSURLErrorZeroByteResource =  -1014, 
NSURLErrorCannotDecodeRawData =    -1015, 
NSURLErrorCannotDecodeContentData =   -1016, 
NSURLErrorCannotParseResponse =    -1017, 
NSURLErrorAppTransportSecurityRequiresSecureConnection NS_ENUM_AVAILABLE(10_11, 9_0) = -1022, 
NSURLErrorFileDoesNotExist =  -1100, 
NSURLErrorFileIsDirectory =   -1101, 
NSURLErrorNoPermissionsToReadFile =  -1102, 
NSURLErrorDataLengthExceedsMaximum NS_ENUM_AVAILABLE(10_5, 2_0) = -1103, 

// SSL errors 
NSURLErrorSecureConnectionFailed =  -1200, 
NSURLErrorServerCertificateHasBadDate =  -1201, 
NSURLErrorServerCertificateUntrusted = -1202, 
NSURLErrorServerCertificateHasUnknownRoot = -1203, 
NSURLErrorServerCertificateNotYetValid = -1204, 
NSURLErrorClientCertificateRejected = -1205, 
NSURLErrorClientCertificateRequired = -1206, 
NSURLErrorCannotLoadFromNetwork =  -2000, 

// Download and file I/O errors 
NSURLErrorCannotCreateFile =  -3000, 
NSURLErrorCannotOpenFile =   -3001, 
NSURLErrorCannotCloseFile =   -3002, 
NSURLErrorCannotWriteToFile =  -3003, 
NSURLErrorCannotRemoveFile =  -3004, 
NSURLErrorCannotMoveFile =   -3005, 
NSURLErrorDownloadDecodingFailedMidStream = -3006, 
NSURLErrorDownloadDecodingFailedToComplete =-3007, 

NSURLErrorInternationalRoamingOff NS_ENUM_AVAILABLE(10_7, 3_0) =   -1018, 
NSURLErrorCallIsActive NS_ENUM_AVAILABLE(10_7, 3_0) =     -1019, 
NSURLErrorDataNotAllowed NS_ENUM_AVAILABLE(10_7, 3_0) =     -1020, 
NSURLErrorRequestBodyStreamExhausted NS_ENUM_AVAILABLE(10_7, 3_0) =  -1021, 

NSURLErrorBackgroundSessionRequiresSharedContainer NS_ENUM_AVAILABLE(10_10, 8_0) = -995, 
NSURLErrorBackgroundSessionInUseByAnotherProcess NS_ENUM_AVAILABLE(10_10, 8_0) = -996, 
NSURLErrorBackgroundSessionWasDisconnected NS_ENUM_AVAILABLE(10_10, 8_0)= -997, 
0

を定義するを参照してください私は上記の文書化されていない新しいエラーコードが見つかりました: CFNetworkErrorCode -1022

Error Domain=NSURLErrorDomain Code=-1022 "The resource could not be loaded because the App Transport Security policy requires the use of a secure connection." 
+0

https://forums.developer.apple.com/thread/5835 ' NSAppTransportSecurity NSAllowsArbitraryLoads ' –

関連する問題