2017-12-21 37 views
0

사파리 스위프트의 OpenURL에서 로컬 파일을 열 수 없습니다 거짓사파리 스위프트에 로컬 파일을 열 수 없습니다

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

Safari에서 다른 앱의 로컬 파일을 열 수 있는지 확실하지 않습니다. UIWebView 또는 WKWebView에서 열리는 이유는 무엇입니까? – koropok

답변

0

맞습니다. canopenURL : 정의를 찾으십시오.

URL 체계가 기기에 설치된 일부 앱에서 처리 될 수 있는지 여부를 나타내는 부울 값을 반환합니다.

그것은 당신이 canOpenURL :()를 조회 할 때마다 설치된 앱 중 하나가 당신이 요청하는 방식을 위해 등록 된 경우, 아이폰 OS가 볼 수 있음을 의미 그 다음, 아무것도 찾을 수없는 경우 false를 반환합니다..

반환 URL에 스키마가 연결되어 있지 않으므로 canOpenURL은 false를 반환합니다. Safari에서 URL을 열려면 http : // 또는 https : //으로 시작해야하며 이는 Safari에 등록 된 체계입니다.

canOpenURL (:)이 제대로 작동하려면 한 가지 더 이상 스킴을 허용해야합니다. 여기에 대한 자세한 내용은 여기에서 확인할 수 있습니다. https://developer.apple.com/documentation/uikit/uiapplication/1622952-canopenurl

사용자 정의 구성표를 등록한 경우 open (url)을 누르면 해당 앱이 열립니다.

한 가지 더, 결코 아래처럼 하드 코드가 아닙니다.

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

NSSearchPathForDirectoriesInDomains를 사용하여 디렉토리에서 파일을 만들거나 검색합니다.

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

문제가 해결 되었습니까? 저에게 알려주세요. –