Closed ungchun closed 3 years ago
안녕하세요~
말씀하신 내용으로는 정확한 상황 파악이 어려워서, 이슈가 발생한 부분의 코드를 첨부해주실 수 있으실까요?
현재 코드는 github 에 올라와있는 예제 코드 그대로 사용중입니다! 버전 0.5.~ 사용할때는 이런 현상이 발생한적이 없었습니다.. custom, default, scrap 버튼 3개 다 눌러도 똑같은 현상이 발생하네요..
import 'package:kakao_flutter_sdk/link.dart';
class LinkScreen extends StatelessWidget {
@override
Widget build(BuildContext context) {
return ListView(
children: <Widget>[
ListTile(title: Text("Custom"), onTap: onTapCustom),
ListTile(title: Text("Default"), onTap: onTapDefault),
ListTile(title: Text("Scrap"), onTap: onTapScrap)
],
);
}
void onTapDefault() async {
try {
var template = FeedTemplate(
Content(
"딸기 치즈 케익",
Uri.parse(
"http://mud-kage.kakao.co.kr/dn/Q2iNx/btqgeRgV54P/VLdBs9cvyn8BJXB3o7N8UK/kakaolink40_original.png"),
Link(
webUrl: Uri.parse("https://developers.kakao.com"),
mobileWebUrl: Uri.parse("https://developers.kakao.com"))),
social: Social(likeCount: 286, commentCount: 45, sharedCount: 845),
buttons: [
Button("웹으로 보기",
Link(webUrl: Uri.parse("https://developers.kakao.com"))),
Button("앱으로 보기",
Link(webUrl: Uri.parse("https://developers.kakao.com"))),
]);
var uri = await LinkClient.instance.defaultWithWeb(template);
await launchBrowserTab(uri);
} catch (e) {
print(e.toString());
}
}
void onTapCustom() async {
try {
final talkInstalled = await isKakaoTalkInstalled();
if (talkInstalled) {
var uri = await LinkClient.instance
.customWithTalk(528726, templateArgs: {"key1": "value1"});
await LinkClient.instance.launchKakaoTalk(uri);
return;
}
var uri = await LinkClient.instance
.customWithWeb(528726, templateArgs: {"key1": "value1"});
await launchBrowserTab(uri);
} catch (e) {
print(e.toString());
}
}
void onTapScrap() async {
print("@@@@@@@@@@@@@@@@@@@@@@@ ${KakaoContext.platformClientId}");
try {
final talkInstalled = await isKakaoTalkInstalled();
if (talkInstalled) {
Uri uri = await LinkClient.instance
.customWithTalk(528726, templateArgs: {"key1": "value1"});
await launchBrowserTab(uri);
// var uri = await LinkClient.instance
// .scrapWithTalk("https://developers.kakao.com");
// await LinkClient.instance.launchKakaoTalk(uri);
return;
}
var uri = await LinkClient.instance
.scrapWithWeb("https://developers.kakao.com");
await launchBrowserTab(uri);
} catch (e) {
print(e.toString());
}
}
}
혹시 카카오 디벨로퍼스 홈페이지에서 메시지 템플릿은 생성하셨나요?
만약 생성하지 않으셨다면, 생성 후 LinkClient.instance.customWithWeb(528726, templateArgs: {"key1": "value1"});
에서 528726을 생성한 ID로 변경하면 정상 동작할 것으로 보여요
답변 감사합니다! 우선 저는 default 부분을 사용하고 있어서 따로 메시지 템플릿은 생성하지 않았습니다. 디버그 키 해시값도 제대로 들어가있고, 코드상에서 네이티브 앱키 또한 main문에 등록되어있습니다.
제 테스트 코드는 default 부분을 쓰고있습니다.
import 'package:kakao_flutter_sdk/link.dart';
class LinkScreen extends StatelessWidget {
@override
Widget build(BuildContext context) {
return ListView(
children: <Widget>[
ListTile(title: Text("Default"), onTap: onTapDefault),
],
);
}
void onTapDefault() async {
try {
print("1111");
var template = FeedTemplate(
Content(
"딸기 치즈 케익",
Uri.parse(
"http://mud-kage.kakao.co.kr/dn/Q2iNx/btqgeRgV54P/VLdBs9cvyn8BJXB3o7N8UK/kakaolink40_original.png"),
Link(
webUrl: Uri.parse("https://developers.kakao.com"),
mobileWebUrl: Uri.parse("https://developers.kakao.com"))),
buttons: [
Button("웹으로 보기",
Link(webUrl: Uri.parse("https://developers.kakao.com"))),
Button("앱으로 보기",
Link(webUrl: Uri.parse("https://developers.kakao.com"))),
]);
print("2222");
var uri = await LinkClient.instance.defaultWithTalk(template);
print("3333");
await LinkClient.instance.launchKakaoTalk(uri);
print("4444");
} catch (e) {
print("error");
print(e.toString());
}
}
}
이 코드를 돌리면
1, 2 까지는 print가 나오는데 var uri = await LinkClient.instance.defaultWithWeb(template); 이 부분 다음에 catch로 잡혀버려서 실행이 되질 않네요..
LinkClient.instance.defaultWithTalk()
을 사용하시고 싶으신건가요, 아니면 LinkClient.instance.defaultWithWeb()
을 사용하고 싶으신건가요?
코드와 설명이 달라서 헷갈리네요
LinkClient.instance.defaultWithTalk() 입니다 !
해당 이슈가 발생하는 디바이스 OS 버전이 어떻게 되나요?
추가로 앱 id 알려주시면 감사하겠습니다.
안드로이드 버전 7.0 이고, 앱 id는 528726 입니다!
첨부해주신 코드를 그대로 사용했음에도 저희 쪽에서 해당 이슈가 재현이 되지 않아서 정확한 원인을 파악하지 못한 상태입니다ㅠㅠ
다만 서버 로그를 확인했을 때 키 해시가 잘못됐다는 에러 로그가 있네요.
키 해시 확인 후 수정 부탁드리겠습니다.
바쁘신와중에 답변 감사합니다! 키 해시 값 재확인해서 수정하고 했는데도 똑같은 이슈가 뜨네요ㅠㅠ.. 마지막으로 서버 로그에 키 해시 잘못됐다는 에러 다시뜨는지 확인가능할까요..? 이슈는 닫아놓겠습니다! 링크는 나중에 다시 해보려 합니다.. 감사합니다
@ungchun 서버 로그를 확인해보면 앱 id 528726
로는 20일 16시 39분 이후로는 서버에 요청이 없고, 마지막 요청 역시도 등록되지 않은 키 해시로 되어있네요ㅠㅠ
현재 앱 id 528726
에는 7i3 , UEm, aak, xL+ 이렇게 4개의 키 해시 값이 등록되어있고, 서버에 요청들어오는 키 해시 값은 IwO*** 입니다.
한번 더 확인 부탁드려요
key hash 값 openSSL 버전에 따라 바뀐다는 말이 있어서 안드로이드에서 직접 key hash를 추출했더니 IwO... 값이 나와서 다시 해보니 정상 작동됩니다!! 감사합니다ㅠㅠ
안녕하세요 카카오 링크 기능을 만들고 싶어서 구현중에 있는 학생입니다. 코드는 kakao_flutter_sdk github에 example, link.dart 파일을 이용했구요. 버전은 0.6.3 버전 쓰고 있습니다. custome, default, scrap 세개전부다 똑같은 현상이 발생합니다. map 호출하는데 있어서 null 정보가 있다는거 같은데.. 아무리 찾아보고 해도 해결이 쉽게 되지 않아서 문의드립니다!