StoreKit का उपयोग करते हुए अप्रतिबंधित NSURLErrorDomain त्रुटि कोड (-1001, -1003 और -1004)


107

जब मैं कतार में खरीदारी जोड़ने का प्रयास करता हूं, तो मैं StoreKit- संबंधित कोड लिख रहा हूं, और मुझे कुछ परेशान करने वाले त्रुटि कोड मिल रहे हैं।

अब तक, मैंने त्रुटि कोड -1003 और -1004 का अनुभव किया है और मैं इंटरनेट पर उन कोडों के बारे में कुछ भी नहीं पा सकता हूं।

उत्पाद अनुरोध चलाने से मान्य उत्पाद संख्याएँ वापस आ जाती हैं, इसलिए मुझे नहीं पता कि [[SKPaymentQueue defaultQueue] addPayment:aPayment];इस अनचाही समस्या के साथ कॉल विफल क्यों होगी।

एक ही कोड एक डिवाइस पर त्रुटियों के बिना भी काम करता है, लेकिन दूसरे पर नहीं।

मेरे पास जो प्रश्न हैं, वे अभी तक अनुत्तरित हैं:

इन संहिताओं का क्या अर्थ है? मैं इस समस्या को कैसे कम कर सकता हूं? वे उत्पाद प्रयासों के लिए नहीं, खरीद प्रयासों के लिए क्यों हो रहे हैं

मेरे द्वारा किए गए समस्या निवारण में एक हस्ताक्षर प्रमाणपत्र और प्रोविज़निंग प्रोफाइल को पुन: शामिल करना, वाईफाई नेटवर्क को बदलना, सफाई और निर्माण और सभी संबंधित सॉफ़्टवेयर और घटकों को फिर से स्थापित करना शामिल है, और इनमें से किसी भी चीज़ को व्यक्तिगत रूप से या मिलकर समस्या को ठीक करने में मदद नहीं की है।

संपादित करें:

Apple देव मंचों पर इस बारे में एक चर्चा मिली, लेकिन Apple के किसी भी व्यक्ति ने जवाब नहीं दिया: https://devforums.apple.com/thread/107121?tstart=75 (iOS डेवलपर खाता देखना आवश्यक है)

संपादित करें:

मैं आज त्रुटि कोड -1001 के साथ मारा गया था, ताकि अक्षम्य और आंतरायिक समस्याओं की इस सूची में जोड़ा जा सके। फिर भी Apple की कोई जवाबदेही नहीं, जो मुझे मिल सकती है।

संपादित करें:

मुझे संदेह है कि ये त्रुटि कोड अनियमित रूप से उत्पन्न होते हैं और वास्तव में केवल संकेत देते हैं कि सैंडबॉक्स डाउन है। किसी और को इस समस्या का अनुभव?

जवाबों:


342

सभी त्रुटि कोड दस्तावेज़ीकरण ( लिंक ) पर "CFNetwork त्रुटियों कोड संदर्भ" पर हैं

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,

2
ये CFNetwork ढांचे> CFNetworkErrors.h हैडर के भीतर हैं।
टॉम पेस

1
इस डॉक में अधिक जानकारी है जब त्रुटियां होती हैं: NSURLError परिवार
नौ पत्थर

ये स्थिरांक स्विफ्ट में संकलित नहीं करते हैं, लेकिन उदाहरण के लिए NSURLErrorUnknown। कोई सुराग?
निकोलस मिआरी

ओह, कोई बात नहीं ... यहां स्विफ्ट संस्करण मिला: developer.apple.com/library/mac/documentation/Networking/…
निकोलस मियारी

25

मेरे पास ऐसी ही समस्याएं हैं, मेरे मामले में नेटवर्क कनेक्टिविटी से संबंधित प्रतीत होता है:

त्रुटि डोमेन = NSURLErrorDomain कोड = -1001 "अनुरोध का समय समाप्त हो गया।"

जाँच करने के लिए चीजें:

  • क्या कोई मौका है कि आपका सर्वर कुछ समय सीमा के भीतर जवाब देने में सक्षम नहीं है? जैसे 60 सेकंड या 4 मिनट?
  • क्या कोई संभावना है कि आपका डिवाइस नेटवर्क स्विच कर रहा है (वाईफाई, 3 जी, वीपीएन)?
  • क्या कोई (क्लाइंट बनाम सर्वर) प्रमाणीकरण की प्रतीक्षा कर सकता है?

क्षमा करें, कोई विचार नहीं कि कैसे ठीक करें। इसे डीबग करना, यह जानने की कोशिश करना कि समस्या क्या है (-1021, -1001, -1009)

अपडेट: Google खोज यह खोजने के लिए बहुत दयालु थी:

  • -1001 टाइमडैम - यह उस टाइमआउट से अधिक समय लगा जो अलॉट किया गया था।
  • -1003 CannotFindHost - होस्ट नहीं मिल सका।
  • -1004 CannotConnectToHost - होस्ट हमें कनेक्शन स्थापित नहीं करने देगा।

1
"क्या कोई मौका है कि आपका सर्वर कुछ समय सीमा के भीतर जवाब देने में सक्षम नहीं है?" तुम्हें पता है, यह हत्यारा है, यह Apple का सर्वर है जिसे मैं इस कोड के साथ संपर्क करने की कोशिश कर रहा हूं, इसलिए यह मेरा सर्वर नहीं है जो हिचकी है।
हाइपरबोले

हे Jom, iPhone में यह हमारे लिए अच्छा काम कर रहा है, लेकिन iPad में हम कभी-कभी दुर्घटनाग्रस्त हो रहे हैं, यह संदेश ", -1001 TimedOut" संदेश दिखाता है। लेकिन मेरा सवाल है, अगर TimedOut यह iPhone और iPad दोनों में आना चाहिए। एडवांस @JOM
बाबुल

21

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,

3

मैं अपनी परियोजना में निम्न विधि का उपयोग करता हूं

-(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
}

लेकिन जैसा कि आप देख सकते हैं कि मैंने उन कोड्स पर टिप्पणी की है जो मुझे लगता है कि NO इंटरनेट की मेरी परिभाषा के अनुरूप नहीं है। जैसे -1012 कोड (प्रमाणीकरण विफल।) आप जैसे चाहें सूची संपादित कर सकते हैं।

अपने प्रोजेक्ट में मैं इसका उपयोग उपयोगकर्ता से उपयोगकर्ता नाम / पासवर्ड दर्ज करने में करता हूं। और मेरे विचार में (भौतिक) नेटवर्क कनेक्शन त्रुटियाँ आपके नेटवर्क आधारित ऐप में सतर्क दृश्य दिखाने का एकमात्र कारण हो सकती हैं। किसी भी अन्य मामले में (जैसे गलत उपयोगकर्ता नाम / पासवर्ड जोड़ी) मैं कुछ कस्टम उपयोगकर्ता के अनुकूल एनीमेशन करना पसंद करता हूं, या बस उपयोगकर्ता के किसी भी ध्यान के बिना फिर से असफल प्रयास को दोहराता हूं। खासकर यदि उपयोगकर्ता ने स्पष्ट रूप से नेटवर्क कॉल शुरू नहीं की है।

प्रलेखन के लिए एक लिंक के लिए martinezdelariva का संबंध है।


यह एक वर्ग विधि हो सकती है!
इल्नर_लाल २६'१४

2

मुझे एक नया त्रुटि कोड मिला, जो ऊपर दर्ज़ नहीं है: 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."

forums.developer.apple.com/thread/5835 <key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key> <true/> </dict>
लक्ष्मी

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.