Versions Compared

Key

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

...

Table of Contents

Info

PedometerePop 을 사용하기 위해선 Pop 초기화를 마친 상태여야 합니다.

Image Modified

<그림 1> PedometerPop feature 사용을 설정했을 때 Pop 피드의 모습

...

<그림 2> PedometerPop feature 를 활성화했을 때 Pop

Initialization

Step 1. Add pedometetr feature module

application level build.gradle 에 만보기 모듈을 추가합니다.

...

<그림 3> Pop Interstitial Ad

Step 2. Set pedometer config

Application class 에서 BuzzAdBenefit.init 할 때

Info

Benefit SDK 2.17 이상

  1. pedometerConfig: 위 unitId 설정

    1. 발급받은 Pedometer unitId 2개 를 benefit 초기화 시 설정합니다.

      UNIT_ID_PEDOMETER: 만보기 리워드 적립을 하는 fragment에서의 광고 유닛

      UNIT_ID_PEDOMETER_REWARD: 만보기 마일스톤을 눌렀을 때 나오는 bottom sheet dialog 광고 유닛

    2. (Optional) pedometerIntroUnitId 를 통해 UNIT_ID_PEDOMETER_INTRO 를 설정합니다. 이 UnitId 가 설정되어있으면 적립이 가능할 때 Intro 광고 <그림 3> 노출

  2. feedConfig popConfig:

    1. <그림 1> 과 같이 feed 에 Pedometer 관련 내용을 보여주기 위해 feedHeaderViewAdapterClass 설정

    popConfig:

    1. popModePopMode.PEDOMETER_POP설정

Code Block
final FeedConfig feedConfig = new FeedConfig.Builder(getApplicationContext(), UNIT_ID_FEED)
        .build();
final PedometerConfig pedometerConfig = buildPedometerConfig();
final PopConfig popConfig = new PopConfig.Builder(getApplicationContext(), UNIT_ID_POP)
        ...
        .feedHeaderViewAdapterClass(DefaultPedometerPopHeaderViewAdapter.class)
        .popMode(PopConfig.PopMode.PEDOMETER_POP)
        .pedometerConfig(pedometerConfig)
        ...
        .build();
final BuzzAdBenefitConfig buzzAdBenefitConfig = new BuzzAdBenefitConfig.Builder(this)
        .add(popConfig)
        .add(feedConfig)
        .build();
BuzzAdBenefit.init(this, buzzAdBenefitConfig);

@NotNull
private PedometerConfig buildPedometerConfig() {
    return new PedometerConfig
            .Builder(getApplicationContext(), UNIT_ID_PEDOMETER, UNIT_ID_PEDOMETER_REWARD)
            .pedometerIntroUnitId(UNIT_ID_PEDOMETER_INTRO) // Optional
            .build();
}
Note

Benefit SDK 2.17 미만

  1. pedometerConfig: 위 unitId 설정

    1. 발급받은 Pedometer unitId 2개 를 benefit 초기화 시 설정합니다.(Optional)Pop 의 Exit 광고 <그림 3> 도 popExitUnitId 를 통해 설정 가능

      UNIT_ID_PEDOMETER: 만보기 리워드 적립을 하는 fragment에서의 광고 유닛

      UNIT_ID_PEDOMETER_REWARD: 만보기 마일스톤을 눌렀을 때 나오는 bottom sheet dialog 광고 유닛

    2. (Optional) pedometerIntroUnitId 를 통해 UNIT_ID_PEDOMETER_INTRO 를 설정합니다. 이 UnitId 가 설정되어있으면 적립이 가능할 때 Intro 광고 <그림 3> 노출

  2. feedConfig: <그림 1> 과 같이 feed 에 Pedometer 관련 내용을 보여주기 위해 feedHeaderViewAdapterClass 설정

  3. popConfig:

    1. popModePopMode.PEDOMETER_POP 로 설정

Code Block
final FeedConfig feedConfig = new FeedConfig.Builder(getApplicationContext(), UNIT_ID_POP)
        ...
        .feedHeaderViewAdapterClass(DefaultPedometerPopHeaderViewAdapter.class)
        ...
        .build();
final PedometerConfig pedometerConfig = buildPedometerConfig();
final PopConfig popConfig = new PopConfig.Builder(getApplicationContext(), UNIT_ID_POP)
        ...
        .popMode(PopConfig.PopMode.PEDOMETER_POP)
        .pedometerConfig(pedometerConfig)
        .popExitUnitId(App.unitIdPedometerPopExit) // Optional
        ...
        .build();
