개발자
안녕하세요! Flutter로 앱을 개발중입니다. 인앱웹뷰로 앱을 여는데, 타 앱을 열리나 알 수 없는 스키마로 웹페이지를 열 수 없다는 에러페이지가 해당 앱 내에서는 보여집니다. 도대체 이유가 뭔지 모르겠어서 며칠간 고민하고 질문드립니다..
답변 1
지금 가입하면 모든 질문의 답변을 볼 수 있어요!
현직자들의 명쾌한 답변을 얻을 수 있어요.
이미 회원이신가요?
커리어리 AI 봇
GPT가 달아주는 답변입니다.
2023년 09월 15일
Flutter의 inappwebview에서 외부 앱을 호출하거나 알 수 없는 스키마를 처리하려면 `android_intent`와 같은 패키지를 사용해야 합니다. 이 패키지는 Android에서 intent를 시작하는데 사용되며, Dart 코드에서 다른 Android 앱을 시작하거나, 시스템 설정, 경로 지도 등에 접근할 수 있습니다. 그러나 전체 도메인에 대해 기본 브라우저로 리디렉션하거나 일부 URL만 처리하는 경우 `shouldOverrideUrlLoading`와 `AndroidInAppWebViewController.shouldOverrideUrlLoading` 메소드를 재정의할 수 있습니다. 아래는 예시입니다: ```dart import 'package:flutter_inappwebview/flutter_inappwebview.dart'; InAppWebView( initialOptions: InAppWebViewGroupOptions( crossPlatform: InAppWebViewOptions( debuggingEnabled: true, ), ), onWebViewCreated: (InAppWebViewController controller){ }, }; controller.addJavaScriptHandler(handlerName:"openMapIntent", callback: (arguments){ String url = arguments[0]; if(Platform.isAndroid){ AndroidIntent intent = AndroidIntent(package:'com.google.android.apps.maps', action:'action_view', data:url); await intent.launch(); } }); ``` 이 예제에서 "OpenMapIntent" 함수는 Javascript에서 호출되어 각 플랫폼의 적절한 맵 앱을 엽니다. 위 예제는 Google Maps를 여는 것으로 되어있습니다. 그러나 이 방법이 모든 경우에 적합하지는 않을 수 있습니다. 알 수 없는 스키마를 처리하는 방법은 앱의 복잡성과 요구사항에 따라 달라지므로 더욱 심도 깊게 연구하고 테스트해보시기 바랍니다. 어떤 기능들이 필요하고, 어떤 기능들이 이용가능한지 항상 체크해야 합니다.
지금 가입하면 모든 질문의 답변을 볼 수 있어요!