Flutter_inappwebview 에서 카카오 링크를 이용하려고 합니다

웹페이지를 사용할 수 없음
다음 이유로 intent://send?appkey=dfcf~~~~
net:ERR_UNKOWN_URL_SCHEME

예전에는 (‘package:kakao_flutter_sdk/link.dart’)에는 잘 되었었는데…
최신패키지에서는 (import ‘package:kakao_flutter_sdk_share/kakao_flutter_sdk_share.dart’:wink: 오류가 나고 있습니다.
url 스키마가 가 다르기 때문인 것 같은데…
launchUrl를 이용하거나 어떤 해결책이 있을까요?
(제가 다른 언어는 잘 몰라서… flutter로 답변을 주시면 감사하겠습니다…)

안녕하세요

원인 파악을 위해 앱 id (카카오 디벨로퍼스에서 확인할 수 있는 숫자값), 사용 중인 kakao_flutter_sdk 버전, 이슈가 발생한 디바이스 및 OS 정보, 이슈가 발생한 코드 첨부 부탁드리겠습니다

앱 id : 187146
kakao_flutter_sdk_share: ^1.3.1
안드로이드 에뮬레이터 및 핸드폰

=============== (혹시나해서 … html 꺽기기호 생략)
div onclick=“go_kakao()”
img src=https://developers.kakao.com/assets/img/about/logos/kakaotalksharing/kakaotalk_sharing_btn_medium.png
카카오톡 친구에게 소개하기
/div

function go_kakao(){
    window.flutter_inappwebview.callHandler('go_kakao', '');
}
===============

                onWebViewCreated: (InAppWebViewController controller) {
                  _webViewController = controller;
                  controller.addJavaScriptHandler(
                      handlerName: 'go_kakao',
                      callback: (args) {
                        KakaoShareManager.kakaoSend();
                      }); // 자바스크립트 통신 - 카카오톡 친구공유 이미지를 클릭하면 KakaoShareManager.kakaoSend() 를 실행.

===============
class KakaoShareManager {
static kakaoSend() async {
KakaoSdk.init(nativeAppKey: ‘a31~~~~~~~~~’);
bool isKakaoTalkSharingAvailable =
await ShareClient.instance.isKakaoTalkSharingAvailable();
if (isKakaoTalkSharingAvailable) {
try {
Uri uri =
await ShareClient.instance.shareDefault(template: defaultFeed);
await ShareClient.instance.launchKakaoTalk(uri);
} catch (error) {
//
}
} else {
try {
Uri shareUrl = await WebSharerClient.instance
.makeDefaultUrl(template: defaultFeed);
await launchBrowserTab(shareUrl, popupOpen: true);
} catch (error) {
// print(‘카카오톡 공유 실패 $error’);
}
}
}

static FeedTemplate defaultFeed = FeedTemplate(

);
}
===============

pc 브라우저에서는 다음 script 코드로 잘 작동합니다.
혹시 flutter 에서 KakaoShareManager  클래스를 호출하지 않고 
그냥 html  script 코드만으로 완성을 할 수도 있는지요? (가능할 것 같은데...)
html  script 코드만으로 했을 때도 동일한 에러가 나고 있습니다....
이 경우 flutter에서 어디에서 어떻게 처리를 해 주어야 하는지 궁금합니다...

div id="kakaotalk-sharing-btn"  onclick="go_kakao()"
img src=https://developers.kakao.com/assets/img/about/logos/kakaotalksharing/kakaotalk_sharing_btn_medium.png 
카카오톡 친구에게 소개하기 
/div

script
  Kakao.Share.createDefaultButton({
  	container: '#kakaotalk-sharing-btn',
  	objectType: 'feed',
  	content: {
         ~~~~ ;
/script

안녕하세요

서버 로그와 작성하신 코드를 확인해봤을 때 JavaScript SDK와 Flutter SDK를 혼용해서 사용하고 있는 것으로 보이는데요,
JavaScript SDK의 경우 모바일 하이브리드 앱 환경도 지원하기 때문에 Flutter SDK와 JavaScript SDK를 혼용하는 것보다는 JavaScript SDK만 사용해서 구현하시는 것이 더 좋을 것으로 보입니다.

제보주신 에러 url에 첨부된 앱 키가 JavaScript 앱 키 인 점, Flutter SDK에서는 해당 url을 사용하지 않는 점 등을 봤을 때 안드로이드 디바이스에서 Flutter SDK의 코드가 아니라 JavaScript SDK의 코드가 동작하면서 에러가 발생한 것 같습니다.

JavaScript SDK 문서를 확인해보시면 하이브리드 앱 설정 관련을 가이드하고 있는데요, 하이브리드 앱 관련 설정들이 제대로 되어있지 않아서 에러가 발생하는 것으로 보입니다.
가이드 확인하셔서 설정 후 이슈가 계속해서 발생하는지 확인 부탁드리겠습니다.

말씀하신대로 Flutter SDK를 제거하고
JavaScript SDK 만으로 진행을 했습니다…

제가 사용한 webview 패키지가 Flutter_inappwebview 입니다.
그리고 코드는 다음과 같습니다…

            initialOptions: InAppWebViewGroupOptions(
                crossPlatform: InAppWebViewOptions(
                  javaScriptEnabled: true,
                  javaScriptCanOpenWindowsAutomatically: true,
                  useShouldOverrideUrlLoading: true,
                  useShouldInterceptFetchRequest: true,
                ),
                android: AndroidInAppWebViewOptions(
                  mixedContentMode:
                      AndroidMixedContentMode.MIXED_CONTENT_ALWAYS_ALLOW,
                  supportMultipleWindows: true,
                  useShouldInterceptRequest: true,
                  useHybridComposition: true,
                )),
                shouldOverrideUrlLoading: (controller, navigationAction) async {
                  var url = navigationAction.request.url!;
                  var uri = Uri.parse(url.toString());
                  await launchUrl(uri);
                  return NavigationActionPolicy.CANCEL;
                },

그런데 …
var url = navigationAction.request.url!; 여기에 중단점을 찍고 확인을 해보면
navigationAction 값이 다음과 같이 나옵니다…ㅠㅠ
<optimized out>
<error>:<Invalid params>

PC 브라우저에서는 정상적으로 작동합니다.
html 코드

<div id=kakaotalk-sharing-btn href=javascript:; >
<img src=https://developers.kakao.com/assets/img/about/logos/kakaotalksharing/kakaotalk_sharing_btn_medium.png />|
<br/>카카오톡 친구에게 소개하기
</div>

<script>
Kakao.Share.createDefaultButton({
container: ‘#kakaotalk-sharing-btn’,
objectType: ‘feed’,
~~~~
</script>

답변이 조금 늦었네요ㅠㅠ

서버 로그와 에러 내용을 확인했을 때는 API 호출이 정상적으로 이뤄지고 있어서 flutter_inappbrowser 설정을 잘못하신 것으로 추측됩니다. fluter_inappbrowser는 외부 패키지이므로 해당 패키지 이슈에 대해서는 원인을 파악하기 어려운 점 양해 부탁드리고 이전 댓글에 첨부했던 하이브리드 앱 가이드 참고하셔서 설정하셔야할 것 같습니다.