Notice
Recent Posts
Recent Comments
Link
투케이2K
251. (TWOK/ERROR) [Flutter] iOS Webview 웹뷰에서 Alert 팝업창 호출 미동작 이슈 - Web Alert Not Working 본문
투케이2K 에러관리
251. (TWOK/ERROR) [Flutter] iOS Webview 웹뷰에서 Alert 팝업창 호출 미동작 이슈 - Web Alert Not Working
투케이2K 2024. 6. 29. 17:57[환경 설정 및 설명]
프로그램 : Flutter
설 명 : [Flutter] iOS Webview 웹뷰에서 Alert 팝업창 호출 미동작 이슈 - Web Alert Not Working
[에러 원인]
1. 플러터 webview_flutter 모듈을 사용해 웹뷰 구현 시 iOS 아이폰에서는 Web 기본 Alert , Confirm 등 팝업창 이벤트가 발생하지 않음
[해결 방법]
방안 [1] : Xcode 수행 후 >> Pods 파일에서 webview_flutter 라이브러리 코드 수정해서 동작하도록 설정
방안 [2] : window.alert 이벤트 감지를 위한 Web <-> App 브릿지 경로 추가 작성 후 Alert 이벤트 발생 시 네이티브에서 커스텀 팝업창 표시 대체
>> 플러터 웹뷰 로딩 완료 상태 onPageFinished 부분에서 스크립트 코드 작성 후 적용 실시
onPageFinished: (String url) async { // [웹 로딩 완료]
print("");
print("-------------------------------------------------------");
print("onPageFinished :: ${url}");
print("-------------------------------------------------------");
print("");
// TODO [Alert 팝업창 표시 대응 위한 스크립트 코드 작성] >> [Web To App 브릿지 받는 구간에서 Alert 정의 (addJavaScriptChannel)]
try {
var javascript = '''
window.alert = function (e){
var uagent = navigator.userAgent.toLowerCase();
var android_agent = uagent.search("android");
var iphone = uagent.search("iphone");
var ipad = uagent.search("ipad");
if (android_agent > -1) {
window.Alert.postMessage(String(e));
}
else {
window.webkit.messageHandlers.Alert.postMessage(String(e));
}
}
''';
await controller?.runJavaScript(javascript);
} catch (_) {}
},
>> Web >> App 브릿지 호출 코드 작성 및 이벤트 대응
..addJavaScriptChannel( // [Web >> Mobile 브릿지 추가]
// TODO Web >> Android : [window.Alert.postMessage("Android");]
// TODO Web >> IOS : [window.webkit.messageHandlers.Alert.postMessage("Ios");]
'Alert',
onMessageReceived: (JavaScriptMessage message) {
// [Alert 팝업창 커스텀 처리]
showAlertDialog(context, message.message);
},
)
반응형
'투케이2K 에러관리' 카테고리의 다른 글
Comments