final BuzzAdBenefitConfig buzzAdBenefitConfig = new BuzzAdBenefitConfig.Builder(this)
        .add(popConfig)
        .build();
BuzzAdBenefit.init(this, buzzAdBenefitConfig);

@NotNull
private PedometerConfig buildPedometerConfig() {
    return new PedometerConfig
            .Builder(getApplicationContext(), UNIT_ID_PEDOMETER, UNIT_ID_PEDOMETER_REWARD)
            .pedometerIntroUnitId(UNIT_ID_PEDOMETER_INTRO) // Optional
            .build();
}

Step 3. Initialize Pop Pedometer

Application class onCreatesessionReadyReceiver 를 등록합니다. 세션이 준비되면 만보기를 초기화합니다.

Code Block
@Override
public void onCreate() {
    super.onCreate();

    initBuzzAdBenefit();
    BuzzAdBenefit.registerSessionReadyBroadcastReceiver(this, sessionReadyReceiver);
}
private BroadcastReceiver sessionReadyReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        initPedometer(context);
        Log.d(TAG, "Session is Ready. Ads can be loaded now.");
    }

    private void initPedometer(Context context) {
        Log.d(TAG, "Session is Ready. initPedometer");

        if (popConfig.getPedometerConfig() != null) {
            BuzzAdPopPedometer.init(context, "APP_ID", "UNIT_ID_POP");
        }
    }
};

Step 4. Get physical activity recognition and OverlayPermission

Android 10 (Q, API 29) 부터는 신체 활동 감지 권한이 필요하게 변경됐습니다. 앱에서 PedometerLight feature 를 활성화할 때 권한을 얻어야 합니다.

https://developer.android.com/about/versions/10/privacy/changes#physical-activity-recognition

(참고: Android Developer Guide)

1. showPop 을 호출하기 전에 requestActivityRecognitionPermissionIfNeeded 함수를 통해 신체 활동 감지 권한이 있는 지 확인하고 없으면 권한을 요청

Code Block
private boolean requestActivityRecognitionPermissionIfNeeded(Activity activity) {
    if (activity != null && Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
        if (ActivityCompat.checkSelfPermission(activity, Manifest.permission.ACTIVITY_RECOGNITION) != PackageManager.PERMISSION_GRANTED) {
            requestActivityRecognitionPermission(activity);
            return true;
        }
    }
    return false;
}

@TargetApi(Build.VERSION_CODES.Q)
private void requestActivityRecognitionPermission(Activity activity) {
    if (ActivityCompat.shouldShowRequestPermissionRationale(activity, Manifest.permission.ACTIVITY_RECOGNITION)) {
        if (!activity.isFinishing()) {
            new AlertDialog.Builder(activity)
                    .setTitle(R.string.pop_pedometer_dialog_permission_title)
                    .setMessage(R.string.pop_pedometer_dialog_permission_description)
                    .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialogInterface, int i) {
                            requestPermissions(new String[]{Manifest.permission.ACTIVITY_RECOGNITION}, ACTIVATION_REQUEST_CODE);
                        }
                    }).show();
        }
    } else {
        requestPermissions(new String[]{Manifest.permission.ACTIVITY_RECOGNITION}, ACTIVATION_REQUEST_CODE);
    }
}

2. 권한이 획득 되면 onRequestPermissionsResult 를 통해서 결과를 받고 다음 step(overlay permission 획득) 진행

Code Block
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
    switch (requestCode) {
        case ACTIVATION_REQUEST_CODE: {
            if ((grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED)) {
                showPopOrRequestOverlayPermissionIfNeeded();
            } else {
                pedometerPopSwitch.setChecked(false);
            }
        }
    }
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}

3. Overlay 권한 획득

Code Block
private void showPopOrRequestOverlayPermissionIfNeeded() {
    if (BuzzAdPop.hasPermission(MainActivity.this) || Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
        showPop();
    } else {
        BuzzAdPop.requestPermissionWithDialog(MainActivity.this,
                new PopOverlayPermissionConfig.Builder(R.string.pop_name)
                        .settingsIntent(OverlayPermission.createIntentToRequestOverlayPermission(MainActivity.this))
                        .requestCode(REQUEST_CODE_SHOW_POP)
                        .build()
        );
    }
}

4. 위 스탭들을 통해서 신체 감지 권한 및 OverlayPermission 권한을 획득했다면 Activity.onCreate 에 아래 코드를 넣어 주면 activatePedometerPop 을 자동으로 호출

