안드로이드 스튜디오 : chipmunk 2021.2.1
카카오링크 SDK 버전 : v2-share:2.15.0
안녕하세요.
기존 카카오 공유하기 기능을 ‘com.kakao.sdk:kakaolink:1.20.0’ 로 사용하고있던중, SDK 만료에 따른 변경으로
‘com.kakao.sdk:v2-share:2.15.0’ 로 변경 개발중입니다.
FeedTemplate feedTemplate = new FeedTemplate.Builder(ContentObject.newBuilder(sendPrefix, imgUrl, LinkObject.newBuilder()
.setWebUrl(link)
.setMobileWebUrl(link).build())
.setDescrption(sendMessage)
.build())
.addButton(new ButtonObject(btnText, LinkObject.newBuilder()
.setWebUrl(link)
.setMobileWebUrl(link)
// 카카오 스키마를 사용하지 않고 다이나믹 링크로 앱 진입되도록 하기 위해 아래 함수 미사용
// .setAndroidExecutionParams(link)
// .setIosExecutionParams(link)
.build()))
.build();
KakaoLinkService.getInstance().sendDefault(activity, feedTemplate, new ResponseCallback<KakaoLinkResponse>() {
public void onFailure(ErrorResult errorResult) {
Logger.e(errorResult.toString());
}
public void onSuccess(KakaoLinkResponse result) {
}
});
라는 코드로 기존에 사용하고있던것을
FeedTemplate feedTemplate2 = new FeedTemplate(
new Content(
sendPrefix, // 타이틀
imgUrl, // 이미지
new Link(link, // web url
link // mobile web url
),
sendMessage // description
),
null,
null,
Collections.singletonList(new Button(btnText, new Link(link, link)))
);
ShareClient.getInstance().shareDefault(activity.getApplicationContext(), feedTemplate2, (SharingResult sharingResult, Throwable throwable) -> {
if (throwable != null) {
LogUtil.d(TAG, "실패 : " + throwable + " , 메세지 : " + throwable.getCause());
} else if (sharingResult != null) {
activity.startActivity(sharingResult.getIntent());
LogUtil.d("TAG", "Warning Msg: " + sharingResult.getWarningMsg());
LogUtil.d("TAG", "Argument Msg: " + sharingResult.getArgumentMsg());
}
return null;
});
으로 변경하여서 동작하도록 구현했습니다.
문제가 되는 부분은, 개발서버가 내부망이다보니 해당 코드에서 imgUrl 부분을 가져올때 문제가 발생합니다.
기존에도 카카오톡으로 공유하기를 눌렀을때 다소 시간이 걸렸으나(6~10초정도) 카카오톡으로의 액티비티가 실행이 됬다면, 변경된 코드에서는 일정시간(6~8초…정도)이 지난후
java.net.SocketTimeoutException: timeout , 메세지 : java.net.SocketException: socket is closed
아래와 같은 문구와 함께 동작을 안합니다.
다만 궁금한것은 위의 변경된 코드로 운영서버에서 동작시에 공유하기가 잘 동작되어서,
shareDefault 내부 함수에서 템플릿 내부의 이미지를 가져올때 왜 기존에 동작되던것이 변경후에는 소켓이 닫히면서 타임아웃이 나는지 궁금합니다.