이전 버전의 iOS에서는 UIWebView
에로드 된 JavaScript/HTML에서 정보를 보낼 수있었습니다. 웹보기를 시도 할 문서에 iframe이를 만들거나 사용자 정의 URL에 document.location.href
을 설정하여 응용 프로그램을로드 :UIWebView에서 iOS 응용 프로그램으로 데이터 보내기 Xcode 8/iOS 10
<html>
<body><input id="clickMe" type="button" value="clickme" onclick="changeWindow();" /></body>
<script type="text/javascript">
function changeWindow() {
//create temp frame
iFrame = this.createIFrame('onStatusChange://eyJ1c2VyTmFtZSI6IkpBTCIsLCJwcm92aWRlciI6IkVtYWlsIn0=');
//remove the frame now
iFrame.parentNode.removeChild(iFrame);
}
function createIFrame(src) {
var rootElm = document.documentElement;
var newFrameElm = document.createElement('IFRAME');
newFrameElm.setAttribute('src', src);
rootElm.appendChild(newFrameElm);
return newFrameElm;
}
</script>
</html>
을 그리고 클라이언트에서, 난 그냥 UIWebViewDelegate
콜백 webView:shouldStartLoadWithRequest:navigationType:
수신 및 확인 것 request.URL.scheme
이 내 사용자 정의 구성표 (이 경우 onStatusChange
)와 같으면
이것은 인기있는 질문 (예 : How to invoke Objective C method from Javascript and send back data to Javascript in iOS?)과 같이 자바 스크립트와 iOS 앱간에 통신하는 인기있는 방법입니다.
iOS 9 및 10 기기에서 Xcode 7 (Objective-C 또는 Swift)으로 제작 된 모든 앱에서 작동합니다. 델리게이트 콜백을 트리거하지 않는 URL을로드하려고하는 것조차 웹 뷰가 아닌 것처럼 델리게이트 메소드가 호출되지 않는 문제가 발생합니다.
UIWebView
또는 Xcode 7-8 또는 iOS 9-10에서 WebKit이 변경되어 작동하지 않습니까? 정말로 당황스러운 것은 iOS 8을 타겟으로하는 Xcode 7의 Objective-C로 제작 한 프로덕션 앱이 iOS 10 장치에서 작동하지만 동일한 코드베이스의 Xcode 8로 빌드 된 디버그 빌드가 작동하지 않는다는 것입니다.
rdar로 인한 업데이트가 있습니까? iOS 10.2.1에서도 여전히 문제가 발생하는 것을 보았습니다. 또한 특수 문자가 없어도 발생합니다. – Aviel
@Aviel 슬프게도보고 할 것이 없지만 내 레이더는 업데이트 또는 순위가없는 "열린"상태로 표시됩니다. 버그 보고서를 복제하고 새로운 레이더를 작성하여 한 명 이상의 사람에게이 문제가 있음을 Apple에 알릴 수 있습니다. – JAL
@Aviel 다른 개발자가 보고서를 볼 수 있도록 버그 보고서를 복제하고 OpenRadar에 게시 했습니까? – JAL