안녕하세요. 리액트 네이티브로 안드로이드 어플을 만들고 있는 초보입니다. 카카오링크는 리액트 네이티브는 연동이 안된다고 들어서 자바로 해당 기능을 구현하고 있는데요. 다른 분이 올려주신 모듈을 받고 그대로 적용했습니다.
현재 카카오링크 개발자 가이드를 보고 어플 안의 특정 글에서 공유하기 버튼을 누르면 카카오링크가 실행되고 카카오톡 내에서 앱 유/무에 따라 마켓으로 이동하는 것까지 성공했습니다.
근데 문제는 어플이 설치된 상태에서 '앱으로 보기’를 누르면 해당 글로 가는게 아니라 앱의 메인화면으로 가더라고요.
몇일 째 검색해본 결과 param 값을 안 넣어줘서 그런 거 같은데…이 부분은 어떤식으로 해야할까요?
제가 자바를 배운지 얼마 되지 않아 번거로우시겠지만 상세한 답변 부탁드리겠습니다… 감사합니다!
Package com.reactlibrary;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.bridge.ReactContextBaseJavaModule;
import com.facebook.react.bridge.ReactMethod;
import com.facebook.react.bridge.Callback;
import com.kakao.kakaolink.v2.KakaoLinkService;
import com.kakao.kakaolink.v2.KakaoLinkResponse;
import com.kakao.message.template.FeedTemplate;
import com.kakao.message.template.LinkObject;
import com.kakao.message.template.ButtonObject;
import com.kakao.message.template.SocialObject;
import com.kakao.message.template.ContentObject;
import com.kakao.network.ErrorResult;
import com.kakao.network.callback.ResponseCallback;
import java.util.HashMap;
import java.util.Map;
public class RNKakaoTestModule extends ReactContextBaseJavaModule {
private final ReactApplicationContext reactContext;
public RNKakaoTestModule(ReactApplicationContext reactContext) {
super(reactContext);
this.reactContext = reactContext;
}
@Override
public String getName() {
return "RNKakaoTest";
}
@ReactMethod
public void link(String title, String imageUrl, final Callback successCallback) {
FeedTemplate params = FeedTemplate
.newBuilder(ContentObject.newBuilder(title, imageUrl,
LinkObject.newBuilder().setWebUrl("https://developers.kakao.com")
.setMobileWebUrl("https://developers.kakao.com").build())
.build())
.addButton(new ButtonObject("앱에서 보기", LinkObject.newBuilder()
.setWebUrl("'https://developers.kakao.com")
.setMobileWebUrl("'https://developers.kakao.com")
.setAndroidExecutionParams("url")
.setIosExecutionParams("key1=value1")
.build()))
.build();
Map<String, String> serverCallbackArgs = new HashMap<>();
serverCallbackArgs.put("user_id", "${current_user_id}");
serverCallbackArgs.put("product_id", "${shared_product_id}");
KakaoLinkService.getInstance().
sendDefault(this.getCurrentActivity(),
params, serverCallbackArgs,
new ResponseCallback<KakaoLinkResponse>() {
@Override
public void onFailure(ErrorResult errorResult) {
successCallback.invoke(errorResult.toString());
}
@Override
public void onSuccess(KakaoLinkResponse result) {
successCallback.invoke(result);
}
});
}
}