Flutter flutter_inappwebview intent 카카오 맵 에러

InAppWebView(
initialUrlRequest: URLRequest(
url: Uri.parse(
점촌포항구룡포과메기 | 카카오맵’),
),
initialOptions: InAppWebViewGroupOptions(
crossPlatform: InAppWebViewOptions(
javaScriptEnabled: true,
javaScriptCanOpenWindowsAutomatically: true,
useShouldOverrideUrlLoading: true,
useShouldInterceptFetchRequest: true,
),
),
onWebViewCreated: (controller) {
_webViewController = controller;
},
onLoadResourceCustomScheme: (controller, url) async {
await controller.stopLoading();
return null;
},
shouldOverrideUrlLoading: (controller, navigationAction) async {
if (!navigationAction.isForMainFrame) {
await controller.stopLoading();
}

                      var uri = navigationAction.request.url;

                      if (uri != null && uri.scheme == 'intent') {
                        // 인텐트 URL 직접 처리
                        if (await canLaunchUrl(uri)) {
                          await launchUrl(uri);
                        } else {
                          print("Can't launch the intent url $uri");
                        }

                        // 웹뷰에서는 추가 로딩을 하지 않도록 설정
                        return NavigationActionPolicy.CANCEL;
                      }

                      // 다른 URL들은 웹뷰에서 계속 로딩
                      return NavigationActionPolicy.ALLOW;
                    },
                    onLoadStop: (InAppWebViewController controller,
                        Uri? url) async {},
                    onCreateWindow:
                        (controller, createWindowRequest) async {
                      // 팝업 요청을 처리합니다.
                      return true;
                    },
                    // ... 기타 콜백 함수 ...
                  ),

이런 코드가 있습니다. 해당 코드로 intent://place?id=735109422&infoLevel=2&referer=mplaceweb#Intent;scheme=kakaomap;package=net.daum.android.map;end; 이런 인텐트 이동을 웹뷰에서 하고 싶은데. 로그를 보면 I/UrlLauncher(23386): component name for intent://place?id=735109422&infoLevel=2&referer=mplaceweb#Intent;scheme=kakaomap;package=net.daum.android.map;end; is null
I/flutter (23386): Can’t launch the intent url intent://place?id=735109422&infoLevel=2&referer=mplaceweb#Intent;scheme=kakaomap;package=net.daum.android.map;end; 이런 로그가 남아있어요.

버전은 flutter_inappwebview: ^5.8.0입니다.

혹시 어떤 것이 원인인지 알 수 있을까요?

안녕하세요.
Inappwebview으로 intent 오픈시에

Intent url의 대소문자가 모두 소문자로 치환돠는 문제가 있습니다.
Inappwebview 를 6.0으로 올리고 관련 이슈를 확인해보시는걸 추천드립니다.

url 확인부를 action.request.url.rawValue 로 변경해보시길 바랍니다.

Flutter core 의 Uri.parse 의 이슈입니다.

말씀하신 것으로 교체했어요.
shouldOverrideUrlLoading: (controller, navigationAction) async {
if (!navigationAction.isForMainFrame) {
await controller.stopLoading();
}

                      var uri = navigationAction.request.url?.rawValue;
                      var uriParse = Uri.parse(uri!);
                      print("rawValue url $uri");
                      print("rawValueChanged url $uriParse");

                      if (uri != null && uri.startsWith('intent')) {
                        // 인텐트 URL 직접 처리
                        if (await canLaunchUrl(Uri.parse(uri))) {
                          await launchUrl(Uri.parse(uri));
                        } else {
                          print("Can't launch the intent url $uri");
                        }

                        // 웹뷰에서는 추가 로딩을 하지 않도록 설정
                        return NavigationActionPolicy.CANCEL;
                      }

                      // 다른 URL들은 웹뷰에서 계속 로딩
                      return NavigationActionPolicy.ALLOW;
                    },

이런 코드를 사용했어요. 그리고 6.0.0 버전입니다.

로그는
I/flutter (30100): rawValue url intent://place?id=735109422&infoLevel=2&referer=mplaceweb#Intent;scheme=kakaomap;package=net.daum.android.map;end;
I/flutter (30100): rawValueChanged url intent://place?id=735109422&infoLevel=2&referer=mplaceweb#Intent;scheme=kakaomap;package=net.daum.android.map;end;
I/flutter (30100): Can’t launch the intent url intent://place?id=735109422&infoLevel=2&referer=mplaceweb#Intent;scheme=kakaomap;package=net.daum.android.map;end;

이렇게 나와요 intent 주소에 어떤 문제가 있나요?

혹시 어느 정도 시간이 지나면 답변을 받을 수 있을까요?

앱으로 바로 연동하려고 하시는 걸까요?

저희가 제공하는 iOS, Android의 url scheme은 kakaomap://place?id=7813422 형태라서
문서에 안내된 대로 url을 설정해서 확인 부탁드립니다.

Android: 장소로 이동 URL Scheme
iOS: 장소로 이동 URL Scheme

감사합니다 intent 앞의 주소를 변경하니 이동합니다.

1개의 좋아요