Versions Compared

Key

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

...

Expand
titleAndroid 8.0에서의 Lockscreen Activity의 특정 스타일로 인한 충돌 방지하기

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

  • 발생 조건: Android API 26의 설정으로 인해 아래 조건을 모두 충족하는 경우

    1. 앱의 targetSdkVersion 이 27 이상인 경우

    2. 사용자 모바일 기기 OS 버전이 8.0(API 26)인 경우

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

  • 해결 방안

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

Code Block
languagexml
<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>

준비 사항

항목

설명

비고

1

연동 앱 로그인을 위한 API 서버

BuzzScreen SDK에 사용자 정보를 등록하기 위한 API입니다.

2

포인트 적립 요청 수신 API

버즈빌 서버에서 포인트 적립 요청을 보낸 이후, 실제 포인트 지급을 처리할 매체사 API 서버입니다.

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

3

연동을 위한 키 값

버즈빌 BD 매니저로부터 발급받은 app_key, unitId 값입니다.

  • app_key : 연동하는 잠금화면 앱의 키 값

  • unitId : 광고 서빙을 위한 Unit ID

BuzzScreen 연동하기

1 단계. build.gradle , AndroidManifest.xml 설정

...

Code Block
languagegroovy
repositories {
    maven { url "https://dl.buzzvil.com/public/maven" }
}

dependencies {
    implementation 'com.buzzvil:buzzscreen:4.3337.+'
}
Warning

BuzzAd Android용 SDK도 연동하고 있는 경우, 빌드 시 com.android.tools.r8.errors.CompilationError: Program type already present: com.buzzvil.buzzresource.BuildConfig 오류가 발생할 수 있습니다. 이는 BuzzAd Benefit SDK 3.5.+를 연동하면 해결됩니다.

...

연동을 위해 초기화, 사용자 정보 설정, 잠금화면 제어 설정을 순서대로 진행하세요.

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

항목

코드

호출 위치

설명

버즈스크린 초기화

Status
colourRed
title필수

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

  • Application ClassonCreate

  • 모든 다른 메소드보다 항상 먼저 호출하세요.

Note

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

  • Parameters

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

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

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

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

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

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

버즈스크린 시작

Status
colourRed
title필수

BuzzScreen.getInstance().launch()

앱 실행 시 처음 실행되는 액티비티에 추가하세요.

-

아래의 코드 예제를 참고하세요.

Code Block
languagejava
public class App extends Application {

    @Override
    public void onCreate() {
        super.onCreate();
        // BuzzScreen 초기화
        BuzzScreen.init("Unit ID", this, SimpleLockerActivity.class, R.drawable.image_on_fail);
    }
}
public class MainActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);    
        
        // 앱 실행시 처음 실행되는 액티비티에 추가합니다.
        BuzzScreen.getInstance().launch();
    }
}

...

Note

연령, 성별, 지역 등 사용자 정보를 설정하지 않는 경우 타겟팅이 설정된 광고가 보이지 않으므로, 사용자가 볼 수 있는 전체 광고의 수량이 줄어들게 됩니다. 사용자 정보 설정이 불가능한 경우 BD 매니저와 사전에 논의하시기 바랍니다.

항목

코드

호출 위치

설명

사용자 정보 설정을 위한 객체

BuzzScreen.getInstance().getUserProfile()

BuzzScreen.getInstance().activate() 호출 전입니다.

사용자 정보 설정할 수 있는 UserProfile 클래스를 호출합니다.

사용자 식별 값

Status
colourRed
title필수

setUserId(String userId)

userId

  • 사용자에게 적립금을 지급하기 위한 필수적인 설정 값입니다.

  • 매체사에서 사용자를 구분할 수 있는 식별 값입니다.

  • 매체사 포인트 적립 포스트백 API 연동 요청 시에 전달됩니다. 이에 대한 자세한 내용은 매체사 포인트 적립 포스트백 API 연동 가이드를 참고하세요.

