2015-09-07 8 views
8

मेरा ऐप एक्सटेंशन कई वेबसाइटों से यूआरएल खोलने की जरूरत है। मैं निम्नलिखित के रूप में कार्य करें:सफारी एक्सटेंशन पर ऐप ट्रांसपोर्ट सुरक्षा

for (NSExtensionItem *item in self.extensionContext.inputItems) { 

    for (NSItemProvider *itemProvider in item.attachments) { 

     if ([itemProvider hasItemConformingToTypeIdentifier:(NSString *)kUTTypeURL]) { 

      [itemProvider loadItemForTypeIdentifier:(NSString *)kUTTypeURL options:nil completionHandler:^(NSURL *url, NSError *error) { 
       NSLog(@"URL: %@",url); 

मैं URL प्राप्त कर सकते हैं, लेकिन इस बिंदु पर मैं यह त्रुटि आई:

App Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure. Temporary exceptions can be configured via your app's Info.plist file.

मैं पूरी तरह से एटीएस को बंद करने की कोशिश की,

<key>NSAppTransportSecurity</key> 
    <dict> 
     <key>NSAllowsArbitraryLoads</key> <true/> 
    </dict> 

लेकिन यह काम नहीं करता है, और मैं NSExceptionDomain के अंदर वेबसाइटों को सूचीबद्ध नहीं कर सकता। मैंने सिम्युलेटर और डिवाइस पर कोशिश की। कोई मदद कर सकता है?

संपादित

मुझे लगता है कि कि कोड कि इस मुद्दे का कारण यह इस है:

NSString* htmlString = [NSString stringWithContentsOfURL: url encoding:NSUTF8StringEncoding] 

मैं सादे पाठ के रूप एचटीएमएल पाने के लिए यूआरएल लॉग के बाद कोड की इस पंक्ति का उपयोग करें।

उत्तर

5

आप भी एप्लिकेशन एक्सटेंशन के Info.plist फाइल करने के लिए NSAppTransportSecurity शब्दकोश जोड़ रहे हैं, या सिर्फ माता-पिता को एप्लिकेशन की Info.plist फ़ाइल में? क्योंकि यदि एक्सटेंशन अनुरोध कर रहा है, तो अपवाद को विस्तार की Info.plist फ़ाइल में होना आवश्यक है।

यदि यह मदद नहीं करता है, तो NSURLConnection का उपयोग करके सीधे प्रयास करें और देखें कि इससे कोई फर्क पड़ता है या नहीं। मुझे संदेह है कि यह होगा, लेकिन यह एक कोशिश के लायक हो सकता है।

3

मुझे एक ही समस्या का सामना करना पड़ रहा था, लेकिन NSAllowsArbitraryLoads को YES में सेट करने के लिए यह मेरे लिए तय किया गया। मैं कोशिश कर रहा हूं:

NSError *error; 

NSStringEncoding encoding; 

NSString *content = [NSString stringWithContentsOfURL:contentURL usedEncoding:&encoding error:&error]; 

* कृपया ध्यान दें कि मैं एन्कोडिंग के बजाय प्रयुक्त एन्कोडिंग का उपयोग कर रहा हूं।

इससे आपको एक त्रुटि प्राप्त करने और सर्वोत्तम एन्कोडिंग देखने का मौका मिलेगा। हो सकता है कि आप गलत एन्कोडिंग का उपयोग कर रहे हों या आपके द्वारा गुजरने वाली फ़ाइल को डीकोड नहीं किया जा सके; i.e.mp4, .m4a, और .mp3 फ़ाइलें काम नहीं करेंगे लेकिन .m3u8 होगा।

+0

आपके उत्तर के लिए धन्यवाद, लेकिन यह मेरे लिए काम नहीं करता है। प्लिस्ट में वह मान YES पर सेट है और मैंने HTML प्राप्त करने के लिए आपकी विधि की कोशिश की है, लेकिन यह मेरे पास शून्य है – Totka

+0

@Totka मुझे लगता है कि आपने ios8 में इस यूआरएल को आजमाया है और यह काम करता है। मैंने पाया है कि कभी-कभी http में "एस" जोड़ना इसे आईओएस 9 पर काम करता है। –

संबंधित मुद्दे