Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  1. PopControlService의 상속 클래스를 구현하세요.

    • notificationChannel을 생성하거나 View를 등록할 수 있습니다.

    • getPopPendingIntent(unitId, context)으로 Pop 지면으로 진입하는 PendingIntent를 이용할 수 있습니다.
      다음은 PopControlService의 상속 클래스를 구현하는 예시입니다.

      Code Block
      languagejava
      public class YourControlService extends PopControlService {
      
          @Override
          protected Notification buildForegroundNotification(@NonNull String unitId, @NonNull PopNotificationConfig popNotificationConfig) {
              // Pop을 표시하는 PendingIntent (원형 아이콘)
              PendingIntent popPendingIntent = getPopPendingIntent(unitId, this);
      
              // 필요에 따라 notificationChannel을 등록합니다.
              NotificationCompat.Builder builder;
              if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
                  createNotificationChannelIfNeeded();
                  builder = new NotificationCompat.Builder(this, NOTIFICATION_CHANNEL_ID);
              } else {
                  builder = new NotificationCompat.Builder(this);
              }
      
              // Pop Service Notification 에 사용할 View 를 등록합니다.
              RemoteViews remoteView = new RemoteViews(getPackageName(), R.layout.view_custom_notification);
              builder.setSmallIcon(popNotificationConfig.getSmallIconResId())
                      .setContent(remoteView)
                      .setContentIntent(popPendingIntent)
                      .setPriority(PRIORITY_LOW)
                      .setShowWhen(false);
              if (popNotificationConfig.getColor() != null) {
                  builder.setColor(popNotificationConfig.getColor());
              }
              return builder.build();
          }
      
          @TargetApi(Build.VERSION_CODES.O)
          protected void createNotificationChannelIfNeeded() {
              final NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
              if (notificationManager.getNotificationChannel(NOTIFICATION_CHANNEL_ID) == null) {
                  final NotificationChannel channel = new NotificationChannel(NOTIFICATION_CHANNEL_ID, NOTIFICATION_CHANNEL_NAME, NotificationManager.IMPORTANCE_LOW);
                  channel.setShowBadge(false);
                  notificationManager.createNotificationChannel(channel);
              }
          }
      }

    • notificationIdPopNotificationConfig에서 설정하세요. 다음의 예시를 참고하세요.

      Code Block
      languagejava
      final PopNotificationConfig popNotificationConfig = new PopNotificationConfig.Builder(getApplicationContext())
                      .notificationId(NOTIFICATION_ID)
                      .build();
      
      final FeedConfig popFeedConfig = new FeedConfig.Builder("YOUR_POP_UNIT_ID").build();
      final PopConfig popConfig = new PopConfig.Builder(popFeedConfig)
              .popNotificationConfig(popNotificationConfig)
              .controlService(YourControlService.class)
              .build();
      
      final BuzzAdBenefitConfig buzzAdBenefitConfig = new BuzzAdBenefitConfig.Builder(context)
              .setPopConfig(popConfig)
              .build();

  2. 구현한 상속 클래스를 AndroidManifest.xml 파일에 등록하세요.

    Code Block
    languagejavaxml
    // AndroidManifest.xml
    
    <application
        ...생략...
        
        <service android:name=".YourControlService" />
        
        ...생략...
    </application> 

...

다음은 Custom View를 직접 생성하여 툴바를 변경하는 예시입니다. 이 예시에서는 DefaultPopToolbarHolder의 상속 클래스를 구현합니다. 그런 다음 PopConfig에 구현한 클래스를 추가합니다.

Code Block
languagejava
public class YourPopToolbarHolder extends DefaultPopToolbarHolder {
    @Override
    public View getView(Activity activity, @NonNull final String unitId) {
        // 직접 구성한 layout 을 사용합니다
        ViewGroup root = (ViewGroup) activity.getLayoutInflater().inflate(R.layout.your_pop_custom_toolbar_layout, null);

        View buttonInquiry = root.findViewById(R.id.yourInquiryButton);
        buttonInquiry.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // 문의하기 페이지 열기
                showInquiry(activity, unitId);
            }
        });
        return root;
    }
}

...