Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Current »

목차

개요

이 문서에서 가이드 하는 내용은 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()
);

PushService 가 제공하는 API

API

설명

getFeedPendingIntent(Boolean)

Feed 지면을 보여줄 수 있는 Intent 를 생성합니다.

  • True: Push Service Notification 을 클릭했을 시 앱의 Launch Activity 를 표시한 후, Feed 지면을 보여줍니다.

  • False: Push Service Notification 을 클릭했을 시 디바이스 최상단에 Feed 지면을 보여줍니다.

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());
  • No labels