...
application level build.gradle
에 만보기 모듈을 추가합니다.
Code Block | ||
---|---|---|
| ||
implementation 'com.buzzvil:buzz-pedometer:x.y.z' |
...
Code Block | ||
---|---|---|
| ||
final PedometerConfig pedometerConfig = new PedometerConfig .Builder(getApplicationContext(), UNIT_ID_PEDOMETER, UNIT_ID_PEDOMETER_REWARD) .pedometerIntroUnitId(UNIT_ID_PEDOMETER_INTRO) // Optional .build(); final PopConfig popConfig = new PopConfig.Builder(getApplicationContext(), UNIT_ID_POP) ...(생략)... .feedHeaderViewAdapterClass(DefaultPedometerPopHeaderViewAdapter.class) .popMode(PopConfig.PopMode.PEDOMETER_POP) .pedometerConfig(pedometerConfig) .popExitUnitId(App.unitIdPedometerPopExit) // Optional .build(); final BuzzAdBenefitConfig buzzAdBenefitConfig = new BuzzAdBenefitConfig.Builder(this) ...(생략)... .setPopConfig(popConfig) .build(); BuzzAdBenefit.init(this, buzzAdBenefitConfig); |
...
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. 권한 설정
Android 10 (Q, API 29) 부터는 신체 활동 감지 권한이 필요하게 변경됐습니다. (참고: Android Developer Guide)
...
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 | ||
---|---|---|
| ||
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 4. Pop 실행
팝을 실행 하기 위해서BuzzAdPop.preloadAndShowPop()
함수를 호출해 줍니다. 호출하기 전 다른 앱 위에 그리기
권한이 있는지 꼭 확인해 주세요. 팝이 한 번 활성화 하면 foreground service가 켜지면서 화면을 껐다켤때마다 팝이 지속적으로 화면에 보이게 됩니다.
Code Block | ||
---|---|---|
| ||
BuzzAdPop buzzAdPop = new BuzzAdPop(context, YOUR_POP_UNIT_ID); if (BuzzAdPop.hasPermission(MainActivity.this) || Build.VERSION.SDK_INT < Build.VERSION_CODES.M) { buzzAdPop.preloadAndShowPop(context); } else { // 다른 앱 위에 그리기 권한 받는 코드 } |
팝을 비활성화 하기 위해서 buzzAdPop.removePop(Context)
을 호출해야합니다. buzzAdPop.removePop(Context)
을 호출하면 pop의 service가 종료되고 이후 팝이 나타나지 않습니다.
...