-
[AOS] Android KakaoLink ์นด์นด์คํก ๊ณต์ ํ๊ธฐ 2 - Kakao Link ์ค์ 2022. 11. 13. 18:44๋ฐ์ํ๐ฑ๊ฐ๋ฐํ๊ฒฝ ์ค๋น๋์์ผ๋ฉด ๊ฐ๋ฐ ๋ค์ด๊ฐ๋ณผ๊น์?๋ค! (์นด์นด์คํก ๋ฌธ์๋ง ์์ผ๋ฉด ์ด๋๋ ๋๋ ต์ง์์...)๐ถ
์นด์นด์ค ๋งํฌ ๊ตฌํ ์ด์ , ์ด๊ธฐ ์ค์ ์ด ํ์ํ๋ค.
์ด๊ธฐ ์ค์
์นด์นด์ค ๋งํฌ ๊ตฌํ ๊ด๋ จ ๊ฐ๋ฐ ๋ฌธ์๋ ๋ค์๊ณผ ๊ฐ๋ค.
์นด์นด์ค ๋งํฌ ๊ฐ๋ฐ ๋ฌธ์
1. kakao link ํค ๋ฐ ์คํด ์ ์
strings.xml์ ๋ค์๊ณผ ๊ฐ์ด ์นด์นด์ค ํค์ ์คํด์ ์ ์ํ๋ค.
์คํด์ ๊ฒฝ์ฐ ์นด์นด์ค ์ฑ ํค ์์ "kakao" ๊ธ์๋ฅผ ์ถ๊ฐํ ํํ์ด๋ค.
<resources> <!-- kakao link setting --> <string name="kakao_app_key">์นด์นด์ค ์ฑ ํค๋ฅผ ๋ฃ์ผ์ธ์</string> <string name="kakao_scheme">kakao์นด์นด์ค ์ฑ ํค๋ฅผ ๋ฃ์ผ์ธ์</string> <string name="kakaolink_host">kakaolink</string> </resources>
ํค์ ๊ฒฝ์ฐ Kakao Developers์ ๋ฑ๋กํ ์ฑ์ ๋ค์ดํฐ๋ธ ์ฑ ํค๋ฅผ ์ด์ฉํ๋ฉด ๋๋ค.
2. AndroidManifest.xml์ kakao ์คํด ์ ์
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.nezhitsya.example"> <!-- ์ธํฐ๋ท ์ฌ์ฉ ๊ถํ ์ค์ --> <uses-permission android:name="android.permission.INTERNET" /> <application ...> <activity android:name=".view.MainActivity" android:exported="true"> <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> </application> </manifest>
3. ์ด๊ธฐํ
๊ฐ์ฅ ๋จผ์ ์คํ๋๋ Activity๋ Application์ ์์ํ ํด๋์ค์ onCreate() ํจ์์ ์๋์ ๊ฐ์ด ์ด๊ธฐํํ๋ค.
override fun onCreate() { super.onCreate() Log.d("debug hash key", Utility.getKeyHash(this)) // ์นด์นด์ค ๋งํฌ ์ด๊ธฐํ KakaoSdk.init(this, resources.getString(R.string.kakao_app_key)) }
4. ๋ฉ์์ง ํ ํ๋ฆฟ ์ ํํ๊ธฐ
5. ๊ธฐ์กด ๋ฉ์์ง ํ ํ๋ฆฟ์ ์ด์ฉํด ๊ตฌํํ๊ธฐ
val defaultFeed = FeedTemplate( content = Content( title = "ํ์ดํ", description = "์ค๋ช ~~~~~~~~", imageUrl = "https://mud-kage.kakao.com/dn/Q2iNx/btqgeRgV54P/VLdBs9cvyn8BJXB3o7N8UK/kakaolink40_original.png", link = Link( webUrl = "https://developers.kakao.com", mobileWebUrl = "https://developers.kakao.com" ) ), buttons = listOf( Button( "์น์ผ๋ก ๋ณด๊ธฐ", Link( webUrl = "https://developers.kakao.com", mobileWebUrl = "https://developers.kakao.com" ) ), Button( "์ฑ์ผ๋ก ๋ณด๊ธฐ", Link( androidExecutionParams = mapOf("key1" to "value1", "key2" to "value2"), iosExecutionParams = mapOf("key1" to "value1", "key2" to "value2") ) ) ) )
FeedTemplate๋ฅผ ์ด์ฉํ ๊ตฌํ.
๊ณต์ ๋ฌธ์์ ๋์์๋ ์์์์ itemContent์ social์ ํ์ ๊ตฌํ ํญ๋ชฉ์ด ์๋๋ฏ๋ก content์ button๋ง์ผ๋ก ๊ตฌ์ฑํด ๊ฐ๋จํ๊ณ ์ฌํํ template ๊ตฌํ์ด ๊ฐ๋ฅํ๋ค.
6. ๊ณต์ ๋ฒํผ ๋๋ ์ ๋ kakaolink ์คํ ๊ตฌํํ๊ธฐ
btn.setOnClickListener { // ์นด์นด์คํก ์ค์น์ฌ๋ถ ํ์ธ if (ShareClient.instance.isKakaoTalkSharingAvailable(context)) { // ์นด์นด์คํก์ผ๋ก ์นด์นด์คํก ๊ณต์ ๊ฐ๋ฅ ShareClient.instance.shareDefault(context, defaultFeed) { sharingResult, error -> if (error != null) { Log.e(TAG, "์นด์นด์คํก ๊ณต์ ์คํจ", error) } else if (sharingResult != null) { Log.d(TAG, "์นด์นด์คํก ๊ณต์ ์ฑ๊ณต ${sharingResult.intent}") startActivity(sharingResult.intent) // ์นด์นด์คํก ๊ณต์ ์ ์ฑ๊ณตํ์ง๋ง ์๋ ๊ฒฝ๊ณ ๋ฉ์์ง๊ฐ ์กด์ฌํ ๊ฒฝ์ฐ ์ผ๋ถ ์ปจํ ์ธ ๊ฐ ์ ์ ๋์ํ์ง ์์ ์ ์์ต๋๋ค. Log.w(TAG, "Warning Msg: ${sharingResult.warningMsg}") Log.w(TAG, "Argument Msg: ${sharingResult.argumentMsg}") } } } else { // ์นด์นด์คํก ๋ฏธ์ค์น: ์น ๊ณต์ ์ฌ์ฉ ๊ถ์ฅ // ์น ๊ณต์ ์์ ์ฝ๋ val sharerUrl = WebSharerClient.instance.makeDefaultUrl(defaultFeed) // CustomTabs์ผ๋ก ์น ๋ธ๋ผ์ฐ์ ์ด๊ธฐ // 1. CustomTabsServiceConnection ์ง์ ๋ธ๋ผ์ฐ์ ์ด๊ธฐ // ex) Chrome, ์ผ์ฑ ์ธํฐ๋ท, FireFox, ์จ์ผ ๋ฑ try { KakaoCustomTabsClient.openWithDefault(context, sharerUrl) } catch(e: UnsupportedOperationException) { // CustomTabsServiceConnection ์ง์ ๋ธ๋ผ์ฐ์ ๊ฐ ์์ ๋ ์์ธ์ฒ๋ฆฌ } // 2. CustomTabsServiceConnection ๋ฏธ์ง์ ๋ธ๋ผ์ฐ์ ์ด๊ธฐ // ex) ๋ค์, ๋ค์ด๋ฒ ๋ฑ try { KakaoCustomTabsClient.open(context, sharerUrl) } catch (e: ActivityNotFoundException) { // ๋๋ฐ์ด์ค์ ์ค์น๋ ์ธํฐ๋ท ๋ธ๋ผ์ฐ์ ๊ฐ ์์ ๋ ์์ธ์ฒ๋ฆฌ } } }
์์ ์ค์ ํ template๋ฅผ ์ด์ฉํด ๊ณต์ ๋ ๋ชจ์ต
๋ฐ์ํ'๐ฐ Android ๐ญ > ๐ ๊ฐ๋ฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[AOS] Android DeepLink ์ค์ (0) 2022.11.23 [AOS] ForegroundService (0) 2022.11.15 [AOS] Android KakaoLink ์นด์นด์คํก ๊ณต์ ํ๊ธฐ 1 - ์ด๊ธฐ ์ค์ (0) 2022.11.13 [AOS] Android Release key hash ๋ฐ๊ธํ๊ธฐ (0) 2022.11.12 [AOS] Android Studio Wildcard (*) Import ์ค์ (0) 2022.11.06