문의 시 사용하시는 SDK 버전 정보를 알려주세요.
2.0.5, 안드로이드
안녕하세요
리액트네이티브 웹뷰로 서비스를 제공하고자 하는데요
웹뷰에서 카카오톡 js sdk를 사용할 경우 네이티브에서 request 핸들링이 필요하다는 문서를 보았습니다.
(https://developers.kakao.com/docs/latest/ko/getting-started/sdk-js#hybrid-app)
리액트 네이티브 웹뷰에서는 onShouldStartLoadWithRequest라는 메소드에서 request를 처리하는데요 (https://reactnative.dev/docs/webview#onshouldstartloadwithrequest)
다른 pg사들이 사용하는 intent는 해당 메소드에서 컨트롤을 해서 결제앱을 띄웠지만
카카오톡 공유하기는 해당 메소드에서 request가 잡히지 않았습니다.
그래서 고안한 방법이 네이티브로 직접 구현하려고 했습니다.
리액트 네이티브에서 네이티브 소스를 구현하는 방법을 찾아서 다음과 같은 소스를 구현하게 되었는데요
import android.content.Context;
import com.facebook.react.bridge.ReactContextBaseJavaModule;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.bridge.Callback;
import com.facebook.react.bridge.ReactMethod;
import com.kakao.sdk.link.LinkClient;
import com.kakao.sdk.link.model.LinkResult;
import com.kakao.sdk.template.model.DefaultTemplate;
import com.kakao.sdk.template.model.FeedTemplate;
import com.kakao.sdk.template.model.Content;
import com.kakao.sdk.template.model.Link;
import kotlin.Unit;
import kotlin.jvm.functions.Function2;
public class RNKakaoLinkModule extends ReactContextBaseJavaModule {
private static ReactApplicationContext reactContext;
RNKakaoLinkModule(ReactApplicationContext reactContext){
super(reactContext);
this.reactContext = reactContext;
}
@Override
public String getName(){
return "KakaoLink";
}
@ReactMethod
public void send(final Callback callback) {
Context context = this.reactContext.getBaseContext();
if(LinkClient.getInstance().isKakaoLinkAvailable(context)){
Content content = new Content({타이틀},
{이미지링크},
new Link({링크}));
DefaultTemplate defaultTemplate = new FeedTemplate(content);
LinkClient.getInstance().defaultTemplate(context, defaultTemplate, new Function2<LinkResult, Throwable, Unit>() {
@Override
public Unit invoke(LinkResult linkResult, Throwable throwable) {
callback.invoke("ok");
return null;
}
}
);
}
}
}
개발 문서에는 샘플 예제가 코틀린 밖에 없었고
defaultTemplate 메소드에는 콜백함수가 코틀린으로만 되어있어서
일단 억지로 작성을 했는데 역시나 작동하지 않더라구요
invoke까지는 됐지만 카카오톡 앱이 뜨지 않았습니다.
그래서 문의드릴 질문은
- 리액트 네이티브 + 웹뷰 + 카카오톡 메시지 javascript SDK 환경에서 카카오톡 공유하기를 이용할 수 있는 방법이 없는지
- 안드로이드 네이티브 java 샘플 코드는 없는지
입니다.
추가적으로 혹시 주실 말씀이나 팁이 있으시다면 부탁드립니다.
감사합니다