Note

앱 재설치 또는 일정 주기에 따라 userId 가 변화할 경우, 반드시 미리 BD 매니저와 논의하시기 바랍니다.

사용자 연령

Status
colourYellow
title권장

setBirthYear(int birthYear)

사용자의 출생년도를 4자리 숫자로 입력하여 나이를 설정하세요.

사용자 성별

Status
colourYellow
title권장

setGender(String gender)

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

  • UserProfile.USER_GENDER_MALE : 남성

  • UserProfile.USER_GENDER_FEMALE : 여성

사용자 지역

Status
title선택

setRegion(String region)

"시/도 + 공백 + 시/군/구" 형식으로 설정하세요.

이 외

Status
title선택

커스텀 타게팅 가이드 참고

매체사에서 원하는 사용자 정보로 타겟팅할 수 있습니다.

아래의 코드 예제를 참고하세요.

Code Block
languagejava
// 사용자 정보를 등록하는 코드입니다.
com.buzzvil.buzzscreen.sdk.UserProfile userProfile = BuzzScreen.getInstance().getUserProfile();
userProfile.setUserId("USER_ID");
userProfile.setBirthYear(1985);
userProfile.setGender(UserProfile.USER_GENDER_MALE);
userProfile.setRegion("서울특별시 관악구");

3) 잠금화면 제어 설정

항목

코드

호출 위치

설명

다른 앱 위에 표시 권한 획득

Status
colourRed
title필수

BuzzScreen.getInstance().showOverlayPermissionGuideDialogIfNeeded(OverlayPermissionListener listener)

버즈스크린 활성화 시점

버즈스크린 활성화

Status
colourRed
title필수

BuzzScreen.getInstance().activate()

버즈스크린 활성화 시점

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

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

  • 다른 앱 위에 표시 권한을 획득한 이후에 호출하는 것을 권장합니다. 그렇지 않을 경우에 발생하는 문제에 대해서는 다른 앱 위에 표시 권한 획득하기 토픽을 참고하세요.

버즈스크린 비활성화

Status
colourRed
title필수

BuzzScreen.getInstance().deactivate()

버즈스크린 비활성화 시점

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

사용자 로그아웃

Status
colourRed
title필수

BuzzScreen.getInstance().logout()

사용자가 로그아웃하는 시점

이 함수는 deactivate()를 호출하며, 버즈스크린에서 사용하는 사용자 정보를 기기에서 삭제합니다.

버즈스크린이 화면에서 사라지는 시간 설정

Status
colourYellow
title권장

Info

BuzzScreen Android용 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 : 동작하지 않습니다.

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

Status
title선택

BuzzScreen.getInstance().activate(OnReadyListener listener)

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

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

Notification 커스텀

Status
title선택

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

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

4 단계. 다른 앱 위에 표시 권한 획득하기

Android 10부터 변경된 정책에 따라, 잠금화면을 띄우기 위해서는 다른 앱 위에 표시 권한을 획득해야 합니다. 이에 따라 BuzzScreen Android용 SDK는 사용자에게 해당 권한을 요청하는 메시지를 잠금화면과 인앱(In-App)에 노출해 권한 획득 지원 기능을 제공합니다.

...

버즈배너를 연동하려면 연동하려는 앱의 고유 식별자(App ID)와 광고 지면의 고유 식별자(Unit ID)가 필요합니다. ID를 발급받으려면 버즈빌 담당자에게 연락하세요.

ID 유형

설명

BuzzBannerAppID

앱을 구분하게 하는 고유 App ID 입니다.

BuzzBannerSecret

앱을 구분하게 하는 고유 App Secret 입니다.

PlacementID

각 광고 지면을 구분하게 하는 고유 ID 입니다. 배너의 사이즈와 PlacementID 가 제대로 매칭되어야 광고 할당 및 노출이 정상적으로 이루어집니다.

BuzzBanner 초기화

