딥링킹
Android SDK 구현 프로세스의 일부로 앱에서 딥링크를 사용할 수 있는 기능을 구성합니다. 이 문서에서는 딥링킹 사용 사례에 대한 추가 예제를 제공합니다.
딥링크에 대한 소개 정보는 사용 설명서 문서를 참조하세요.
이 문서에는 더 이상 사용되지 않는 뉴스피드에 대한 정보가 포함되어 있습니다. Braze는 뉴스피드 도구를 사용하는 고객에게 보다 유연하고 맞춤 설정이 가능하며 안정적인 콘텐츠 카드 메시징 채널로 전환할 것을 권장합니다. 자세한 내용은 마이그레이션 가이드를 확인하세요.
유니버설 딥링크 위임
Android SDK는 콘텐츠 카드, 인앱 메시지, 푸시 알림에서 Braze가 여는 모든 딥링크를 사용자 지정 처리하도록 단일 위임 오브젝트를 설정할 수 있는 기능을 제공합니다.
위임 오브젝트는 IBrazeDeeplinkHandler
인터페이스를 구현하고 BrazeDeeplinkHandler.setBrazeDeeplinkHandler()
를 사용하여 설정해야 합니다. 대부분의 경우 위임은 앱의 Application.onCreate()
에서 설정해야 합니다.
다음은 YouTube URL의 커스텀 동작 및 커스텀 의도 플래그로 기본 UriAction
동작을 재정의하는 예제입니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
public class CustomDeeplinkHandler implements IBrazeDeeplinkHandler {
private static final String TAG = BrazeLogger.getBrazeLogTag(CustomDeeplinkHandler.class);
@Override
public void gotoNewsFeed(Context context, NewsfeedAction newsfeedAction) {
newsfeedAction.execute(context);
}
@Override
public void gotoUri(Context context, UriAction uriAction) {
String uri = uriAction.getUri().toString();
// Open YouTube URLs in the YouTube app and not our app
if (!StringUtils.isNullOrBlank(uri) && uri.contains("youtube.com")) {
uriAction.setUseWebView(false);
}
CustomUriAction customUriAction = new CustomUriAction(uriAction);
customUriAction.execute(context);
}
public static class CustomUriAction extends UriAction {
public CustomUriAction(@NonNull UriAction uriAction) {
super(uriAction);
}
@Override
protected void openUriWithActionView(Context context, Uri uri, Bundle extras) {
Intent intent = getActionViewIntent(context, uri, extras);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
if (intent.resolveActivity(context.getPackageManager()) != null) {
context.startActivity(intent);
} else {
BrazeLogger.w(TAG, "Could not find appropriate activity to open for deep link " + uri + ".");
}
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
class CustomDeeplinkHandler : IBrazeDeeplinkHandler {
override fun gotoNewsFeed(context: Context, newsfeedAction: NewsfeedAction) {
newsfeedAction.execute(context)
}
override fun gotoUri(context: Context, uriAction: UriAction) {
val uri = uriAction.uri.toString()
// Open YouTube URLs in the YouTube app and not our app
if (!StringUtils.isNullOrBlank(uri) && uri.contains("youtube.com")) {
uriAction.useWebView = false
}
val customUriAction = CustomUriAction(uriAction)
customUriAction.execute(context)
}
class CustomUriAction(uriAction: UriAction) : UriAction(uriAction) {
override fun openUriWithActionView(context: Context, uri: Uri, extras: Bundle) {
val intent = getActionViewIntent(context, uri, extras)
intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_SINGLE_TOP
if (intent.resolveActivity(context.packageManager) != null) {
context.startActivity(intent)
} else {
BrazeLogger.w(TAG, "Could not find appropriate activity to open for deep link $uri.")
}
}
}
companion object {
private val TAG = BrazeLogger.getBrazeLogTag(CustomDeeplinkHandler::class.java)
}
}
앱 설정에 대한 딥링킹
딥링크에서 앱 설정을 바로 열 수 있도록 하려면 커스텀 BrazeDeeplinkHandler
가 필요합니다. 다음 예제에서는 open_notification_page
라는 커스텀 키-값 페어를 통해 딥링크에서 앱 설정 페이지를 엽니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
BrazeDeeplinkHandler.setBrazeDeeplinkHandler(new IBrazeDeeplinkHandler() {
@Override
public void gotoUri(Context context, UriAction uriAction) {
final Bundle extras = uriAction.getExtras();
if (extras.containsKey("open_notification_page")) {
Intent intent = new Intent();
intent.setAction("android.settings.APP_NOTIFICATION_SETTINGS");
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
//for Android 5-7
intent.putExtra("app_package", context.getPackageName());
intent.putExtra("app_uid", context.getApplicationInfo().uid);
// for Android 8 and later
intent.putExtra("android.provider.extra.APP_PACKAGE", context.getPackageName());
context.startActivity(intent);
}
}
@Override
public void gotoNewsFeed(Context context, NewsfeedAction newsfeedAction) {}
});
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
BrazeDeeplinkHandler.setBrazeDeeplinkHandler(object : IBrazeDeeplinkHandler {
override fun gotoUri(context: Context, uriAction: UriAction) {
val extras = uriAction.extras
if (extras.containsKey("open_notification_page")) {
val intent = Intent()
intent.action = "android.settings.APP_NOTIFICATION_SETTINGS"
intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK
//for Android 5-7
intent.putExtra("app_package", context.packageName)
intent.putExtra("app_uid", context.applicationInfo.uid)
// for Android 8 and later
intent.putExtra("android.provider.extra.APP_PACKAGE", context.packageName)
context.startActivity(intent)
}
}
override fun gotoNewsFeed(context: Context, newsfeedAction: NewsfeedAction) {}
})
뉴스피드에 대한 딥링킹
뉴스피드는 사용 중지될 예정입니다. Braze는 뉴스피드 도구를 사용하는 고객에게 보다 유연하고 맞춤 설정이 가능하며 안정적인 콘텐츠 카드 메시징 채널로 전환할 것을 권장합니다. 자세한 내용은 마이그레이션 가이드를 확인하세요.
푸시 알림에서 Braze 뉴스피드에 딥링크를 연결하려면 뉴스피드 활동에 대한 사용자 지정 딥링크를 생성하세요.
그런 다음, 대시보드 또는 API를 통해 푸시 알림 캠페인을 설정할 때 알림이 뉴스피드 딥링크로 이동하도록 구성합니다.
사용자 지정 WebView 활동
기본적으로, 웹사이트 딥링크가 Braze에 의해 앱 내부에서 열리면 BrazeWebViewActivity
에 의해 처리됩니다. 이를 변경하려면:
1. com.braze.Constants.BRAZE_WEBVIEW_URL_EXTRA
키를 사용하여 Intent.getExtras()
에서 대상 URL을 처리하는 새 활동을 생성합니다. 예제는 BrazeWebViewActivity.java
를 참조하세요.
2. 해당 활동을 AndroidManifest.xml
에 추가하고 exported
를 false
로 설정합니다.
1
2
3
<activity
android:name=".MyCustomWebViewActivity"
android:exported="false" />
3. BrazeConfig
빌더 객체에서 사용자 지정 활동을 설정합니다. 빌더를 빌드하여 Application.onCreate()
의 Braze.configure()
에 전달합니다.
1
2
3
4
5
BrazeConfig brazeConfig = new BrazeConfig.Builder()
.setCustomWebViewActivityClass(MyCustomWebViewActivity::class)
...
.build();
Braze.configure(this, brazeConfig);
1
2
3
4
5
val brazeConfig = BrazeConfig.Builder()
.setCustomWebViewActivityClass(MyCustomWebViewActivity::class.java)
...
.build()
Braze.configure(this, brazeConfig)