Code Block
// Activity.onCreate
if (getIntent().getBooleanExtra(KEY_SETTINGS_RESULT, false)
        && getIntent().getIntExtra(KEY_SETTINGS_REQUEST_CODE, 0) == REQUEST_CODE_SHOW_POP) {
    if (BuzzAdPop.hasPermission(this)) {
        buzzAdPop.showTutorialPopup(this);
        // overlay permission granted
        // collect event here if necessary
        activatePedometerPop();
    }
}

private void activatePedometerPop() {
    BuzzAdPopPedometer.activate();
}

Step 5. Final Step

App 실행 → PedometerPop 활성화 → 신체 감지 권한 획득 → OverlayPermissoin 획득 → BuzzAdPopPedometer.activate() → showPop → PedometerPop 기능을 사용할 수 있습니다.

 

Customization

PedometerConfig

PedometerConfig 를 통해서 아래 이미지의 내용(이미지, 컬러, 스트링)을 변경할 수 있습니다

...

No. 는 위 그림의 customize 가능한 영역의 숫자를 뜻합니다. unitId, rewardUnitId 는 필수고 나머지는 optioinal 입니다.

...

No.

...

Parameter

...

Description

...

 8

...

unitId

...

Pedometer fragment 에서 사용하는 광고 Unit Id

...

 11

...

rewardUnitId

...

Pedometer bottom sheet(리워드 정보 화면)에서 사용하는 광고 Unit Id

...

 <그림 3>

...

pedometerIntroUnitId

...

적립 가능 할 때 Pedometer fragment 진입 시 사용하는 광고 Unit id

...

1

...

toolbarTitle

...

Pedometer fragment 툴바에 표시되는 title

...

2

...

tutorialUrl

...

Pedometer fragment 툴바의 튜토리얼 버튼을 눌렀을 때 이동할 url 주소

...

3

...

milestoneProgressGuideColor

...

Pedometer fragment 마일스톤 Progress Guide Color

...

4

...

milestoneProgressColor

...

Pedometer fragment 마일스톤 Progress Color

...

5

...

milestoneRewardIconResId

...

Pedometer fragment 마일스톤 적립 가능할 때 보이는 Icon resource id

...

6

...

rewardAvailableTextColor

...

Pedometer fragment 마일스톤 적립 가능할 때 표시되는 Text Color

...

7

...

rewardAvailableBackgroundResId

...

Pedometer fragment 마일스톤 적립 가능할 때 표시되는 Text Background Resource Id

...

9

...

bottomSheetImageResId

...

Pedometer bottom sheet 마일스톤 적립 가능할 때 보이는 image resource id

...

10

...

bottomSheetSuccessString

...

Pedometer bottom sheet 적립 완료 string

...

10

...

bottomSheetInProgressString

...

Pedometer bottom sheet 적립 중 string

...

12

...

popIconProgressColor

...

Pedometer Pop Icon Progress Color

...

13

...

popIconProgressGuideColor

...

Pedometer Pop Icon Progress Guide Color

...

14

...

popIconTextColor

...

...

15

...

popIconRewardIconResId

...

Pedometer Pop Icon 적립 가능할 때 보이는 Icon resource id

...

16

...

popIconBackgroundColor

...

Pedometer Pop Icon Background Color

PedometerPopHeaderViewAdapter

PedometerPopHeaderViewAdapter 를 확장하여 Pop Feed Header 영역을 customize 할 수 있습니다

...

Set CustomPedometerPopHeaderViewAdapter and PopHeaderConfig

  1. FeedConfig.feedHeaderViewAdapterClass 를 통해 CustomPedometerPopHeaderViewAdapter.class 를 사용하도록 설정

  2. CustomPedometerPopHeaderViewAdapter class 생성: PedometerPopHeaderViewAdapter 를 상속

  3. PopHeaderConfig 를 통해 customizing 설정

...

.

...

PedometerPopHeaderConfig

...

No.

...

Parameter

...

Description

...

1

...

progressChartColor

...

Progress Color

...

2

...

progressChartGuideColor

...

Progress Guide Color

...

3

...

progressIconResId

...

적립 가능할 때 보이는 Icon resource id

...

4

...

descriptionIconResId

...

적립 중을 표시하는 Icon resource id

...

5

...

dashboardBoundaryImageResId

...

추가로 보여줄 Image resource id

...

6

...

stepCountDescription

...

몇 걸음 걸었는지 표시하는 String

...

7

...

inProgressDescription

...

적립 중일 때 표시하는 String

...

8

...

rewardableDescription

...