Android

Android kakao link (카카오 링크) 코드

Machine_웅 2021. 1. 13. 17:26
728x90
반응형
   // 카카오 이미지
    public void share_kakao_image() {

        /*
        // 지도 , 이미지 , 단순 링크
          참고 주소 :
          1)
          https://thisisspear.tistory.com/52
          2)
          https://developers.kakao.com/docs/latest/ko/message/message-template#social
         */

        String title ="타이틀";
        String imageUrl = "http://mud-kage.kakao.co.kr/dn/NTmhS/btqfEUdFAUf/FjKzkZsnoeE4o19klTOVI1/openlink_640x640s.jpg";
        String descrption = "카카오 피드 메세지 템플릿.";

        // 5개의 속성 중 최대 3개까지만 표시해 줍니다. 우선 순위는 Like > Comment > Shared > View > Subscriber 순서입니다.
        int like_count = 10;
        int comment_count = 20;
        int share_count = 30;
        int view_count = 40;
        int sub_count = 50;



        FeedTemplate params = FeedTemplate
                .newBuilder(ContentObject.newBuilder(title,imageUrl,
                        // ListTemplate
                        LinkObject.newBuilder()
                                .setWebUrl("https://developers.kakao.com")
                                .setMobileWebUrl("https://developers.kakao.com")
                                .build())
                        .setDescrption(descrption)
                        .build())

                .setSocial(SocialObject.newBuilder()
                        .setLikeCount(like_count)
                        .setCommentCount(comment_count)
                        .setSharedCount(share_count)
                        .setViewCount(view_count)
                        .setSubscriberCount(sub_count)
                        .build())  //소셜 카운트

                .addButton(new ButtonObject("웹에서 보기", LinkObject.newBuilder()
                        .setWebUrl("'https://developers.kakao.com")
                        .setMobileWebUrl("'https://developers.kakao.com").build()))

                .addButton(new ButtonObject("앱에서 보기", LinkObject.newBuilder()
                        .setWebUrl("'https://developers.kakao.com")
                        .setMobileWebUrl("'https://developers.kakao.com")
                        .setAndroidExecutionParams("key1=valgeue1")
                        .setIosExecutionParams("key1=value1")
                        .build()))
                .build();

        Map<String, String> serverCallbackArgs = new HashMap<String, String>();
        serverCallbackArgs.put("user_id", "${current_user_id}");
        serverCallbackArgs.put("product_id", "${shared_product_id}");

        KakaoLinkService.getInstance().sendDefault(this, params, serverCallbackArgs, new ResponseCallback<KakaoLinkResponse>() {
            @Override
            public void onFailure(ErrorResult errorResult) {
                Logger.e(errorResult.toString());
                mLog(TAG,errorResult.toString());
            }

            @Override
            public void onSuccess(KakaoLinkResponse result) {
                // 템플릿 밸리데이션과 쿼터 체크가 성공적으로 끝남. 톡에서 정상적으로 보내졌는지 보장은 할 수 없다. 전송 성공 유무는 서버콜백 기능을 이용하여야 한다.
                mLog(TAG, "성공"+result);
         /*       mLog(TAG, "result.getTemplateId();"+result.getTemplateId());
                mLog(TAG, "result.getTemplateArgs();"+result.getTemplateArgs().toString());*/
            }
        });

    }

    // 카카오 지도
    public void share_kakaoMap() {

        /*
        // 지도 , 이미지 , 단순 링크
          참고 주소 :
          1)
          https://thisisspear.tistory.com/52
          2)
          https://developers.kakao.com/docs/latest/ko/message/message-template#social
         */

        String title ="타이틀";
        String descrption = "카카오 지도 메세지 템플릿.";



        // 5개의 속성 중 최대 3개까지만 표시해 줍니다. 우선 순위는 Like > Comment > Shared > View > Subscriber 순서입니다.
        int like_count = 10;
        int comment_count = 20;
        int share_count = 30;
        int view_count = 40;
        int sub_count = 50;


        // 검색할 주소
        String address = "인천시 계양구 계산로 171";

        // 이미지가 없으면  비어서 보여진다. null은 안됨
        String imageUrl = "http://mud-kage.kakao.co.kr/dn/bSbH9w/btqgegaEDfW/vD9KKV0hEintg6bZT4v4WK/kakaolink40_original.png";

        LocationTemplate params = LocationTemplate.newBuilder(
                address, // 보여줄 주소

                // Builder newBuilder(final String title, final String imageUrl, final LinkObject link)
                ContentObject.newBuilder(title,imageUrl,
                        // ListTemplate
                        LinkObject.newBuilder() // 링크 오브젝트
                                .setWebUrl("https://developers.kakao.com")
                                .setMobileWebUrl("https://developers.kakao.com")
                                .build())
                        .setDescrption(descrption)
                        .build())

                //위치 보기시 하단에 나타나는 타이틀
                .setAddressTitle("주소 타이틀")

                // 소셜 카운트
                .setSocial(SocialObject.newBuilder() // 소셜 오브젝트
                        .setLikeCount(like_count)
                        .setCommentCount(comment_count)
                        .setSharedCount(share_count)
                        .setViewCount(view_count)
                        .setSubscriberCount(sub_count)
                        .build())

                // 버튼 1
                .addButton(new ButtonObject("자세히 보기", LinkObject.newBuilder()
                        .setWebUrl("'https://developers.kakao.com")
                        .setMobileWebUrl("'https://developers.kakao.com")
                        .setAndroidExecutionParams("key1=value1") // JSON -> P-> DID 주소 뒤에 담김.
                        .setIosExecutionParams("key1=value1")
                        .build())
         
        ).build();


        Map<String, String> serverCallbackArgs = new HashMap<String, String>();
        serverCallbackArgs.put("user_id", "${current_user_id}");
        serverCallbackArgs.put("product_id", "${shared_product_id}");

        KakaoLinkService.getInstance().sendDefault(this, params, serverCallbackArgs, new ResponseCallback<KakaoLinkResponse>() {
            @Override
            public void onFailure(ErrorResult errorResult) {
                Logger.e(errorResult.toString());
                mLog(TAG,errorResult.toString());
            }

            @Override
            public void onSuccess(KakaoLinkResponse result) {
                // 템플릿 밸리데이션과 쿼터 체크가 성공적으로 끝남. 톡에서 정상적으로 보내졌는지 보장은 할 수 없다. 전송 성공 유무는 서버콜백 기능을 이용하여야 한다.
                mLog(TAG, "성공"+result);
                mLog(TAG, "result.getTemplateMsg();"+result.getTemplateMsg());

         /*       mLog(TAG, "result.getTemplateId();"+result.getTemplateId());
                mLog(TAG, "result.getTemplateArgs();"+result.getTemplateArgs().toString());*/
            }
        });


    }

    // 카카오 텍스트
    public void share_kakao_text(){
     /*
        // 지도 , 이미지 , 단순 링크
          참고 주소 :
          1)
          https://thisisspear.tistory.com/52
          2)
          https://developers.kakao.com/docs/latest/ko/message/message-template#social
         */

        String content_text ="텍스트값";

        //final String text, final LinkObject linkObject) {
        TextTemplate params = TextTemplate.newBuilder(
                content_text, // 텍스트값
                LinkObject.newBuilder() // 링크 오브젝트
                        .setWebUrl("https://developers.kakao.com")
                        .setMobileWebUrl("https://developers.kakao.com")
                        .build())

                // 버튼 1
                .addButton(new ButtonObject("버튼 1", LinkObject.newBuilder()
                        .setWebUrl("'https://developers.kakao.com")
                        .setMobileWebUrl("'https://developers.kakao.com")
                        .setAndroidExecutionParams("key1=value1") // JSON -> P-> DID 주소 뒤에 담김.
                        .setIosExecutionParams("key1=value1")
                        .build()))

                // 버튼 2
                .addButton(new ButtonObject("버튼 2", LinkObject.newBuilder()
                        .setWebUrl("'https://developers.kakao.com")
                        .setMobileWebUrl("'https://developers.kakao.com")
                        .setAndroidExecutionParams("key1=value1") // JSON -> P-> DID 주소 뒤에 담김.
                        .setIosExecutionParams("key1=value1")
                        .build()))

                .build();


        Map<String, String> serverCallbackArgs = new HashMap<String, String>();
        serverCallbackArgs.put("user_id", "${current_user_id}");
        serverCallbackArgs.put("product_id", "${shared_product_id}");

        KakaoLinkService.getInstance().sendDefault(this, params, serverCallbackArgs, new ResponseCallback<KakaoLinkResponse>() {
            @Override
            public void onFailure(ErrorResult errorResult) {
                Logger.e(errorResult.toString());
                mLog(TAG,errorResult.toString());
            }

            @Override
            public void onSuccess(KakaoLinkResponse result) {
                // 템플릿 밸리데이션과 쿼터 체크가 성공적으로 끝남. 톡에서 정상적으로 보내졌는지 보장은 할 수 없다. 전송 성공 유무는 서버콜백 기능을 이용하여야 한다.
                mLog(TAG, "성공"+result);

         /*       mLog(TAG, "result.getTemplateId();"+result.getTemplateId());
                mLog(TAG, "result.getTemplateArgs();"+result.getTemplateArgs().toString());*/
            }
        });
    }

    // 카카오 템플릿
    public void share_kakao_template(){
        // 템플릿 종류 :  피트, 리스크, 커머스
        String templateId = "44618"; // 템플릿 피드아이디

        // 템플릿에서  사용할 데이터 맵
        Map<String, String> templateArgs = new HashMap<String, String>();
        templateArgs.put("img", "https://taegon.kim/wp-content/uploads/2018/05/image-9.png");
        templateArgs.put("title","제목");
        templateArgs.put("sub","텍스트");
        templateArgs.put("img2","https://taegon.kim/wp-content/uploads/2018/05/image-9.png");

        KakaoLinkService.getInstance().sendCustom(this, templateId, templateArgs, new ResponseCallback<KakaoLinkResponse>() {
            @Override
            public void onFailure(ErrorResult errorResult) {
                Log.e("EOTEST",errorResult.toString());
            }

            @Override
            public void onSuccess(KakaoLinkResponse result) {
                // 템플릿 밸리데이션과 쿼터 체크가 성공적으로 끝남. 톡에서 정상적으로 보내졌는지 보장은 할 수 없다.
            }
        });
    }

 

 

버튼클릭으로 앱으로 이동 했을때 데이터 받기 

  // 앱으로 이동시 담은 데이터 가지고 오기
        Intent intent = getIntent();
        if(intent.getAction() == Intent.ACTION_VIEW){
            String data = intent.getDataString();
            Log.d("TEST","data : "+data);

            // setAndroidExecutionParams에서 전달했던 키값
            String test = intent.getData().getQueryParameter("key1");
            Log.d("TEST","data  _  test: "+test);
        }

 

Manifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="kr.co.test.test_module">


    <uses-permission android:name="android.permission.INTERNET" />

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.test_module">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>

            <intent-filter>
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />
                <data android:scheme="@string/kakao_scheme"
                    android:host="@string/kakaolink_host" />
            </intent-filter>

        </activity>


        <meta-data
            android:name="com.kakao.sdk.AppKey"
            android:value="@string/kakao_app_key" />

    </application>

</manifest>​
728x90
반응형