BuzzScreen을 초기화한 다음 바로 BuzzBanner를 초기화할 수 있습니다. 다음의 절차를 따르세요. .

...

Code Block
breakoutModewide
languagejava
public class App extends Application {

    @Override
    public void onCreate() {
        super.onCreate();
        // BuzzScreen 초기화
        BuzzScreen.init("Unit ID", this, SimpleLockerActivity.class, R.drawable.image_on_fail);
        
        // BuzzBanner 초기화
        BuzzScreen.getInstance().initBuzzBanner(this, "YOUR_BUZZ_BANNER_APP_ID", "YOUR_BUZZ_BANNER_APP_SECRET");
        
        BuzzBannerConfig buzzBannerConfig = new BuzzBannerConfig.Builder()
                .bannerSize(BuzzBanner.BannerSize.W320XH50)
                .placementId("YOUR_BANNER_PLACEMENT_ID")
                .build();
        
        BuzzScreen.getInstance().setDefaultBuzzBannerConfig(buzzBannerConfig);
    }
}

사이즈

Enum

Banner 320 x 50

BuzzBanner.BannerSize.W320XH50

Banner 320 x 100

BuzzBanner.BannerSize.W320XH100

SimpleLockerActivity 사용하기

...

Info
  • 사용하고자 하는 ADN SDK 를 build.gradle에서 설정할 수 있습니다.

  • 호환 버전 이외의 버전을 사용하고자 하는 경우 반드시 버즈빌 담당 매니저에게 문의 후 사용하시기 바랍니다.

ADN

 

버전 정보

maven 저장소

build.gradle(implementation)

Adfit(Kakao)

3.12.7

Code Block
maven { 
    url 'https://devrepo.kakao.com/nexus/content/groups/public/' 
}
Code Block
implementation "com.kakao.adfit:ads-base:3.12.7"

Cauly

3.5.22

Code Block
maven {
    url "s3://repo.cauly.net/releases"
    credentials(AwsCredentials) {
        accessKey "AKIAWRZUK5MFKYVSUOLB"
        secretKey "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"
    }
}
Code Block
implementation "com.fsn.cauly:cauly-sdk:3.5.22"

Mobon

1.0.0.54

 

Code Block
implementation("io.github.mobon:mobonSDK:1.0.0.54") {
    transitive = true
    exclude group: 'com.google.android.gms'
}

Pangle

4.7.1.4

Code Block
maven { 
    url 'https://artifact.bytedance.com/repository/pangle' 
}
Code Block
implementation "com.pangle.global:ads-sdk:4.7.1.4"

UnityAds

4.3.0

 

Code Block
implementation 'com.unity3d.ads:unity-ads:4.3.0'

Vungle

6.11.0

 

Code Block
implementation "com.vungle:publisher-sdk-android:6.11.0"

Coupang

1.2.8

Code Block
maven { 
    url "https://raw.githubusercontent.com/coupang-ads-sdk/android/main" 
}

 

Code Block
// 별도 설정 정보를 포함한 구성
implementation "org.bitbucket.avatye.sdk-cash-block:plug-archive-coupang:1.2.8"

쿠팡 SDK 1.2.1 버전이 포함되어 있습니다.

AppLovin(11.3.3)

1.2.8

 

Code Block
// 별도 설정 정보를 포함한 구성 설정
implementation "org.bitbucket.avatye.sdk-cash-block:plug-archive-applovin:1.2.8"

AppLovin SDK 11.3.3 버전이 포함되어 있습니다.

Warning

기존에 버즈룰렛(BuzzRoulette)을 연동한 경우 AppLovin ADN을 추가하면 충돌이 발생합니다. BuzzRoulette을 연동하고 있다면 AppLovin은 추가할 수 없습니다.

한줄뉴스(BuzzHeadlineNews)

한줄뉴스(BuzzHeadlineNews)는 BuzzScreen 4.31.x 부터 버즈스크린에 노출되는 비보상 콘텐츠입니다.

...