그로스 액션 (Growth Action) 연동하기 [Android]
팔로우
시작하기
디파이너리 그로스액션은 고객사의 인게이지먼트 마케팅 활동을 돕기 위한 기능을 제공합니다.
[그로스액션 (Growth Action) 서비스 알아보기]
디파이너리가 제공하는 기능을 이용하여 오디언스 그룹을 생성하고 각 오디언스를 타겟으로 하는 개인화된 마케팅을 진행할 수 있습니다.
[[인용:안내:보통]] 그로스액션을 이용하기 위해서는 디파이너리 유료플랜 이용이 필요합니다. [이용 문의하기]
알림 구독 및 거부 설정
디파이너리 그로스 액션 기능을 연동하기 위해서는 알림에 대한 구독 설정이 필요합니다. SDK에서는 푸시 뿐만 아닌 다른 채널에 대해서 구독 및 거부 설정이 가능하며 현재 설정되어 있는 값을 가져오는 기능도 같이 제공합니다.
알림 구독 및 거부하기
SubscriptionStatus.Builder를 사용하여 구독 정보를 설정 후 setSubscriptionStatus 메소드로 서버에 설정한 정보를 전달합니다.
[[인용:위험:보통]]주의사항
정보성 알림 수신 동의 여부는 광고성 알림 수신 동의 여부를 포함한 상위 항목입니다. 따라서 정보성 알림 수신 동의 여부가 UNSUBSCRIBED라면 광고성 알림 수신 동의 여부 및 야간 광고성 알림 수신 동의 여부가 SUBSCRIBED 여도 광고성 푸시가 발송되지 않습니다.
[[인용:위험:보통]]주의사항
발송 로직에 따라 설정 이력이 없을 경우 발송되는 경우가 있으므로 알림이 수신되지를 원하지 않는 항목의 경우 반드시 UNSUBSCRIBED로 설정하여 호출 주시기 바랍니다.
[[인용:위험:보통]]주의사항
login(String user_Id) API 를 호출하지 않은 채 해당 API를 사용할 경우, 정보성 알림만 사용이 가능하며 기기기반 오디언스로 분류가 됩니다. 유저기반 오디언스, 광고성 알림을 사용하기 위해 login(String user_Id)호출이 선행되어야 합니다.
- 구독 정보 만들기
- SubscriptionStatus.Builder
- setInformativeNotificationFlag() : 정보성 알림 수신 동의 설정하기
- setMarketingNotificationFlag() : 광고성 알림 수신 동의 설정하기
- setMarketingNotificationFlagForPushChannel() : 광고성 알림 수신 동의(푸시 채널) 설정하기
- setMarketingNotificationFlagForSmsChannel() : 광고성 알림 수신 동의(SMS 채널) 설정하기
- setMarketingNotificationFlagForKakaoChannel() : 광고성 알림 수신 동의(알림톡 채널) 설정하기
- setMarketingNotificationAtNightFlag() : 야간 광고성 알림 수신 동의 설정하기
- setMarketingNotificationAtNightFlagForPushChannel() : 야간 광고성 알림 수신 동의(푸시 채널) 설정하기
- setMarketingNotificationAtNightFlagForSmsChannel() : 야간 광고성 알림 수신 동의(SMS 채널) 설정하기
- setMarketingNotificationAtNightFlagForKakaoChannel() : 야간 광고성 알림 수신 동의(알림톡 채널) 설정하기
- SubscriptionStatus.Type
- SUBSCRIBED : 동의 함
- UNSUBSCRIBED : 동의하지 않음
- SetSubscriptionStatusResult
- isSuccess() : 서버에서 정상 적용 됐는지 유무
- getResultCode() : 결과 코드 가져오기
- getResultMessage() : 결과 메시지 가져오기
- SubscriptionStatus.Builder
SubscriptionStatus subscriptionStatus = new SubscriptionStatus.Builder() .setInformativeNotificationFlag(SubscriptionStatus.Type.SUBSCRIBED) .setMarketingNotificationFlag(SubscriptionStatus.Type.SUBSCRIBED) .setMarketingNotificationFlagForPushChannel(SubscriptionStatus.Type.UNSUBSCRIBED) .setMarketingNotificationFlagForSmsChannel(SubscriptionStatus.Type.SUBSCRIBED) .setMarketingNotificationFlagForKakaoChannel(SubscriptionStatus.Type.SUBSCRIBED) .setMarketingNotificationAtNightFlag(SubscriptionStatus.Type.UNSUBSCRIBED) .setMarketingNotificationAtNightFlagForPushChannel(SubscriptionStatus.Type.UNSUBSCRIBED) .setMarketingNotificationAtNightFlagForSmsChannel(SubscriptionStatus.Type.UNSUBSCRIBED) .setMarketingNotificationAtNightFlagForKakaoChannel(SubscriptionStatus.Type.SUBSCRIBED) .build();
val subscriptionStatus = SubscriptionStatus.Builder() .setInformativeNotificationFlag(SubscriptionStatus.Type.SUBSCRIBED) .setMarketingNotificationFlag(SubscriptionStatus.Type.SUBSCRIBED) .setMarketingNotificationFlagForPushChannel(SubscriptionStatus.Type.UNSUBSCRIBED) .setMarketingNotificationFlagForSmsChannel(SubscriptionStatus.Type.SUBSCRIBED) .setMarketingNotificationFlagForKakaoChannel(SubscriptionStatus.Type.SUBSCRIBED) .setMarketingNotificationAtNightFlag(SubscriptionStatus.Type.UNSUBSCRIBED) .setMarketingNotificationAtNightFlagForPushChannel(SubscriptionStatus.Type.UNSUBSCRIBED) .setMarketingNotificationAtNightFlagForSmsChannel(SubscriptionStatus.Type.UNSUBSCRIBED) .setMarketingNotificationAtNightFlagForKakaoChannel(SubscriptionStatus.Type.SUBSCRIBED) .build()
- 구독 정보 반영하기
- SubscriptionStatus.Type
- SUBSCRIBED : 동의 함
- UNSUBSCRIBED : 동의하지 않음
- UNDEFINED : 설정 이력 없음
- GetSubscriptionStatusResult
- isSuccess() : 서버에서 정상 적용 됐는지 유무
- getResultCode() : 결과 코드 가져오기
- getResultMessage() : 결과 메시지 가져오기
- getInformativeNotificationFlag() : 정보성 알림 수신 동의 값 가져오기
- getMarketingNotificationFlag() : 광고성 알림 수신 동의 값 가져오기
- getMarketingNotificationFlagForPushChannel() : 광고성 알림 수신 동의(푸시 채널) 값 가져오기
- getMarketingNotificationFlagForSmsChannel() : 광고성 알림 수신 동의 값(SMS 채널) 가져오기
- getMarketingNotificationFlagForKakaoChannel() : 광고성 알림 수신 동의(알림톡 채널) 값 가져오기
- getMarketingNotificationAtNightFlag() : 야간 광고성 알림 수신 동의 값 가져오기
- getMarketingNotificationAtNightFlagForPushChannel() : 야간 광고성(푸시 채널) 알림 수신 동의 값 가져오기
- getMarketingNotificationAtNightFlagForSmsChannel() : 야간 광고성 알림 수신 동의(SMS 채널) 값 가져오기
- getMarketingNotificationAtNightFlagForKakaoChannel() : 야간 광고성 알림 수신 동의(알림톡 채널) 값 가져오기
- SubscriptionStatus.Type
AdBrixRm.setSubscriptionStatus(subscriptionStatus, new AdBrixRm.SetSubscriptionStatusCallback() { @Override public void onCallback(SetSubscriptionStatusResult result) { if(result.isSuccess()){ ... } } });
AdBrixRm.setSubscriptionStatus(subscriptionStatus, AdBrixRm.SetSubscriptionStatusCallback { if(it.isSuccess){ ... } })
[[인용:경고:보통]]Push on/off 확인
알림 푸시 채널의 경우 기기의 Push on/off 설정과는 별개이므로 하단의 Push on/off 섹션을 참고하시어 푸시를 사용하시려면 Push를 On으로 설정하여 주시기 바랍니다.
알림 설정 값 가져오기
getSubscriptionStatus 메소드로 서버에 설정되어 있는 정보를 가져옵니다.
AdBrixRm.getSubscriptionStatus(new AdBrixRm.GetSubscriptionStatusCallback() { @Override public void onCallback(GetSubscriptionStatusResult result) { if(result.isSuccess()){ SubscriptionStatus.Type infoFlag = result.getInformativeNotificationFlag(); SubscriptionStatus.Type mktFlag = result.getMarketingNotificationFlag(); SubscriptionStatus.Type mktPushFlag = result.getMarketingNotificationFlagForPushChannel(); SubscriptionStatus.Type mktSmsFlag = result.getMarketingNotificationFlagForSmsChannel(); SubscriptionStatus.Type mktKakaoFlag = result.getMarketingNotificationFlagForKakaoChannel(); SubscriptionStatus.Type nightFlag = result.getMarketingNotificationAtNightFlag(); SubscriptionStatus.Type nightPushFlag = result.getMarketingNotificationAtNightFlagForPushChannel(); SubscriptionStatus.Type nightSmsFlag = result.getMarketingNotificationAtNightFlagForSmsChannel(); SubscriptionStatus.Type nightKakaoFlag = result.getMarketingNotificationAtNightFlagForKakaoChannel(); } } });
AdBrixRm.getSubscriptionStatus { if(it.isSuccess){ val infoFlag = it.informativeNotificationFlag; val mktFlag = it.marketingNotificationFlag val mktPushFlag = it.marketingNotificationFlagForPushChannel val mktSmsFlag = it.marketingNotificationAtNightFlagForSmsChannel val mktKakaoFlag = it.marketingNotificationFlagForKakaoChannel val nightFlag = it.marketingNotificationAtNightFlag val nightPushFlag = it.marketingNotificationAtNightFlagForPushChannel val nightSmsFlag = it.marketingNotificationAtNightFlagForSmsChannel val nightKakaoFlag = it.marketingNotificationAtNightFlagForKakaoChannel } }
푸시 서비스 기본 설정
필수 사항
푸시 기능을 연동하기 위해서는 디파이너리(애드브릭스) 기본 SDK와 Firebase Cloud Messaging SDK (이하 FCM) 연동이 필요합니다.
adbrix 기본 연동 단계까지 완료해야 그로스액션 연동이 가능합니다.
- 디파이너리(애드브릭스) 기본 SDK - 디파이너리 연동하기 [Android]
- FCM SDK - Android에서 Firebase 클라우드 메시징 클라이언트 앱 설정
[[인용:위험:보통]]주의사항
Firebase Server Key, Sender ID를 사용한 발송 방식은 Firebase 기존 HTTP API의 지원 중단에 따라 2024년 6월 13일 이후로 지원이 중단됩니다. 아래 소개되는 Firebase 인증서 발급 및 등록 가이드에 따라 연동하여 주시기 바랍니다.
이전 연동 방식 보기
Firebase Server Key, Sender ID 등록디파이너리 그로스 액션 이용을 위해서는 디파이너리 콘솔에 Firebase Server Key / Sender ID 를 등록해야 합니다.
Firebase Server Key / Server ID 는 Firebase 콘솔 -> 설정 -> 클라우드 메시징 에서 확인하실 수 있습니다.
a. Firebase 콘솔에서 Firebase Server Key, Sender ID 를 확인합니다.
b. adbrix 콘솔의 Growth Action - Settings 메뉴에 확인한 키값을 입력합니다.
Firebase 인증서 발급하기
1. 서비스 계정에 접속합니다.
2. 발급 하고 싶은 키의 프로젝트를 선택합니다.
프로젝트가 없을 경우 Firebase 프로젝트 생성이 되지 않았다는 뜻이므로 Android 프로젝트에 Firebase 추가하기를 참고하여 Firebase 프로젝트를 생성합니다.
3. 우측 하단의 작업에서 ⋮를 클릭합니다.
4. 드롭다운에서 키 관리를 클릭합니다.
5. 키 추가를 선택합니다.
이미 생성된 키가 있을 경우, 기존에 키를 생성한 이력이 있다는 뜻이며 해당 키를 사용하시면 됩니다. 해당 키를 찾을 수 없을 경우 새로 키를 생성하여 주시기 바랍니다.
6. 드롭다운에서 새 키 만들기를 클릭합니다.
7. JSON을 선택 후 만들기를 클릭합니다.
8. 키 발급이 완료되었습니다.
Firebase 인증서 콘솔에 등록하기
[[인용:경고:보통]] 콘솔 설정 오픈 예정일
Firebase 인증서를 콘솔에 등록하는 기능은 6월 13일에 오픈될 예정입니다.
1. 콘솔에 접속합니다.
2. 좌측 패널에서 GrowthAction의 Settings를 클릭합니다.
3. Android Push Setting 탭에서 Firebase Cloud Messaging 인증서에서 등록을 클릭합니다.
4. 업로드 버튼을 클릭하여 키를 업로드합니다.
5. 업로드 완료 후 확인 버튼을 누릅니다.
6. 저장을 클릭하여 인증서를 적용합니다.
7. 인증서가 콘솔에 등록 되었습니다.
푸시 수신 설정
AndroidManifest.xml 에 아래 리시버를 등록합니다.
<receiver android:name="com.igaworks.v2.core.push.notification.AbxPushReceiver" android:exported="true" android:permission="com.google.android.c2dm.permission.SEND"> <intent-filter> <action android:name="com.google.android.c2dm.intent.RECEIVE"/> <action android:name="com.igaworks.v2.core.pushServiceImplement.CLIENT_PUSH_RECEIVE"/> </intent-filter> </receiver>
작성하신 FirebaseMessagingService의 onMessageReceived내에 AdBrixRm.onMessageReceived를 사용하여 푸시 수신 설정을 합니다.
public class MyFirebaseMessagingService extends FirebaseMessagingService { @Override public void onMessageReceived(@NonNull RemoteMessage remoteMessage) { super.onMessageReceived(remoteMessage); AdBrixRm.onMessageReceived(getApplicationContext(), remoteMessage); } }
class MyFirebaseMessagingService :FirebaseMessagingService() { override fun onMessageReceived(message: RemoteMessage) { super.onMessageReceived(message) AdBrixRm.onMessageReceived(applicationContext, message) } }
Token 값 설정
adbrix에 Firebase 의 Token 값을 설정하기 위해서는 FirebaseMessagingService의 onNewToken()내에 AdBrixRm.setRegistrationId를 사용하여 Token 값을 추가합니다.
그리고 사용하는 Application에 다음과 같이 Token 값이 갱신 될 수 있도록 다음 코드를 추가합니다.
public class MyApplicationClass extends Application { @Override public void onCreate() { super.onCreate(); refreshToken(); } private void refreshToken(){ FirebaseMessaging.getInstance().getToken() .addOnCompleteListener(new OnCompleteListener<String>() { @Override public void onComplete(@NonNull Task<String> task) { if (!task.isSuccessful()) { return; } String token = task.getResult(); AdBrixRm.setRegistrationId(token); } }); } }
class MyApplicationClass : Application() { override fun onCreate() { super.onCreate() refreshToken() } private fun refreshToken(){ FirebaseMessaging.getInstance().token.addOnCompleteListener(OnCompleteListener { task -> if (!task.isSuccessful) { return@OnCompleteListener } val token = task.result AdBrixRm.setRegistrationId(token) }) } }
Push on / off
adbrix 그로스액션 서비스를 이용하기 위해서는 반드시 연동해야하는 필수 API 입니다. 이 API 로 푸시 서비스를 관리할 수 있습니다.
AdBrixRm.setPushEnable(true); // Push On AdBrixRm.setPushEnable(false); // Push Off
AdBrixRm.setPushEnable(true) // Push On AdBrixRm.setPushEnable(false) // Push Off
[[인용:경고:보통]]기본 설정값 확인
디파이너리의 기본 설정값은 'Push off' 입니다.
따라서 그로스 액션 연동 완료 후 사용자들에게 푸시 수신 동의를 받은 후 Push On API 를 호출해야 합니다.
기존에 푸시 수신 동의를 받은 사용자들 역시 푸시 수신을 위해서 Push On API 를 호출해야 합니다.
푸시 알림 런타임 권한 요청
Android 13이상에서는 단말기에 푸시 알림을 받기 위해 android.permission.POST_NOTIFICATIONS
런타임 권한 획득이 필요합니다. 다음의 가이드를 참고하시어 앱에 런타임 권한을 획득하여 주시기 바랍니다.
[[인용:안내:보통]] 축하합니다~!
디파이너리 그로스액션 서비스를 위한 기본 연동이 완료되었습니다.
이후부터 서버 푸시 수신이 가능하며, 로컬 푸시 및 기타 푸시 메시지 옵션 설정을 위해서는 계속 연동을 진행해 주시길 바랍니다.
푸시 서비스 추가 설정
카카오톡 설정
Kakao 알림톡, 친구톡사용을 위한 설정입니다. *KAKAOID : 카카오 싱크 API를 통해 받은 10자리 카카오 ID
AdBrixRm.setKakaoId("KAKAOID", new SetCiProfileCallback() { @Override public void onCallback(SetCiProfileResult result) { if(result.isSuccess()){ Log.d(TAG, "성공: " + result.getResultCode());
//kakaoId의 포맷이 틀릴 경우 isSuccess가 false가 됩니다. } else { Log.d(TAG, "실패: " + result.getResultMessage()); } } });
AdBrixRm.setKakaoId("KAKAOID", object : SetCiProfileCallback { override fun onCallback(result: SetCiProfileResult) { if(result.isSuccess) { println("성공: ${result.resultCode}")
//kakaoId의 포맷이 틀릴 경우 isSuccess가 false가 됩니다. } else { println("실패: ${result.resultMessage}") } } })
[[인용:위험:작게]] 해당 API는 로그인 이후에 사용 가능합니다.
SMS 설정
SMS 사용을 위한 설정입니다. *PHONE_NUMBER :E.164를 준수하는 국가코드 + 번호에서 "+"를 제외한 값 (예시 : 8210********)
AdBrixRm.setPhoneNumber("PHONE_NUMBER", new SetCiProfileCallback() { @Override public void onCallback(SetCiProfileResult result) { if(result.isSuccess()){ Log.d(TAG, "성공: " + result.getResultCode());
//phoneNumber의 포맷이 틀릴 경우 isSuccess가 false가 됩니다. } else { Log.d(TAG, "실패: " + result.getResultMessage()); } } });
AdBrixRm.sePhoneNumber("PHONE_NUMBER", object : SetCiProfileCallback { override fun onCallback(result: SetCiProfileResult) { if(result.isSuccess) { println("성공: ${result.resultCode}")
//phoneNumber의 포맷이 틀릴 경우 isSuccess가 false가 됩니다. } else { println("실패: ${result.resultMessage}") } } })
[[인용:경고:작게]] PHONE_NUMBER :E.164를 준수하는 국가코드 + 번호에서 "+"를 제외한 값 (예시 : 8210********)
[[인용:위험:작게]] 해당 API는 로그인 이후에 사용 가능합니다.
푸시 아이콘 및 색상 설정
푸시 수신시 노출되는 아이콘 및 앱 이름의 색상을 설정합니다.
AdBrixRm.setPushIconStyle(this,"smallicon","largeicon",Color.argb(1,255,0,0)); //Using Color class ARGB AdBrixRm.setPushIconStyle(this,"smallicon","largeicon",AdBrixRm.PushColor.Yellow); // Using AdBrixRm class
AdBrixRm.setPushIconStyle(this,"smallicon","largeicon",Color.argb(1,255,0,0)) //Using Color class ARGB AdBrixRm.setPushIconStyle(this,"smallicon","largeicon",AdBrixRm.PushColor.Yellow) // Using AdBrixRm class
이렇게 설정된 푸시 아이콘은 아래와 같이 노출 됩니다.
[[인용:위험:보통]]주의사항
1) 이미지 파일 이름은 확장자를 뺀 이름만 입력합니다.
2) 모든 해상도의 Drawable 폴더에 해당 이름의 이미지를 모두 추가해야 합니다.
3) 서버 푸시에서 largeIcon 을 설정하였다면 해당 아이콘이 우선적으로 노출됩니다.
4) ARGB 설정은 앱 이름의 색상을 변경합니다.
5) ARGB는 Color 클래스의 ARGB 형식을 지원합니다.
6) ARGB는 AdbrixRm 클래스에 정의된 PushColor 형식을 지원합니다.
푸시 알림 채널 설정
Android 8.0 이상에서 알림을 만들기 위해서는 NotificationChannel을 이용해야합니다. 해당 API를 사용하기 위해 반드시 AdBrixRm.setPushEnable(true);가 먼저 적용되어야 합니다.
알림 채널의 이름, 설명을 설정합니다. (1개의 알림 채널만 생성 합니다)
//channelName, channelDescription AdBrixRm.createDefaultNotificationChannel("myPushChannelName", "my Channel description");
//channelName, channelDescription AdBrixRm.createDefaultNotificationChannel("myPushChannelName", "my Channel description")
푸시 알림 설정
푸시 알림의 노출 정도를 설정합니다. 아래의 푸시 알림 설정 API는 Android 8.0 미만에서만 사용이 가능합니다.
AdBrixRm.setNotificationOption(this,NotificationCompat.PRIORITY_MIN,NotificationCompat.VISIBILITY_SECRET);
AdBrixRm.setNotificationOption(this,NotificationCompat.PRIORITY_MIN,NotificationCompat.VISIBILITY_SECRET)
헤드업 알림 설정 (PRIORITY)
- PRIORITY_MAX : 헤드업 알림 사용
- PRIORITY_HIGH : 헤드업 알림 사용
- PRIORITY_DEFAULT : 헤드업 알림을 사용하지 않음
- PRIORITY_LOW : 헤드업 알림을 사용하지 않음
- PRIORITY_MIN : 헤드업 알림을 사용하지 않음
잠금화면 알림 설정 (VISIBILITY)
- VISIBILITY_SECRET : 잠금화면 알림을 사용하지 않음
- VISIBILITY_PRIVATE : 잠금화면 알림은 표시되나, 내용은 표시되지 않음
- VISIBILITY_PUBLIC : 전체 내용을 잠금화면에 표시
푸시 알림 리스너
클라이언트 / 서버 푸시에 대한 리스너를 설정합니다.
public class MyApplication extends Application{ @Override public void onCreate() { super.onCreate(); //SDK init API must call first AbxActivityHelper.initializeSdk(MyApplicationClass.this, "your_adbrix_remastered_app_key", "your_adbrix_remastered_secret_key"); AdBrixRm.setOnRemotePushClickListener(new AdBrixRm.onRemotePushClickListener() { @Override public void onClick(OnRemotePushClickResult result) { ... } }); AdBrixRm.setOnLocalPushClickListener(new AdBrixRm.onLocalPushClickListener() { @Override public void onClick(OnLocalPushClickResult result) { ... } }); } }
class MyApplication: Application(){ override fun onCreate() { super.onCreate() //SDK init API must call first AbxActivityHelper.initializeSdk(applicationContext , "your_adbrix_remastered_app_key", "your_adbrix_remastered_secret_key"); AdBrixRm.setOnRemotePushClickListener { ... } AdBrixRm.setOnLocalPushClickListener { ... } } }
[[인용:위험:보통]]주의사항
푸시 리스너는 Application Class 에 추가해야 합니다.
해당 리스너는 푸시를 클릭했을 때 동작하며 클릭시 아래의 정보를 전달합니다.
- 로컬 푸시
- OnLocalPushClickResult
- openViewByDeeplink() : 전달받은 Deeplink 값을 사용하여 브라우저 열기
- getDeeplinkUri() : 전달받은 Deeplink 값 Uri 가져오기
- getDeeplink() : 전달받은 Deeplink 값 문자열 가져오기
- getUrlDecodedDeeplinkUri() : URL 디코딩 된 전달받은 Deeplink 값 Uri 가져오기
- getUrlDecodedDeeplink() : URL 디코딩 된 전달받은 Deeplink 값 문자열 가져오기
- OnLocalPushClickResult
- 서버 푸시
- OnRemotePushClickResult
- openViewByDeeplink() : 전달받은 Deeplink 값을 사용하여 브라우저 열기
- getDeeplinkUri() : 전달받은 Deeplink 값 Uri 가져오기
- getDeeplink() : 전달받은 Deeplink 값 문자열 가져오기
- getUrlDecodedDeeplinkUri() : URL 디코딩 된 전달받은 Deeplink 값 Uri 가져오기
- getUrlDecodedDeeplink() : URL 디코딩 된 전달받은 Deeplink 값 문자열 가져오기
- getPushModel() : 서버에서 전달받은 푸시 데이터 가져오기
- OnRemotePushClickResult
[[인용:위험:작게]] An operation is not implemented: Not yet implemented 오류가 보고되는 경우
SDK와 관계없이 콜백메소드 내에 TODO 주석을 사용했을 때 해당 오류가 발생하는 경우가 있습니다.
콜백메소드 내에 TODO가 있다면 제거 부탁드립니다.
로컬 푸시 설정
텍스트 푸시
텍스트로 이루어진 로컬 푸시를 설정 합니다.
AdBrixRm.notifyLocalPushNotification("PushTest", "This is ContentText", "adbrixrm://main");
AdBrixRm.notifyLocalPushNotification("PushTest", "This is ContentText", "adbrixrm://main")
파라미터 값
- title : 제목
- body : 내용
- deeplink : 푸시 클릭시 리스너에 전달될 딥링크 주소
이미지 푸시
텍스트 + 이미지로 구성된 푸시 메시지를 설정합니다.
AdBrixRm.notifyLocalPushNotification("PushTest", "This is ContentText", "adbrixrm://main","http://myimage/image.png");
AdBrixRm.notifyLocalPushNotification("PushTest", "This is ContentText", "adbrixrm://main","http://myimage/image.png")
파라미터 값
- title : 제목
- body : 내용
- deeplink : 푸시 클릭시 리스너에 전달될 딥링크 주소
- imageUrl : 이미지 URL
[[인용:경고:보통]] 이미지는 2:1 비율에 최대 1350x675 사이즈의 이미지 사용을 권장합니다.
로컬 푸시 제어
현재 설정된 로컬 푸시에 대한 관리 및 제어를 위해 사용합니다.
List<PushEvent> localPushList = AdBrixRm.getRegisteredLocalPushNotification(); // Current Local push List AdBrixRm.cancelLocalPushNotificationAll(this); // Cancel the Local Push
>val localPushList = AdBrixRm.getRegisteredLocalPushNotification() // Current Local push List AdBrixRm.cancelLocalPushNotificationAll(this) // Cancel the Local Push
- getRegisteredLocalPushNotification : 현재 예정된 로컬 푸시 리스트를 확인합니다. 리스트는 PushEvent로 표시됩니다.
- cancelLocalPushNotificationAll : 모든 로컬 푸시의 전송을 취소합니다.
인앱 메시지 서비스 설정
기본 설정
디파이너리 인앱 메시지는 별도의 연동이 필요하지 않습니다.
디파이너리 SDK를 통해서 전달된 이벤트를 트리거로 하여 인앱 메시지를 노출할 수 있고, 디파이너리 콘솔에서 모든 설정을 진행할 수 있습니다.
[[인용:안내:보통]] 인앱 메시지 기능은 안드로이드 SDK 2.1.0.0 버전 이상에서 사용할 수 있습니다.
부모 뷰 사용자 설정
기본적으로 디파이너리 인앱메시지는 자동으로 표시할 영역을 찾아 인앱메시지 화면을 표시합니다. 하지만 앱의 환경에 따라 표시되지 않는 경우가 있습니다.
그때는 인앱메시지가 표시될 부모 뷰를 직접 설정하여 표시할 수 있습니다.
[[인용:안내:보통]] 만약 null로 설정하거나 이 API를 호출하지 않을 경우 디파이너리에서 자동으로 표시할 영역을 찾아 표시합니다.
Dfinery.getInstance().setCustomInAppMessageParentView(findViewById(R.id.container));
Dfinery.getInstance().setCustomInAppMessageParentView(findViewById(R.id.container))
클릭 이벤트 리스너 설정
유저의 인앱 메시지 클릭 이벤트를 설정한 리스너를 통해 전달합니다.
이 리스너를 이용하여 클릭 이벤트에 대한 추가 액션을 정의할 수 있습니다.
public class MainApplication extends Application implements AdBrixRm.InAppMessageClickListener{ @Override public void onCreate() { AdBrixRm.setInAppMessageClickListener(this); } @Override public void onReceiveInAppMessageClick(String actionId, String actionType, String actionArg, boolean isClosed) { Log.d("abxrm", "onReceiveInAppMessageClick actionId = " + actionId); Log.d("abxrm", "onReceiveInAppMessageClick actionType = " + actionType); Log.d("abxrm", "onReceiveInAppMessageClick actionArg = " + actionArg); Log.d("abxrm", "onReceiveInAppMessageClick isClosed = " + isClosed); } }
class MainApplication : Application(), AdBrixRm.InAppMessageClickListener { override fun onCreate() { super.onCreate() AdBrixRm.setInAppMessageClickListener(this) } override fun onReceiveInAppMessageClick(actionId: String, actionType: String, actionArg: String, isClosed: Boolean) { Log.d("abxrm", "onReceiveInAppMessageClick actionId = " + actionId); Log.d("abxrm", "onReceiveInAppMessageClick actionType = " + actionType); Log.d("abxrm", "onReceiveInAppMessageClick actionArg = " + actionArg); Log.d("abxrm", "onReceiveInAppMessageClick isClosed = " + isClosed); } }
클릭 리스너 전달 값 상세
클릭 리스너를 통해 전달되는 값의 타입과 예시는 다음과 같습니다.
- actionId (String) : button_1, button_2, image, sticky
- actionType (String) : close, deeplink_and_close, weblink, weblink_and_close, dont_show_me_today_and_close
- actionArg (String) : weblink address, deeplink path
- isClosed (Boolean) : 인앱 메시지가 닫혔는지 여부.
Self-serve 인앱메시지 사용하기
Self-Serve 인앱메시지란?
Self-Serve 인앱메시지란 SDK에서 발생하는 이벤트를 트리거로 표시되는 인앱메시지와 달리 사용자가 직접 데이터를 가져와 오픈시키는 인앱메시지를 의미합니다.
활용방안
자신이 원하는 타이밍에 Self-Serve 인앱메시지 가져와 오픈합니다.
가이드
Step 1. getSelfServeInAppMessages()
를 사용하여 모든 인앱메시지 데이터를 가져옵니다.
AdBrixRm.getSelfServeInAppMessages(new AdBrixRm.GetSelfServeInAppMessagesCallback() { @Override public void onCallback(List<SelfServeInAppMessage> list) { } });
AdBrixRm.getSelfServeInAppMessages { }
Step 2. 자신이 표시할 인앱메시지 데이터를 찾습니다.
[[인용:경고:보통]]💡 Self-Serve 인앱메시지 캠페인 생성시 설정한 부가설정 값(코드 상의 extAttr)을 활용하시면 보다 수월하게 원하는 데이터를 찾을수 있습니다.
//부가설정 {keyWhatIFound}값을 가지고 있는 한 개의 인앱메시지 찾기 AdBrixRm.getSelfServeInAppMessages(new AdBrixRm.GetSelfServeInAppMessagesCallback() { @Override public void onCallback(List<SelfServeInAppMessage> list) { SelfServeInAppMessage foundInAppMessage = null; for(SelfServeInAppMessage inAppMessage: list){ if(inAppMessage.getExtAttr().has("{keyWhatIFound}")){ foundInAppMessage = inAppMessage; } } } });
//부가설정 {keyWhatIFound}값을 가지고 있는 한 개의 인앱메시지 찾기 AdBrixRm.getSelfServeInAppMessages { var foundInAppMessage: SelfServeInAppMessage for (inAppMessage in it){ val extAttr = inAppMessage.extAttr if(extAttr!=null){ if(extAttr.has("keyWhatIFound")){ foundInAppMessage = inAppMessage } } } }
Step 3. 켐페인 ID를 입력하여 인앱메시지를 표시합니다.
if(foundInAppMessage != null){ AdBrixRm.openInAppMessage(foundInAppMessage.campaignId, new Completion() { @Override public void handle(Result emptyResult) { Log.d(TAG, emptyResult.toString()); } }); }
if(foundInAppMessage != null){ AdBrixRm.openInAppMessage(foundInAppMessage.campaignId, Completion { Log.d(TAG, it.toString()) }) }