2017-12-29 94 views
-2

안녕 얘들 아 당신이 나를 도울 수 있기를 바랍니다.WKwebview Javascript 함수 Geolocation

웹 사이트 "example.com"을 여는 Wkwebview가 있습니다. 이 웹 사이트에는 많은 기능을 갖춘 자바 스크립트 파일이 포함되어 있습니다 (자바 스크립트는 앱의 로컬 저장소에 있지 않으며 링크로 권장됩니다). 이 웹 사이트에서는 귀하를 찾을 수있는 버튼입니다. 이 버튼을 누르면 Javascript 함수 "getLocation()"이 호출됩니다 (아래 참조). 이 함수는 long과 latitude를 보여줍니다!

var x = document.getElementById("location"); 

function getLocation() { 
    if (navigator.geolocation) { 
     navigator.geolocation.getCurrentPosition(showPosition); 
    } 
} 

function showPosition(position) { 
    x.innerHTML = "Latitude: " + position.coords.latitude + 
    "<br>Longitude: " + position.coords.longitude; 
} 

나는 네이티브 응용 프로그램에서 위도와 경도로 navigator.geolocation.getCurrentPosition을 보여줄 수 있어요. 문제는 권한 제가로부터 데이터를 전송하는 방법을

ask for permission

내 질문은 (응용 프로그램이 항상 물어 웹보기의 나를 찾을 이미에 액세스이 주)의 위치를위한 WKwebview은 항상 나에게 물었다이다 권한 요청없이 Javascript에 응용 프로그램. WKWebViewConfiguration 또는 약 evaluateJavaScript(_:completionHandler:) 또는 약 NSBundle and NSURLRequest에 대한 내용을 읽었지만 올바른 방법이나 더 좋은 방법이 있습니까? 계속하는 법을 알려주세요.

+0

nil을 반환 할 수 있습니다 할 수 있습니다 웹 사이트 및 기본 응용 프로그램으로 사이하지 "전송 권한" 너는 설명하고있어. –

+0

아니요 tansfer에 권한을 부여하고 싶지 않습니다. webview가 내게 묻지 않는 위치 데이터를 전송하고 싶습니다. – user8987919

답변

0

evaluateJavaScript() 만 사용하면 WKWebView에서 모든 JavaScript를 실행하고 Swift에서 결과를 얻을 수 있습니다. 이것은 자바 스크립트 일 수 있습니다. 즉, 페이지를 파고 필요한 정보를 찾아 낼 수 있습니다. 여기

은 예입니다 :

webView.evaluateJavaScript("document.getElementById('someElement').innerText") { (result, error) in 
    if error != nil { 
     print(result) 
    } 
} 

참고 : 친절 값을 얻을 수있는 올바른 자바 스크립트를 전달하거나 다른 당신은

+0

evaluateJavaScript()를 사용하면 WKWebView에서 모든 JavaScript를 실행하고 Swift에서 결과를 얻을 수 있습니다. 두 번째 단계에서 자바 스크립트가 이러한 데이터를 데이터베이스에 포함하므로 문제가됩니다. 그러나 나는 그것을 시험 할 것이다. – user8987919