반드시 샘플 코드를 확인한 뒤 실제 퍼블리셔 앱의 코드에 연동 바랍니다. - Github Link

BuzzScreen SDK Workflow

Index


시작하기 전에

1) 안내사항

본 문서는 BuzzScreen SDK를 퍼블리셔의 안드로이드 어플리케이션에 연동하기 위한 가이드입니다. 아래의 안내사항을 숙지 후 연동을 진행해주세요.

2) Requirements

항목

세부내용

비고

1

안드로이드 지원 버전

  • Android 4.0.3 (API Level 15) 이상

  • Android 10 정식 지원

minSdkVersion 14를 지원하는 경우: BuzzScreen SDK 자주 묻는 질문 참고

2

Google Play의 대상 API 레벨 요구사항을 충촉하기 위해

BuzzScreen SDK의 대응: 2.0.2.0 버전 이상에서

  • targetSdkVersion 28 사용

  • compileSdkVersion 29 이상 사용

정책 적용 시점

  • 신규 앱:
    2019년 8월 1일

  • 기존 앱:
    2019년 11월 1일

3

Android Support Library 26 버전 이상 사용 시

  1. GCM (Google Cloud Messaging) 쪽에서 불안정한 동작이 있으므로 play service 버전을 12 이상 사용 (최신 버전 15.0.1을 권장)

  2. v7 appcompat library 버전을 26.0.2 이상 사용

Lockscreen Activity의 style에 windowTranslucent, windowIsFloating, windowSwipeToDismiss 중 1개 이상이 true로 설정되어 있을 경우 Android OS 8.0 버전에서 크래시가 발생할 수 있으므로 확인이 필요합니다. 이에 해당된다면 아래 내용을 확인해주세요.

Lockscreen Activity의 특정한 style 설정이 Android OS 8.0 버전에서 크래시가 발생할 수 있으므로 확인이 필요합니다.

  • 발생 조건: Android API 26의 설정으로 인해, 아래 조건 모두 충족 시 Crash 발생

    1. 앱의 targetSdkVersion 이 27 이상

    2. 유저의 디바이스의 OS 버전이 8.0 (API 26)

    3. Lockscreen Activity에 적용된 style에 windowTranslucent, windowIsFloating, windowSwipeToDismiss 중 1개 이상이 true로 설정되어 있을 경우

  • 해결 방안

    • styles.xml 에서 windowTranslucent, windowIsFloating,windowSwipeToDismisstrue로 세팅된 항목을 제거 또는 false로 변경

<resources>
...
    <style name="YourLockScreenTheme" parent="@style/AppTheme">
        <!-- Items below need to be removed or set to false on specific conditions-->
        <item name="android:windowIsTranslucent">false</item>
        <item name="android:windowIsFloating">false</item>
        <item name="android:windowSwipeToDismiss">false</item>
    </style>
</resources>

3) Prerequisites

항목

세부내용

비고

1

퍼블리셔 앱 로그인을 위한 API 서버

BuzzScreen SDK에 유저 정보를 등록하기 위함

2

포인트 적립 요청 수신 API

버즈빌 서버에서 퍼블리셔 서버로 포인트 적립 요청을 보낸 이후, 실제 포인트 지급을 처리할 퍼블리셔의 API 서버

매체사 포인트 적립 포스트백 API 연동 참고

3

연동을 위한 키값

버즈빌 BD 매니저로부터 발급받은 아래 값들

  • app_key : 퍼블리셔 앱의 키값

  • app_license : 광고 송출을 위한 라이센스 값


1. build.gradle 설정

모듈 내 build.gradle 에 아래 코드를 추가합니다.

기존 프로세스 분리형 buzzscreen-multiprocess SDK를 사용하시다 하기의 버전으로 별도의 작업 없이 SDK만 변경 시 이슈가 발생 할 수 있습니다. 해당 문서(link)를 참조하여 AndroidMafniest.xml에 포함된android:process=":locker 속성을 제거 바랍니다.

dependencies {
    implementation 'com.buzzvil:buzzscreen:2.0.6.3'
}
repositories {
    maven { url "https://dl.buzzvil.com/public/maven" }
}
note

권장 버전

  • targetSdkVersion 28 사용

  • compileSdkVersion 29 이상 사용

  • supportLibraryVersion = 26.1.0 이상, 28.0.0 권장

  • Play Services 라이브러리 버전: 샘플 코드 참고

