목차
개요
이 문서에서 가이드 하는 내용은 BuzzAd Android SDK의 Push 지면의 기능을 설명하고 각 기능을 변경하는 방법을 설명합니다.
Push 구독 설명 다이얼로그 없이 구독 UI 표시
BuzzAd Android SDK에서는 Push 구독을 설명하는 다이얼로그와 구독 시간을 설정하는 다이얼로그를 표시합니다. Push 구독을 설명하는 UI 를 자체적으로 구현하거나 설명하는 UI 없이 구독을 진행할 수 있습니다.
다음은 Push 구독을 설명하는 다이얼로그를 표시하지 않는 방법입니다.
buzzAdPush.registerWithDialog(MyActivity.this, false, new BuzzAdPush.OnRegisterListener() { @Override public void onSuccess() { // 구독 성공 시 호출 } @Override public void onCanceled() { // 구독 실패 시 호출 } });
Push 구독 UI 자체 구현
BuzzAd Android SDK에서 제공하는 API를 활용하여, Push 구독 절차를 직접 구현할 수 있습니다.
// 버즈빌 서버로부터 구독 가능한 시간을 미리 불러와 저장합니다. buzzAdPush.fetchPushHoursOptionIfNeeded( activity, new PushRepository.OnFetchResultListener() { @Override public void onFetchFail() { // 저장된 구독 가능한 시간이 없다면 SDK에서 기본으로 제공하는 값을 읽어옵니다. // 단, 저장된 구독 가능한 시간이 없다면 SDK에서 기본으로 제공하는 값을 읽어옵니다. List<Integer> list = buzzAdPush.getPushHoursOption(MainActivity.this); } @Override public void onFetchSuccess() { // Step 2 List<Integer> list = buzzAdPush.getPushHoursOption(MainActivity.this); } });
구독 가능한 시간중 사용자가 구독을 원하는 시간을 선택하여 설정합니다. 그리고 Push를 구독합니다.
List<Integer> selectedHours = new ArrayList<>(); selectedHours.add(hour); // 0 <= hour < 24 buzzAdPush.setPushHours(activity, selectedHours); // 설정 가능한 시간 중 유저가 선택한 시간을 Push SDK에 등록합니다. buzzAdPush.register(activity); // 위 단계 설정이 끝나면 Push를 등록하여 활성화합니다.
Push 구독 해지 고도화
SDK에서 제공하는 API를 활용하여, SDK에서 제공하는 UI를 사용하지 않거나 별도의 UI 없이 구독을 해지할 수 있습니다.
buzzAdPush.unregister(MyActivity.this);
Push 구독 상태 확인
구독 여부를 확인하여 UI에 반영할 수 있습니다.
buzzAdPush.isRegistered(context);
Push Service Notification 자체 구현
푸시 기능이 안정적으로 동작하기 위해서는 서비스(Foreground Service)가 필요합니다.
다른 BuzzAd SDK의 Foreground Service(락스크린 또는 Pop 을 연동할 경우 실행되는 Foreground Service) 가 활성화되면 BuzzAd Push 의 Foreground Service 서비스는 표시되지 않습니다.
PushService
의 상속 클래스를 구현하여 Notification을 변경할 수 있습니다. getFeedPendingIntent()
함수는 Feed로 진입할 수 있는 PendingIntent
를 제공합니다.
다음은 Push Service Notification을 자체 구현하는 방법입니다.
class CustomPushService extends PushService { @Override public Notification buildForegroundNotification(Context context) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { NotificationChannel channel = new NotificationChannel("CustomPushService", "CustomPushService", NotificationManager.IMPORTANCE_LOW); NotificationManager notificationManager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE); notificationManager.createNotificationChannel(channel); } return new NotificationCompat.Builder( context, "YOUR_NOTIFICATION_CHANNEL_ID" ) .setContentIntent(getFeedPendingIntent(false)) .build(); } }
BuzzAdPush buzzAdPush = new BuzzAdPush( CustomPushService.class, CustomNotificationWorker.class, App.getPushDialogConfig() );
// AndroidManifest.xml ... <service android:name=".custom.CustomPushService" /> ...
PushService
가 제공하는 API
API | 설명 |
---|---|
| Feed 지면을 보여줄 수 있는 Intent 를 생성합니다.
|
Push Notification 클릭 동작 변경
Push Notification 을 클릭 시 Feed 지면이 보입니다. Feed 지면을 앱의 Launch Activity 에서 보이게 할 수 있습니다. 기본값은 False 이며, False의 경우 Feed 지면이 현재 화면을 덮도록 보입니다. (다른 앱 위에 표시됩니다.)
다음은 Feed 지면을 앱의 Launch Activity 에서 보이게 하는 예시입니다.
public class CustomNotificationWorker extends NotificationWorker { @Override @NonNull public NotificationConfig getNotificationConfig() { return new NotificationConfig.Builder() .openFeedFromLaunchActivity(true) .build(); } }
final BuzzAdPush buzzAdPush = new BuzzAdPush( CustomNotificationWorker.class, new PushDialogConfig.Builder().build());