Table of Contents |
---|
Notification 커스터마이징
Custom Pop Service Notification
Pop 에서 기본 제공하는 Service Notification 은 클릭 했을 때 Pop 을 다시 보이는 기능을 제공합니다. 하지만 개발 요구사항에 따라 Service Notification 을 다른 형식으로 사용해야 할 경우가 있는데, 예를 들어 Pop service notification의 layout을 변경하고 싶거나, 채널 아이디를 변경하고 싶을때 입니다. 그런 경우 Custom Service Notification 을 등록하는 방법을 사용할 수 있습니다.
Step 1. CustomControlService class
PopControlService
를 상속받아 class 를 만듭니다.buildForegroundNotification
함수를 오버라이드 합니다.(Optional) getPopPendingIntent
를 통해 click 시 Pop Icon 을 띄우는 기능을 하는 PendingIntent 를 만들 수 있습니다. 요구사항에 따라 이 기능 대신 필요한 기능을 PendingIndent로 사용하면 됩니다.필요에 따라 notificationChannel 을 생성해 등록합니다.
(Optional)RemoteViews
,setContent
를 사용해 CustomContolService 에서 사용할 View 를 등록합니다.
Code Block | ||
---|---|---|
| ||
// 1. PopControlService 를 상속받아 class 를 만듭니다.
public class CustomControlService extends PopControlService {
// 2. buildForegroundNotification 함수를 오버라이드 합니다.
@Override
protected Notification buildForegroundNotification(@NonNull String unitId, @NonNull PopNotificationConfig popNotificationConfig) {
// 3. getPopPendingIntent 를 통해 click 시 Pop Icon 을 띄우는 기능을 하는 PendingIntent 를 만들 수 있습니다.
PendingIntent popPendingIntent = getPopPendingIntent(unitId, this);
NotificationCompat.Builder builder;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
// 4. 필요에 따라 notificationChannel 을 생성해 등록합니다.
createNotificationChannelIfNeeded();
builder = new NotificationCompat.Builder(this, NOTIFICATION_CHANNEL_ID);
} else {
builder = new NotificationCompat.Builder(this);
}
// 5. CustomContolService 에서 사용할 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)
private 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);
}
}
} |
Step 2. Custom Service Class 등록
PopConfig.controlService(@NonNull Class<? extends PopControlService> popControlServiceClass)
를 사용해 Custom Service Notification 을 등록할 수 있습니다.
이 경우, PopNotificationConfig 는 SmallIconRes 와 NotificationId 두 가지만 설정하면 됩니다.
...
language | java |
---|
...
PopConfig 설정
PopConfig를 통해 Pop에서 원하는 기능을 켜고 끌 수 있습니다. YOUR_POP_UNIT_ID
에 Feed에서 사용한 Unit ID와 동일한 값을 넣어주세요.
Application 의 OnCreate에 다음과 같이 추가합니다. BuzzAdBenefit.init
시점에 BuzzAdBenefitConfig
에 PopConfig를 설정합니다.
Code Block | ||
---|---|---|
| ||
PopConfig popConfig = new PopConfig.Builder(getApplicationContext(), YOUR_POP_UNIT_ID_POP) ...(생략)... .controlService(CustomControlService.class) .build(); final BuzzAdBenefitConfig buzzAdBenefitConfig = new BuzzAdBenefitConfig.Builder(context) ...( 생략)... .setPopConfig(popConfig) .build(); |
Step 3. Manifest 에 CustomControlService 를 등록
Code Block | ||
---|---|---|
| ||
<application
...(생략)...
<service android:name=".java.CustomControlService" />
</application> |
...
BuzzAdBenefit.init(this, buzzAdBenefitConfig); |
Pop Feed 커스터마이징
Custom Bottom Sheet
...