권장 버전

  • targetSdkVersion 28 사용

  • compileSdkVersion 29 이상 사용

  • supportLibraryVersion = 26.1.0 이상, 28.0.0 권장

  • Play Services 라이브러리 버전: 샘플 코드 참고

2. AdNetwork 연동 설정

BD Manager로부터 AdNetwork 추가 연동에 대해 안내 받을 시에는, 모듈 내 AndroidManifest.xml연동문서를 참조하여 해당 AdNetwork의 관련 코드를 추가합니다.

3. 메소드 호출

연동 단계는 1) 초기화 → 2) 유저 정보 설정 → 3) 잠금화면 제어 설정 의 세 단계를 따라야 합니다.

1) 초기화: init()launch() 호출

항목

코드

호출 위치

세부내용

버즈스크린 초기화

BuzzScreen.init(String appKey, Context context, Class lockerActivityClass, int imageResourceIdOnFail)

  • Application ClassonCreate

  • 모든 다른 메소드보다 항상 먼저 호출되도록

기존에 사용하던 Application Class가 없이 버즈스크린 연동을 위해 처음으로 Application Class를 생성할 경우 반드시 AndroidManifest.xml에 해당 Application Class를 등록해야 합니다.

  • Parameters

    • appKey : BuzzScreen SDK 사용을 위한 앱 키로, 버즈스크린 어드민에서 확인 가능합니다.

    • context : Application context 를 this 로 입력합니다.

    • lockerActivityClass : 잠금화면 액티비티 클래스.

      • 잠금화면을 커스터마이징하지 않는 경우 SDK 내에서 제공하는 SimpleLockerActivity.class 를 설정합니다.

      • 커스터마이징을 하는 경우 직접 구현한 액티비티 클래스를 설정합니다. 자세한 사항은 UI 커스터마이징 문서의 설명을 참조하세요.

    • imageResourceIdOnFail : 네트워크 에러 발생 시 혹은 일시적으로 잠금화면에 보여줄 캠페인이 없을 경우 보여주게 되는 이미지를 앱 내 리소스에 포함시켜야 하며, 이 이미지의 리소스 아이디를 설정합니다.

버즈스크린 시작

BuzzScreen.getInstance().launch()

앱 실행 시 처음 실행되는 액티비티에 추가

Sample Code

public class App extends Application {

    @Override
    public void onCreate() {
        super.onCreate();
        ...
        BuzzScreen.init("app_key", this, SimpleLockerActivity.class, R.drawable.image_on_fail);
    }
}

2) 유저 정보 설정

연령, 성별, 지역 등 타게팅 정보를 설정하지 않는 경우 타게팅이 설정된 광고가 보이지 않으므로, 유저가 볼 수 있는 전체 광고의 수량이 줄어들게 됩니다. 설정이 불가할 경우 BD 매니저와 논의 부탁드립니다.

항목

코드

호출 위치

세부내용

유저 정보 설정 위한 객체

BuzzScreen.getInstance().getUserProfile()

BuzzScreen.getInstance().activate() 호출 전에 반드시 유저 정보를 설정해야 함

유저 정보 설정할 수 있는 Class 인 UserProfile 호출

유저 식별값

setUserId(String userId)

userId

앱 재설치 또는 일정 주기에 따라 userId 가 변화할 경우, 반드시 BD 매니저와 사전 논의 필요

유저 연령

setBirthYear(int birthYear)

유저의 출생년도를 4자리 숫자로 입력하여 나이 설정

유저 성별

setGender(String gender)

미리 정의된 String 을 통해 형식에 맞추어 성별 설정

  • UserProfile.USER_GENDER_MALE : 남성

  • UserProfile.USER_GENDER_FEMALE : 여성

유저 지역

setRegion(String region)

"시/도 + 공백 + 시/군/구" 형식으로 설정

이 외

커스텀 타게팅 문서 참고

매체사에서 원하는 유저 정보로 타게팅 가능

3) 잠금화면 제어

항목

코드

호출 위치

세부내용

버즈스크린 활성화

BuzzScreen.getInstance().activate()

버즈스크린 활성화 시점

  • activate()를 처음 잠금화면 활성화 시 호출하면, 이후부터 자동으로 잠금화면 사이클이 관리되기 때문에 deactivate()를 호출하기 전에 다시 호출할 필요는 없음

이 함수가 호출된 이후부터 잠금화면에 버즈스크린이 나타남

버즈스크린 비활성화

BuzzScreen.getInstance().deactivate()

버즈스크린 비활성화 시점

