2015-09-07 6 views
8

Meine App-Erweiterung muss URL von vielen Websites öffnen. Ich tun, wie folgend:App-Transportsicherheit auf Safari-Erweiterung

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); 

ich die URL bekommen, aber an diesem Punkt habe ich diesen Fehler:

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.

Ich habe versucht, ganz ATS auszuschalten,

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

aber Es funktioniert nicht und ich kann keine Websites in NSExceptionDomain auflisten. Ich habe am Simulator und am Gerät versucht. Jemand könnte helfen?

EDIT

ich denke, dass der Code, der das Problem dazu führen, dass diese ist:

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

Ich benutze diese Zeile Code nach url log die HTML als Klartext zu erhalten.

Antwort

5

Handelt es sich um das NSAppTransportSecurity Wörterbuch zu den Info.plist Datei des App-Erweiterung, oder einfach nur in der Info.plist Datei der Eltern-App? Wenn die Erweiterung die Anforderungen stellt, muss die Ausnahme in der Datei Info.plist der Erweiterung sein.

Wenn das nicht hilft, versuchen Sie es mit NSURLConnection direkt und sehen, ob es einen Unterschied macht. Ich bezweifle es, aber es könnte einen Versuch wert sein.

3

Ich hatte das gleiche Problem, aber die Einstellung NSAllowsArbitraryLoads zu JA reparierte es für mich. Ich schlage vor, versucht:

NSError *error; 

NSStringEncoding encoding; 

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

* Bitte beachten Sie, dass ich statt Codierung bin mit usedEncoding.

Dies wird Ihnen ermöglichen, einen Fehler zu erhalten und sehen, was die beste Codierung ist. Möglicherweise verwenden Sie die falsche Kodierung oder die Datei, die Sie übergeben, kann nicht decodiert werden. d. h. mp4, .m4a und .mp3-Dateien funktionieren nicht, aber .m3u8 wird.

+0

Danke für Ihre Antwort, aber es funktioniert nicht für mich. Dieser Wert in der PLIST ist auf JA gesetzt und ich habe versucht, Ihre Methode, um das HTML zu bekommen, aber es gibt null zu mir – Totka

+0

@Totka Ich nehme an, Sie haben diese URL in ios8 versucht und es funktioniert. Ich habe festgestellt, dass manchmal das Hinzufügen eines "s" zu http es auf ios9 funktioniert. –