[Ext.point] Pop Type

해당 문서는 BuzzAd Ext.point SDK의 광고 지면 타입 중 하나인, Pop Type 을 연동하는 문서입니다. Pop Type 은 쳇헤드 (Chat Head) 를 사용하여 앱 밖에서도 광고 참여 여부를 확인할 수 있습니다. Pop Feed 를 통해 앱 지면 바깥에서도 광고를 참여할 수 있으며, 클릭을 통해 앱으로 이동하여 유저의 앱 사용을 크게 증가시킵니다.

 

다음 과정이 완료 되었는지 확인이 필요합니다.

Android X 환경이 준비 완료 되었는지 (링크)
공통 적용 항목 연동이 완료 되었는지 (링크)

위의 과정 중 완료되지 않은 항목이 있다면, 이전 단계의 연동을 먼저 완료해야 합니다.

다음 항목에 대한 확인이 필요합니다.

Android Studio 3.2 혹은 그 이상
minSdkVersion 15 혹은 그 이상
compileSdkVersion 29 혹은 그 이상

 


연동하기

1. SDK 및 설정 변경하기

build.gradle 변경하기

[1] build.gradle 의 dependencies 에 아래의 코드를 제거해야 합니다.

repositories { maven { url "https://dl.buzzvil.com/public/maven" } } ... dependencies { // 버전 정보는 이전 단계에서 적용했으니 생략합니다. implementation ("com.buzzvil:buzzad-benefit:2.X.X") { ... // 아래 코드를 제거해야 합니다. exclude group: 'com.buzzvil', module: 'buzzad-benefit-pop' ... } }

 

Application Class 변경하기

다음의 코드를 추가해야 합니다. 예시 코드에서 추가 항목 외의 입력 사항은 기본 값으로 작성되어 있습니다.

public class App extends Application { @Override public void onCreate() { final BuzzAdBenefitExtauthConfig extauthConfig = new BuzzAdBenefitExtauthConfig.Builder(this) .setAppIcon(context.getApplicationInfo().getIcon()) .setThemeColor(Color.parseColor("#F93F5A")) .build(); final BuzzAdBenefitExtauthInstaller extauthInstaller = new BuzzAdBenefitExtauthInstaller(extauthConfig); // (1) POP Config 를 추가해야 합니다. // 예시에 적힌 "Pop_Unit_Id" 를 '버즈빌에서 발급한 Unit Id'로 교체해 주세요. final PopConfig popConfig = new PopConfig.Builder(getApplicationContext(), "Pop_Unit_Id") .build(); final BuzzAdBenefitConfig buzzAdBenefitConfig = extauthInstaller.installTo(new BuzzAdBenefitConfig.Builder(this)) // (2) add 로 Benefit Config 에 Pop Config 를 추가해야 합니다. // 예시에 적힌 "Pop_Unit_Id" 를 '버즈빌에서 발급한 Unit Id'로 교체해 주세요. .add(popConfig) .build(); BuzzAdBenefit.init(this, buzzAdBenefitConfig); } }

[1] PopConfig를 생성한 뒤, 발급받은 Unit Id 를 설정합니다.

[2] '[Ext.point] 공통 적용 항목 연동' 단계에서 생성한 BuzzAdBenefitConfigPopConfig를 추가합니다.

 


연동하기

2. 다른 앱 위에 그리기 권한 설정 및 Pop 실행하기

다른 앱 위에 그리기

Pop을 연동하려는 앱이 다른 앱 위에 그리기권한을 이미 가지고 있다면 해당 과정은 넘어가도 됩니다.
해당 가이드 외의 다른 방식으로 구현하여 사용할 경우, 다음 과정으로 넘어가도 됩니다.

 

Pop 을 실행하기 위해 다른 앱 위에 그리기 권한을 획득해야 합니다. 이 권한은 사용자가 직접 설정에서 다른 앱 위에 그리기 옵션을 활성화하여 획득할 수 있습니다. 사용자가 해당 옵션을 활성화시키지 않으면 Pop을 실행할 수 없습니다. SDK에서는 BuzzAdPop 클래스를 통해 권한 활성화가 되어 있지 않을 경우, 유저가 설정에서 권한을 활성화하도록 안내하고 있습니다.

[1] Pop 에 권한 설정을 할 Activity 에 BuzzAdPop 을 추가합니다.

private BuzzAdPop buzzAdPop;

[2] Activity의 onCreate에 Pop의 unit id를 이용하여 BuzzAdPop의 인스턴스를 추가합니다.

[3] 다음은 앱이 필요한 권한이 있는지 확인하고 없다면 권한을 얻도록 안내하는 코드입니다.

[4] 사용자가 설정에서 다른 앱 위에 그리기 권한을 활성화하면, 이전 Activity로 돌아오게 됩니다. 이때 Intent 로 result 값이 넘어오며, 이 값을 통해 설정에서 권한이 활성화된 것을 알 수 있습니다.

Pop 실행하기

BuzzAdPop.preloadAndShowPop() 함수를 호출하여 Pop 을 활성화합니다. 이후 foreground service 가 켜져, 화면이 다시 켜질 때마다 Pop 이 화면에 나타나게 됩니다.

Pop의 원활한 실행을 위해 광고를 미리 로드하고 Pop 이 보이도록 BuzzAdPop.preloadAndShowPop()을 실행합니다.

 


연동하기

3. Config 설정하기

다음 항목에 대한 확인이 필요합니다.

연동하기 - [2. 다른 앱 위에 그리기 권한 설정 및 Pop 실행하기] 를 통해 정상적으로 다른 앱 위에 그리기 권한 획득이 이루어지는지 확인
연동하기 - [1. 기본 설정을 적용하여 구현하기], [2. 다른 앱 위에 그리기 권한 설정 및 Pop 실행하기] 를 통해 기본 값으로 구현을 완료한 광고 지면에서 정상적으로 광고를 확인하고 참여할 수 있는지 확인

 

PopConfig 설정

Pop Config 는 Pop의 아이콘, Pop이 나타날 때의 위치 등 Look & Feel 을 설정할 수 있습니다. POP 디자인 가이드 문서 에서 이미지 예시를 직접 확인할 수 있습니다.

[1] 대부분의 항목은 기본값으로 설정되어 있습니다. 다른 값으로 설정하려면 아래의 'PopConfig의 필드 더보기'를 내의 해당 항목을 추가해야 합니다. (아래를 클릭하여 확인할 수 있습니다.)

  • iconResourceId Pop 아이콘 drawable을 만들어 아이콘을 변경할 수 있습니다. 이때 상태에 따라 평상시 아이콘과 피드 종료 아이콘을 지정해 주어야 합니다.

  • Pop 아이콘 사이즈

    • 56*56 dp (mdpi 기준)

    • 224*224 px (xxxhdpi까지 지원, 픽셀기준 최대 4배)

  • rewardReadyIconResourceId Pop에서 적립 가능한 포인트가 있을 때 기본 아이콘이 아닌 다른 아이콘을 (예: 동전 아이콘) 유저에게 보여줄 수 있습니다. iconResourceId와 마찬가지로 selector를 이용하여 작성합니다.

  • idleTimeInMillis Pop의 말풍선(preview)이 보이는 시간 간격을 수정합니다. 기본값은 30분입니다.

  • popAdMessageViewClass Pop의 말풍선(preview)에 광고의 내용이 보일때의 말풍선 뷰를 변경할 수 있습니다. 기본 클래스에서는 광고를 통해 얻을 수 있는 포인트를 보여줍니다. 커스텀 클래스 설정하는 방법은 여기를 참고해 주세요.

  • popArticleMessageViewClass Pop의 말풍선(preview)에 아티클의 내용이 보일때의 말풍선 뷰를 변경할 수 있습니다. 기본 클래스에서는 아티클의 제목을 보여줍니다. 커스텀 클래스 설정하는 방법은 여기를 참고해 주세요.

  • popUtilityLayoutHandlerClass 피드를 열었을때 하단에 보이는 Utility영역을 변경합니다. 기본 클래스에서는 카메라, 브라우저, 사진첩으로 이동할 수 있습니다. 커스텀 클래스 설정하는 방법은 여기를 참고해 주세요.

  • initialSidePosition(@NonNull final SidePosition initialSidePosition) Pop의 초기 위치 설정합니다. Default 값은 SidePosition.Side.RIGHT, 0.6f(화면 우측, 위에서 60 % 지점)

  • initialPopIdleMode(@NonNull PopIdleMode initialPopIdleMode) Pop의 Idle 상태 동작을 결정합니다. 5 초 동안 User의 Interaction 이 없다면 Idle 상태가 되며, 여기서 설정 된 모드로 동작하게 됩니다. Default 값은 INVISIBLE

    • INVISIBLE : 일정 시간 후 Pop Icon 이 사라집니다. 다시 Pop Icon 을 활성화 하려면 Notification 을 클릭하거나, 화면을 껐다가 켜야합니다.

    • TRANSLUCENT : 일정 시간 후 Pop Icon 이 사라지지 않고 활성화 상태에서 반투명해집니다. 반투명 Pop Icon 은 User Interaction 을 받을 수 있습니다.

  • controlService Service Notification 을 커스텀 하기 위해 사용합니다. 버즈빌이 제공하는 기능을 온전히 사용하고 앞으로의 서포트를 받기 위해서는 되도록 커스텀하지 않고 기본값을 사용하길 권장합니다. 자세한 사항은 하단의 Andvanced를 참고해주세요.

  • feedConfig Pop에서 사용할 피드의 config를 설정합니다. 자세한 내용은 3번 단락에서 다룹니다.

  • popNotificationConfig Pop에서 사용하는 Notification 의 config를 설정합니다. 자세한 내용은 4번 단락에서 다룹니다.

[2] 변경하려는 값을 모두 적용한 뒤, build() 함수를 호출합니다.

 

FeedConfig 설정

[1] Pop을 클릭해서 나오는 Pop Feed 의 뷰를 설정할 수 있습니다. Feed Type과 겹치는 내용이 많으니 Feed Type 문서(링크)를 참고해 주세요.

[2] 다음은 Feed 뷰에서 광고와 컨텐츠를 모두 활성화 하고 컨텐츠 클릭시에 외부 Activity로 넘어가지 않고 내부 브라우저로 램딩되는 Feed를 만드는 코드입니다.

2.3.0 버전부터 .articleInAppLandingEnabled(true) 가 제거되었습니다.

 

PopNotificationConfig 설정

Pop을 실행하고 있는 동안, Pop이 실행 중이라는 Service Notification 을 보여줍니다. Notification의 내용을 결정할 수 있습니다. 앱의 Tone & Manner 를 반영하여 변경합니다. (아래를 클릭하여 확인할 수 있습니다.)

 

  1. PopNotificationConfig.Builder(@DrawableRes final int smallIconResId) small 아이콘을 정합니다. Notification Icon Design guide 를 따라 *흰색 Icon 을 추천합니다. (*주의사항 Adaptive Icon 이 설정되지 않도록 주의해야합니다.)

  2. colorResId(@ColorRes int colorResId) Notification 의 아이콘, 앱 이름 에 적용되는 색상을 설정합니다.

  3. titleResId(@StringRes int titleResId) 타이틀을 설정합니다.

  4. textResId(@StringRes int textResId) Notification의 내용을 설정합니다.

  5. notificationId(int notificationId) Android Notification Id를 설정합니다. Default 값은 5000

 

PopConfig 설정 - 참고 예시

위에서 설명된 PopConfig, FeedConfig, PopNotificationConfig를 생성하고 나면, 아래와 같이 popConfig 를 설정할 수 있습니다. 아래의 코드는 적용 예시입니다.

 


연동하기

4. (선택) Custom Service Notification 등록하기

다음 항목에 대한 확인이 필요합니다.

연동하기 - [3. Config 설정하기] 의 구현을 완료한 뒤, 정상적으로 적용이 되었는지 확인

 

기본적으로 Service Notification 을 클릭 했을 때 Pop 을 다시 보이는 기능을 제공합니다. 하지만 개발 환경에 따라 Service Notification 을 다른 형식으로 사용해야 할 경우, Custom Service Notification 을 등록하여 사용할 수 있습니다.

CustomControlService class 생성하기

[1] PopControlService 를 상속받아 class 를 만듭니다.

[2] buildForegroundNotification 함수를 오버라이드 합니다.

[3] (선택 사항) getPopPendingIntent 를 통해 클릭시 Pop Icon 을 띄우는 PendingIntent 를 만들 수 있습니다. 해당 기능 대신 필요한 기능을 PendingIndent 로 사용할 수 있습니다.

[4] (선택 사항) notificationChannel 을 생성해 등록합니다.

[5] (선택 사항) RemoteViews, setContent 를 사용해 CustomContolService 에서 사용할 View 를 등록합니다.

 

Custom Service Class 등록하기

[1] PopConfig.controlService(@NonNull Class<? extends PopControlService> popControlServiceClass) 를 사용해 Custom Service Notification 을 등록합니다.

PopNotificationConfig 는 SmallIconResId 와 NotificationId 두 가지만 설정하면 됩니다.

 

AndroidManifest 에 CustomControlService 를 등록하기

 


다음 과정으로 넘어가기

→ Pop 커스터마이즈 하기 (링크)

커스터마이즈가 분리된 이유

Config 설정 외에 디자인 가이드의 양이 많아, 효율적인 연동을 위해 해당 내용을 분리했습니다.