딥링크 설정하기
이 가이드는 앱에 딥링크 기능을 설정하여 웹브라우저에서 "myapp://"
와 같은 딥링크 URL로 앱을 실행할 수 있도록 안내합니다.
IGAWorks 서비스 내에세 딥링크 기능을 문제없이 사용하기 위해 본 가이드를 반드시 확인 해주세요.
1. Android 딥링크 설정 / 필수 확인사항!
2. iOS 딥링크 설정 / 필수 확인사항!
Android Deep Link Settings
안드로이드 앱에 딥링크 기능을 설정하기 위해서는 AndroidManifest.xml 파일에 아래와 같은 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="YOUR_SCHEME_NAME_HERE" />
</intent-filter>
scheme 값을 정하지 못하셨다면, 애드브릭스 앱키를 이용하셔도 됩니다.
애드브릭스 앱키가 123456이라면 아래 예시처럼 AndroidManifest.xml 파일을 수정하시면 되겠습니다.
<activity android:label="@string/app_name" android:launchMode="singleTask" ...... >
<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="adbrix123456"/>
</intent-filter>
</activity>
주의! 딥링크 트랙킹이 원할하게 작동할 수 있도록 Activity 는 singleTask 를 사용해 주시길 부탁드립니다.
딥링크 동작 확인
아래 절차를 따라 딥링크가 정상 설정되었는지 확인할 수 있습니다.
- 위 내용을 적용한 앱을 빌드하고 실행합니다.
- 윈도우 커맨드 창을 실행합니다. ( Win+R키, cmd 입력)
- adb shell 을 실행합니다.
- adb 명령어를 입력합니다. 위 예시와 같이 설정하였을 때에는 adbrix123456:// 을 [URI] 부분에 입력합니다.
C:/>adb shell
[명령어]
am start -a android.intent.action.VIEW -d [URI] [PackageName]
[예시]
am start -a android.intent.action.VIEW -d "adbrix123456://" com.myapp.packageName
위와 같이 테스트를 진행하였을 때, 앱이 실행이 된다면 정상적으로 딥링크 설정이 된 것입니다.
Google Developer Guide를 참고하시면 딥링크 설정에 대한 더 상세한 정보를 얻으실 수 있습니다.
딥링크 오픈 트래킹
딥링크 설정을 통해서 딥링크 트래킹링크를 통한 앱 오픈이 가능하게 되었습니다.
딥링크 트래킹링크 리포팅을 위해 안드로이드 개발환경에서는 몇가지 예외적인 케이스들에 대해서 주의를 해야 합니다.
위 플로우 차트를 참고하여 각 예외 케이스들에 대한 솔루션을 적용합니다.
솔루션 A. 앱 런치모드(LaunchMode)를 SingleTask 이외의 모드 혹은 외부 툴을 사용하는 경우.
어떠한 목적에 의해서 Standard, SingleTop 등 SingleTask 이외의 모드 혹은 Unity, Cocos2dx 와 같은 외부 툴을 사용하시는 경우에는 딥링크를 통한 앱 오픈 시에 딥링크 트래킹이 정상적으로 되지 않는 경우가 발생합니다.
따라서 아래의 가이드를 참고하여 AndroidManifest.xml 파일에 IgawDefaultDeeplinkActivity 를 기본 딥링크 추가합니다.
<activity
android:name="com.igaworks.IgawDefaultDeeplinkActivity"
android:label="@string/app_name"
android:launchMode="singleTask"
android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"
android:noHistory="true">
<intent-filter android:label="@string/app_name">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<!—딥링크 스키마와 호스트를 입력합니다. -->
<data android:scheme="YOUR_SCHEME_NAME_HERE" android:host="YOUR_HOST_NAME_HERE" />
</intent-filter>
<!—딥링크 트래킹 이후에 메인액티비티로 리디렉션 처리를 하기 위해 메인 액티비티의 풀 패키지 네임을 입력합니다." -->
<meta-data android:name="IgawRedirectActivity" android:value="INPUT_YOUR_FULL_PACKAGE_NAME_OF_MAIN_ACTIVITY"/>
</activity>
위와 같이 설정 시, 딥링크로 앱 오픈이 될 때, 기존 딥링크 오픈 액티비티 대신, IgawDefaultDeeplinkActivity 가 실행이 되어 트래킹을 수행한 뒤에 IgawRedirectActivity 에 설정하신 딥링크 오픈 액티비티가 오픈됩니다.
IgawDefaultDeeplinkActivity는 아무런 view도 가지고 있지 않으며 단순히 트래킹만을 위한 기능을 수행하므로 유저에게 노출되지 않습니다.
주의! IgawDefaultDeeplinkActivity를 사용하실 때에는 기존에 세팅하신 딥링크 설정은 제거하셔야 합니다.
솔루션 B. 딥링크 오픈 이후에 인텐트 데이터를 수정 처리하는 경우. (SingleTask 모드를 사용하는 경우)
딥링크로 앱이 오픈될 때에 인텐트로 전달되어지는 딥링크 데이터를 이용하여 앱의 상태를 변경할 수 있습니다.
관련된 동작을 수행한 뒤에 딥링크 데이터를 모두 삭제하시거나 수정하시는 경우에, 애드브릭스 트래킹이 정상 동작할 수 없습니다.
때문에 딥링크 데이터가 포함되어져 있는 인텐트를 수정하시기 전에 애드브릭스 트래킹을 위한 api를 호출해주셔야 합니다.
아래 가이드를 참고하여 IgawCommon.registerReferrer api를 호출해주세요.
// Example Code
public class DeeplinkActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
onNewIntent(DeeplinkActivity.this.getIntent());
}
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
setIntent(intent);
IgawCommon.registerReferrer(DeeplinkActivity.this);
}
}
iOS Deep Link Settings
iOS 앱에 딥링크 기능을 설정하기 위해서는 앱의 info.plist 파일을 수정해야 합니다.
- Xcode 프로젝트에서 Info panel을 오픈합니다.
- URL types 항목에 URL Schemes 를 추가합니다.
- scheme 값을 정하지 못하셨다면, 애드브릭스 앱키를 이용하셔도
됩니다.
애드브릭스 앱키가 123456 이라면, 아래 예시처럼 수정하시면 되겠습니다.
딥링크 동작 확인
아래 절차를 따라 딥링크가 정상 설정되었는지 확인할 수 있습니다.
- 위 내용을 적용한 앱을 빌드하고 실행합니다.
- 실행된 디바이스 혹은 에뮬레이터의 사파리 브라우저를 실행합니다.
- 주소창에 scheme 값을 입력합니다. 위 예시와 같이 설정하였을 때에는 adbrix123456:// 을 입력합니다.
앱이 실행된다면 정상적으로 딥링크 설정이 된 것입니다.
딥링크 오픈 트래킹
딥링크 설정을 통해서 딥링크 트래킹링크를 통한 앱 오픈이 가능하게 되었습니다.
#if __IPHONE_OS_VERSION_MAX_ALLOWED < __IPHONE_9_0
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
[IgaworksCore passOpenURL:url];
return YES;
}
#else
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary *)options
{
[IgaworksCore passOpenURL:url];
return YES;
}
#endif