이 함수가 호출되면 더 이상 잠금화면에 버즈스크린이 나타나지 않음

유저 로그아웃

BuzzScreen.getInstance().logout()

유저가 로그아웃하는 시점

이 함수는 deactivate() 를 호출하며, 버즈스크린에서 사용하는 유저 정보를 디바이스에서 삭제함

버즈스크린이 화면에서 사라지는 시간 설정
(BuzzScreen SDK v1.9.2.3 이상에서만 설정 가능)

BuzzScreen.getInstance().setSettings(BuzzScreen.Settings.FINISH_IN_SEC, int set_seconds)

BuzzScreen.init() 이후에 호출

버즈스크린 액티비티가 화면에 뜬 뒤 일정 시간 동안 유저의 활동이 없을 경우 버즈스크린이 화면에서 사라짐

  • Parameters

    • set_seconds : 유저의 활동이 없는 경우 버즈스크린이 화면에서 사라지게 될 시간 (초 단위)

  • 상세 동작 예시

    • 미설정 시: 60초 동안 유저 활동이 없을 경우 동작

    • set_seconds = 30 : 30초 동안 유저 활동이 없을 경우 동작

    • set_seconds = 0 : 해당 기능 미동작

잠금화면을 활성화한 후 실제로 잠금화면이 처음 준비가 된 시점 확인

BuzzScreen.getInstance().activate(ActivateListener listener)

활성화한 후 실제로 잠금화면이 처음 준비가 완료된 시점을 알고 싶을 때, 아래의 interface를 구현하여 activate() 메소드의 파라미터로 넘깁니다.

public interface ActivateListener {
    void onReady();// This will be called when the first lockscreen is ready to be shown.
}

Notification 커스텀

서비스 노티피케이션 문서 참고

버즈스크린을 활성화한 후 Notification area 에 생성된 Notification의 icon, text 등을 수정하고자 하는 경우

4. 기본 보안기능 화면 속성 수정

BuzzScreen SDK 1.9.9.8 이상에만 적용 가능한 기능입니다.

BuzzScreen.init()된 직후 메소드를 호출하여 보안기능 화면 속성을 수정합니다.

<구현 예시>

BuzzScreen.init("app_key", this, SimpleLockerActivity.class, R.drawable.image_on_fail, Constants.useGDPR ? BuzzScreen.PrivacyPolicy.GDPR : BuzzScreen.PrivacyPolicy.NONE);
                
BuzzScreen.getInstance().setSecurityConfiguration(
        new SecurityConfiguration.Builder().
                   backgroundResourceId(R.drawable.your_drawable).
                   backgroundImageScaleType(ImageView.ScaleType.FIT_CENTER).
                   backgroundColor(Color.WHITE).
                   backgroundDimAlpha(0.7f).                
                   showClock(true).
                   showDescription(true).
                   build());

5. “다른 앱 위에 그리기” 권한 얻기

BuzzScreen SDK 2.0.5.4 이상부터 이 기능을 사용할 수 있습니다.

안드로이드 10부터 변경된 정책에 따라, 잠금화면을 띄우기 위해서는 “다른 앱 위에 그리기” 권한 획득이 필요합니다. 따라서 사용자에게 해당 권한 요청에 대한 메시지를 잠금화면과 In-App에서 노출해 권한 획득을 도울 수 기능을 제공합니다.

1) 잠금화면 안내 메시지

2) In-App 안내 메시지

public class MainActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // (생략)
        BuzzScreen.getInstance().showOverlayPermissionGuideDialogIfNeeded(MainActivity.this);
    }

6. 포인트 적립 포스트백 연동 - Server-to-Server 연동

버즈스크린은 포인트 적립이 발생했을 때 직접 유저들에게 포인트를 지급하는 것이 아닙니다. 버즈스크린 서버에서는 매체사 서버로 포인트 적립 요청을 보낼 뿐이며, 실제 지급은 매체사 서버에서 처리합니다.

note

포인트 적립 알림 푸시를 유저에게 보내고 싶은 경우에는 포인트 적립 요청을 받고 매체사에서 직접 푸시를 전송합니다.

포인트 적립 알림 푸시를 유저에게 보내고 싶은 경우에는 포인트 적립 요청을 받고 매체사에서 직접 푸시를 전송합니다.

포인트 적립 요청 흐름


버즈스크린의 UI 및 동작을 커스터마이징하고 싶다면 고급 설정 문서를 참고하여 구현합니다.