카카오 공유하기 SDK가 데스크탑 웹에서는 되는데 모바일에서는 안되네요

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


flutterflow 환경입니다.

// Automatic FlutterFlow imports
import '/backend/backend.dart';
import '/flutter_flow/flutter_flow_theme.dart';
import '/flutter_flow/flutter_flow_util.dart';
import '/custom_code/actions/index.dart'; // Imports other custom actions
import '/flutter_flow/custom_functions.dart'; // Imports custom functions
import 'package:flutter/material.dart';
// Begin custom action code
// DO NOT REMOVE OR MODIFY THE CODE ABOVE!

import 'package:kakao_flutter_sdk_share/kakao_flutter_sdk_share.dart';

Future shareKakao(BuildContext context, String shareUrlcustom) async {
  // defaultFeed를 먼저 정의합니다.
  final FeedTemplate defaultFeed = FeedTemplate(
    content: Content(
      title: 'IBTi검사',
      description: '#Fitness #피트니스 #내몸유형검사 #축구선수 #축구선수매칭',
      imageUrl: Uri.parse(
          'https://mud-kage.kakao.com/dn/Q2iNx/btqgeRgV54P/VLdBs9cvyn8BJXB3o7N8UK/kakaolink40_original.png'),
      link: Link(
          webUrl: Uri.parse('https://developers.kakao.com'),
          mobileWebUrl: Uri.parse('https://developers.kakao.com')),
    ),
    itemContent: ItemContent(
      profileText: 'Kakao',
      profileImageUrl: Uri.parse(
          'https://mud-kage.kakao.com/dn/Q2iNx/btqgeRgV54P/VLdBs9cvyn8BJXB3o7N8UK/kakaolink40_original.png'),
      titleImageUrl: Uri.parse(
          'https://mud-kage.kakao.com/dn/Q2iNx/btqgeRgV54P/VLdBs9cvyn8BJXB3o7N8UK/kakaolink40_original.png'),
      titleImageText: 'Cheese cake',
      titleImageCategory: 'cake',
      items: [
        ItemInfo(item: 'cake1', itemOp: '1000원'),
        ItemInfo(item: 'cake2', itemOp: '2000원'),
        ItemInfo(item: 'cake3', itemOp: '3000원'),
        ItemInfo(item: 'cake4', itemOp: '4000원'),
        ItemInfo(item: 'cake5', itemOp: '5000원')
      ],
      sum: 'total',
      sumOp: '15000원',
    ),
    social: Social(likeCount: 286, commentCount: 45, sharedCount: 845),
    buttons: [
      Button(
        title: '웹으로 보기',
        link: Link(
          webUrl: Uri.parse('https://developers.kakao.com'),
          mobileWebUrl: Uri.parse('https://developers.kakao.com'),
        ),
      ),
      Button(
        title: '앱으로보기',
        link: Link(
          androidExecutionParams: {'key1': 'value1', 'key2': 'value2'},
          iosExecutionParams: {'key1': 'value1', 'key2': 'value2'},
        ),
      ),
    ],
  );

  bool isKakaoTalkSharingAvailable =
      await ShareClient.instance.isKakaoTalkSharingAvailable();

  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://dev.orderia.io 를 플랫폼 웹에 다 등록을 하였는데도 정상

https://dev.orderia.io <-설문을 해야

https://dev.orderia.io/viralmytype <-확인가능페이지가 나옴

안녕하세요.

모바일에서 테스트 시, 해당 디바이스에 카카오톡 설치 및 로그인이 되어 있을까요?

예 로그인도 되어 있고, 카카카오톡도 설치되어 있습니다.
제 개인 핸드폰에서 진행했었습니다.

재현해보니 웹에서도 동작하지 않는것을 확인하였습니다.

유형 결과 공유하기 버튼에 이벤트가 연결되어 있지 않은것으로 보입니다.
다시 빌드 후, 확인 부탁드립니다.

안녕하세요.
다시 빌드하여 테스트 하였습니다.

디스플레이 사이즈에 따라서 패드 사이즈 이상에서는 버튼이 동작하는데
모바일 사이즈에서는 동작을 하지 않습니다.

https://dev.orderia.io/testshare

테스트 URL을 따로 올려봅니다.

혹시 사이즈에 반응을 하는 코드가 상단 코드에 있을까요?

버전은 아래 버전으로 쓰고 있습니다.
kakao_flutter_sdk_share: ^1.5.0

안녕하세요.

모바일 웹 브라우저에서 내부적으로 서비스의 버전 확인을 위해 아래 주소로 접근 하고 있습니다.

https://dev.orderia.io//version.json?cachebuster=1694570738485

JSON 응답을 기대하고 요청하나 서비스에서 html(메인페이지)로 응답이 되어 오류가 발생 하였는데요.

위 주소에서 도메인 이후 /가 두번 입력되어 서비스측에서 응답을 정상적으로 하지 못한 것으로 보입니다.

우선, 슬래시가 두번 들어가지 않도록 SDK 업데이트가 필요하기에 이를 수정하도록 하겠습니다만,
그 전까지는 위 주소 접근 시, 버전 정보가 JSON 반환되도록 조치 부탁드립니다.

불편을 드려 죄송합니다.

cc @tony.mb

1개의 좋아요

안녕하세요

kakao_flutter_sdk 담당자입니다. 해당 버그에 대해서 인지해서 버그는 수정했고, 9월 말 정도에 배포하려고 계획 중입니다.
조금 번거로우시더라도 배포되기 전까지는 kakao_flutter_sdk_common/lib/src/web/utility.dart 파일의 Utility 클래스 내부에 아래 코드 추가하셔서 사용 부탁드리겠습니다.
불편을 끼쳐드려 죄송합니다

class Utility {
  // 생략

  static Future<String> _getVersionJson() async {
    final cacheBuster = DateTime.now().millisecondsSinceEpoch;
    String baseUri = _removeEndSlash(window.document.baseUri!);
    var dio = Dio()..options.baseUrl = baseUri;
    Response<String> response = await dio.get(
      '${Uri.parse(baseUri).path}/version.json',
      queryParameters: {'cachebuster': cacheBuster},
    );
    return response.data!;
  }

  static String _removeEndSlash(String url) {
    if (url.endsWith('/')) {
      int length = url.length;
      return url.substring(0, length - 1);
    }
    return url;
  }

1개의 좋아요

예…

flutterflow를 사용중이라 SDK를 import 해 볼 수 밖에 없는데, SDK 코드 수정 방법외에 수정할 수 있는 방법은 없을까요?

아쉽지만 현재로서는 SDK 코드를 수정하는 방법 밖에 없을 것 같습니다ㅠㅠ

불편을 드려서 다시한번 죄송합니다

안녕하세요. 혹시 9월말 언제 쯤 배포가 될지 알 수 있을까요 ?

9월 26일 정도로 계획하고 있습니다

안녕하세요

제보주신 이슈 수정된 1.6.0 버전 배포되었습니다.

이슈 제보주셔서 감사합니다!

2개의 좋아요