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 할 때

...

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 를 활성화할 때 권한을 얻어야 합니다.

...

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

    1. 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 획득) 진행

    1. 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 권한 획득

    1. 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 을 자동으로 호출

    1. 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

...

Status
colourRed
titleDeprecated
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

...

Status
colourRed
titleDeprecated
popIconRewardIconResId

...

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

...

16

...

popIconBackgroundColor

...

Pedometer Pop Icon Background Color

Status
colourRed
titleDeprecated
: 'BuzzAd Benefit 2 Android SDK 연동 가이드 - More details - BuzzAd Benefit Products에 테마를 적용'를 이용하는 것을 권장합니다.

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

...