카카오톡 공유하기 webUrl, mobileWebUrl 작동부분 문의합니다

문의 시 사용하시는 SDK 버전 정보와 플랫폼(Android / iOS) 및 디벨로퍼스 앱ID를 알려주세요.


kakao_flutter_sdk: ^1.4.3
플러터
앱ID 933531
문의 내용 : 카카오 공유하기를 구현하는데, 나의 애플리케이션 → 플랫폼 → Web 사이트 도메인에 ‘저희서비스도메인’.im 을 등록해놓은 후, 플러터에서는 다음과 같이 코드를 작성하였습니다. (필요없는 부분은 지우겠습니다)

Future<void> shareKakaoTalk(String userNickname, String userUid) async {
  bool isKakaoTalkSharingAvailable = await ShareClient.instance.isKakaoTalkSharingAvailable();

  final FeedTemplate defaultFeed = FeedTemplate(
    content: Content(
      title: '',
      description: '',
      imageUrl: Uri.parse(url),
      link: Link(
          webUrl: Uri.parse('https:사이트도메인에등록/$userNickname'),
          mobileWebUrl: Uri.parse('https:사이트도메인에등록/$userNickname')),
    ),
    buttons: [
      Button(
        title: '웹으로 보기',
        link: Link(
          webUrl: Uri.parse('https://사이트도메인에등록/$userNickname'),
          mobileWebUrl: Uri.parse('https:사이트도메인에등록/$userNickname'),
        ),
      ),
      Button(
        title: '앱으로보기',
        link: Link(
          androidExecutionParams: {'userUid': userUid},
          iosExecutionParams: {'userUid': userUid},
        ),
      ),
    ],
  );

  if (isKakaoTalkSharingAvailable) {
    try {
      Uri uri = await ShareClient.instance.shareDefault(template: defaultFeed);
      await ShareClient.instance.launchKakaoTalk(uri);
      print('카카오톡 공유 완료');
    } catch (error) {
      print('카카오톡 공유 실패 $error');
    }
  } else {
    try {
      Uri shareUrl = await WebSharerClient.instance.makeDefaultUrl(template: defaultFeed);
      await launchBrowserTab(shareUrl, popupOpen: true);
    } catch (error) {
      print('카카오톡 공유 실패 $error');
    }
  }
}

현재 카카오톡에 공유도 정상적으로 되고, 앱으로 보기까지 정상작동이 되는데, 웹으로 보기를 눌렀을때 사이트 도메인 뒤에 /유저닉네임 에 해당하는 링크로 이동하고 싶지만, 버튼을 누르면 그냥 플랫폼에 등록해놓은 사이트 도메인으로만 이동합니다.
예를 들어 코드에서 제가 공유하고 싶은 url이 https://사이트도메인/kakaoUser 라면, 실제로 카카오톡에 공유되었을때 웹으로 보기를 누르면 https://사이트도메인 으로만 이동하는 상황입니다. 어떻게 해결해야하나요?

안녕하세요.

$userNickname 값이 전달된게 맞을까요?
다시 한번 확인 부탁드리며, 위 코드로 카카오톡 공유 사용한 시간을 부탁드립니다.

넵 userNickname이 함수에서 매개변수로 받아와서 변수값으로 들어가게 됩니다.
공유 사용한 시간은 09월 15일 01:23 ~ 01:33 분 정도로 여러번 테스트 해봤네요. 앱으로 보기로 했을때는 매개변수값이 잘 적용이 되는데 웹으로 보기 눌렀을때만 플랫폼에 등록해놓은 기본 도메인으로만 이동합니다.

"webUrl":"https:tikitaka.im/%ED%95%98%ED%95%98"

프로토콜과 도메인 사이에 슬래시가 누락되었습니다. 확인 부탁드려요.

2개의 좋아요

아이고, 그렇네요 ㅠㅠ 확인했습니다. 슬래시 채워넣으니 url이 잘 들어가지네요. 한가지 또다른 문제점이, webUrl과 mobileWebUrl의 타입이 Uri 타입이고 Uri.parse 메소드를 쓰니 $userNickname에 한글이 들어올경우

“webUrl”:“https:tikitaka.im/%ED%95%98%ED%95%98”

이거처럼 한글이 변환되는 문제가 있는 것 같습니다. 실제로 들어온 매개변수는 ‘하하’ 라는 한글 단어이고, 서비스 상으로는 https://tikitaka.im/하하 가 들어가져야하는데 그렇게 안되네요. Url에 한글이 포함되도록 하려면 별도 방법이 있을까요?

URL 인코딩 문자라 그대로 접근해도 문제 없을 것 같은데요.

메시지 보내면 정상작동 안하나요?

1개의 좋아요

내부 문제 였습니다…! 정상작동 합니다. 빠른 답변 감사합니다. 오늘도 행복한 저녁 되시길 바랍니다 :slight_smile: