2017-12-21 1 views
0

kann nicht geöffnet werden lokale Datei in Safari Swift Openurl öffnen return falsekann nicht lokale Datei in Safari Swift

let url = URL(string:"file:///Users/kiwitech/Library/Developer/CoreSimulator/Devices/FFA6761D-D98B-4C41-ACEF-18249F297897/data/Containers/Data/Application/82EF4E60-F9E9-434B-B86B-0391052D1E6E/Documents/proposals_dataxlsx.xlsx"); 


      print("Local URL",url) 
      if UIApplication.shared.canOpenURL(url!) { 
       if #available(iOS 10.0, *) { 
        UIApplication.shared.open(url!, options: [:],completionHandler: { 
         (success) in 
         print("Open \(success)") 
        }) 
       } else { 
        UIApplication.shared.openURL(url!) 
       } 
      } 
+0

Ich bin nicht sicher, ob Sie eine lokale Datei einer anderen App auf Safari öffnen können. Warum nicht öffnen in einem UIWebView oder WKWebView stattdessen? – koropok

Antwort

0

Das ist nur richtig. finde die canopenURL: definition.

Gibt einen Booleschen Wert, der angibt, ob das Schema der URL kann von einigen auf dem Gerät installiert app behandelt werden.

Es bedeutet, dass, wenn Sie für canOpenURL abfragen :(), iOS, wenn eine der installierten Anwendungen für das System registriert werden sehen, dass Sie fordern, wenn es nicht in der Lage konnte nichts zu finden, dann es wird false zurückgeben..

Da der zurückkehrenden URL kein Schema zugeordnet ist, gibt canOpenURL false zurück. Wenn Sie eine URL in Safari öffnen möchten, sollte sie mit http: // oder https: // beginnen, dies sind für Safari registrierte Schemas.

Noch eine Sache ist, dass für CanOpenURL (:), um ordnungsgemäß zu funktionieren, Sie die Schemas Whitelist müssen. Mehr dazu finden Sie hier. https://developer.apple.com/documentation/uikit/uiapplication/1622952-canopenurl

Wenn Sie benutzerdefinierte Schemata registriert haben, wird die entsprechende Anwendung geöffnet, wenn Sie auf öffnen (URL) klicken.

eine weitere Sache, nie hart wie der folgende Code.

let url = URL(string:"file:///Users/kiwitech/Library/Developer/CoreSimulator/Devices/FFA6761D-D98B-4C41-ACEF-18249F297897/data/Containers/Data/Application/82EF4E60-F9E9-434B-B86B-0391052D1E6E/Documents/proposals_dataxlsx.xlsx"); 

Verwendung NSSearchPathForDirectoriesInDomains, erstellen oder in den Verzeichnissen nach einer Datei suchen.

NSString *stringPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)objectAtIndex:0]stringByAppendingPathComponent:@"New Folder"]; 
+0

ist es Ihr Problem gelöst? Gib mir Bescheid. –

Verwandte Themen