This document describes how to use the multi-app function.
The Multi App is a function that allows sharing a Kakao Developers app in multiple native apps. Using the multi-app, multiple packages or bundle IDs can be set in a Kakao Developers app. Use cases are the following.
Requirement | Functions of multi-app |
---|---|
The service provides multiple native apps with one integrated membership system. | Available to use Kakao Login or Kakao Sync with one Kakao Developers app in multiple native apps. |
The service sends Kakao Talk messages or uses Kakao Talk Sharing from multiple native apps. | Available to send Kakao Talk messages or use Kakao Talk Sharing with the same Kakao Developers app. Available to set separate native app links to the message. |
By default, a Kakao Developers app can register only one bundle ID and package name. If an unregistered native app calls the Kakao APIs, errors occur. However, using the multi-app, multiple apps can use the Kakao SDK and Kakao APIs normally with one Kakao Developers app.
For better understanding, here are the terms mentioned in this documentation.
Term | Description |
---|---|
Multi-app | A feature that allows the registration of multiple bundle IDs and package names in a Kakao Developers app to use the Kakao SDK. |
Multi-package | A feature that allows the registration of the package name of the Android native app in [My Application] > [Platform] > [Android]. |
Multi-bundle ID | A feature that allows the registration of the bundle ID of the iOS native app in [My Application] > [Platform] > [Android]. |
Multi market URL | A feature that allows the registration of multiple market URLs in [My Application] > [Platform] > [Android] or [iOS]. |
Kakao Developers app | An app that registered in [My Application] of Kakao Developers. |
Native app | The services' Android or iOS app. |
Main app | The services' main native app. The main app is registered in [Package name] or [Bundle ID]. |
Sub-app | The services' additional native apps. The sub-apps are registered in [Multi-package name] or [Multi-bundle ID]. |
To use the multi-app, register all of the package names and bundle IDs of the sub-apps in [My Application] > [Platform].
🅐 Package name: Input the package name of the main app. 🅑 Multi-package name: Input the package name of each sub-app. For multiple package names, separate them with line breaks. 🅒 Market URL: For [GooglePlay], the Open Market URL to download the main app is automatically created with the package name. For [Others], enter the market URL manually. 🅓 Multi-market URL: Select a market type in Market type, and then input the package name of a sub-app in the Market URL column. To add another multi-market URL, click [Add]. 🅔 Key hash: Input all of the release and debug key hash values. Separate multiple key hash values with line breaks.
🅐 Bundle ID: Input the bundle ID of the main app. 🅑 Multi-bundle ID: Input the bundle ID of each sub-app. For multiple bundle IDs, separate them with line breaks. 🅒 iPhone app/iPad app: Input the app ID of the main app in the App store ID entry field, and then the market URL to download the main app for iPhone app or iPad is automatically created in the Market URL entry field. 🅓 Multi-market URL: Input the app ID of each sub-app in the Market URL column, and then click [Add]. To add another multi-market URL, click [Add].
The custom URL scheme is used to launch the services' apps for Kakao Login and Kakao Talk messages.
After Platform setting, check the custom URL scheme value.
Copy the value of [My Application] > [Platform] > [Android] > [Custom scheme] for each native app.
Add the copied value in the AndroidManifest.xml of each native app. Refer to the sample below.
<activity android:name="com.kakao.sdk.auth.AuthCodeHandlerActivity">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<!-- For Kaka Login Redirect URI: "${COPIED_CUSTOM_SCHEME}://oauth" -->
<data android:scheme="${CUSTOM_SCHEME_OF_DESIRED_APP}" android:host="oauth" />
<!-- For Kakao Talk Sharing: "${COPIED_CUSTOM_SCHEME}://kakaolink -->
<data android:scheme="${CUSTOM_SCHEME_OF_DESIRED_APP}" android:host="kakaolink" />
<!-- For Follow Kakao Talk Channel: "${COPIED_CUSTOM_SCHEME}://channel" -->
<data android:host="channel" android:scheme="${COPIED_CUSTOM_SCHEME}" />
<!-- For Shipping address picker: "${COPIED_CUSTOM_SCHEME}://address" -->
<data android:host="address" android:scheme="${COPIED_CUSTOM_SCHEME}" />
</intent-filter>
</activity>
For the iOS apps, the following settings are required.
Copy the value of [My Application] > [Platform] > [iOS] > [Custom scheme] for each native app.
After saving the settings, you can see the custom schemes on the Platform page.
Add the copied value to [Target] > [Info] > [URL Types] > [URL Schemes] in the Xcode.
To use the Kakao Login and Kakao Talk Sharing in the services' app, register the Allowlist. Refer to Allowlist and set LSApplicationQueriesSchemes
for the desired API.
For a Flutter app, both Android and iOS settings are required.
To initialize the Kakao SDK for Android and iOS, add customScheme
in the init()
method with the app's custom scheme that copied on the Platform page.
KakaoSdk.init(
context,
appKey = "${NATIVE_APP_KEY}",
customScheme = "${COPIED_CUSTOM_SCHEME}"
)
KakaoSDK.initSDK(
appKey: "${NATIVE_APP_KEY}",
customScheme: "${COPIED_CUSTOM_SCHEME}"
)
KakaoSdk.init(
nativeAppKey: '${NATIVE_APP_KEY}',
customScheme: '${COPIED_CUSTOM_SCHEME}',
);
By default, only one native app can be set for the app link in messages sent through Kakao Talk Sharing and Kakao Talk message API. However, with multi-app, both the main app and sub-app can be set to the app link in the message. The types of app links that can be set in messages are below.
The Link settings for the multi-app does not support the default template but the custom template. Refer to How to use.
Register a custom template in [Tools] > [Message Template Builder]. If the app uses multiple apps, the app links for each custom template can be set separately with the desired custom URL schemes or market URLs.
For example, there are two apps for the service. The message from the 'A' app can be set with the app link to the 'A' app, and the message from the 'B' app can be set with the app link to the 'B' app.
Each component can be set to the different app links. For example, 🅐 areas are set to 'A' app links, and 🅑 areas are set to 'B' app links as below.
Set the links for Android and iOS referring to the guide below. For more information, refer to Message template.
If the Kakao Developers app is using the multi-app, the setting UI provides the app list to select. Use [Custom] to apply User argument.
* Android and iOS have same UI.
Permission is required to use the multi-app. Request permission in [My Application] > [Request for App Permissions].
The app must meet the conditions below to request permission.
The multi-app operates based on a Kakao Developers app. A Kakao Developers app represents the service, so the native apps using the multi-app can be only one service. Accordingly, there are the following restrictions.
The multi-app cannot set the separate basic information for each native app.
The basic information contains the app name, icon, and company name (business, corporation, or organization name). The basic information is displayed on the consent screen of Kakao Login, the Manage Connected Services page, and Kakao Talk messages. The main app and the sub-apps share the same basic information.
Refer to the image below for the location of the basic information.
The Kakao Talk messages can be sent with the Kakao Talk Sharing or Kakao Talk message APIs.
The basic information in the bottom of the Kakao Talk messages contains the basic information, the market URLs, and the Custom URL scheme. The market URLs and the Custom URL schemes can be set for each sub-app. Refer to Message setting.
The main app and the sub-apps are sharing the link status of Kakao Login. The link status can cause errors when one of the multi-app calls Manual signup or Unlink API.