Table of Contents |
---|
개요
Pop은 피드로 이동하는 진입점의 역할을 하지만 만보기 기능을 사용하시면 Pop에서 만보기 걸음수를 볼 수 있습니다. Pop 만보기형(PedometerPop)은 홈스크린과 다른 앱 최상단에 항상 띄울 수 있는 쳇헤드(chat-head)와 피드 상단 영역에서 현재 걸음수와 목표 걸음 달성 상태를 보여주고, 목표 걸음 달성 시 리워드를 지급합니다.
PedometerPop은 홈스크린과 다른 앱 최상단에 항상 띄울 수 있는 쳇헤드(chat-head)와 피드 상단 영역에서 현재 걸음수와 목표 걸음 달성 상태를 보여주고, 목표 걸음 달성 시 리워드를 지급합니다.
Note |
---|
PedometerePop 을 사용하기 위해선 Pop 기본설정을 마친 상태여야 합니다. |
...
<그림 1> PedometerPop feature 사용을 설정했을 때 Pop 피드의 모습
...
<그림 2> PedometerPop feature 를 활성화했을 때 PopPop(기본형) 에 만보기 기능이 추가되어 기본 아이콘대신 걸음수를 보여주며, 유저가 목표 걸음수에 도달했을시 리워드 지급을 안내합니다. 리워드 지급시 광고를 보여주며 유저의 리텐션을 높일 수 있습니다.
...
준비 사항
기본형 Pop 기본 설정 적용 완료
만보기 걸음 수 등록, 목표 걸음 달성 시의 리워드 적립, 리워드 적립 페이지의 광고 지면에 사용하는 Unit ID (이하
UNIT_ID_PEDOMETER
)목표 걸음 달성 후 표시되는 바텀시트 광고 지면에 사용하는 Unit ID (이하
UNIT_ID_PEDOMETER_REWARD
)
Step 1. 만보기 SDK 설치
application Application level build.gradle
에 만보기 모듈을 추가합니다.
Code Block | ||
---|---|---|
| ||
implementation 'com.buzzvil:buzz-pedometer:x.y.z' |
Info |
---|
buzzad-benefit 와 BuzzAd SDK와 동일한 버전 사용 |
...
Step 2. PedometerConfig 설정
Application class 에서 BuzzAdBenefit.init
할 때 pedometerConfig 와 popConfig 를 설정합니다.
pedometerConfig: Unit ID 설정 발급받은 Pedometer Unit
ID 2개 를Id를 benefit 초기화 시 설정합니다.
UNIT_ID_PEDOMETER
: 만보기 리워드 적립을 하는 fragment에서의 광고 유닛걸음 수 등록, 목표 걸음 달성 시의 리워드 적립, 리워드 적립 페이지의 광고 지면에 사용하는 Unit IDUNIT_ID_PEDOMETER_REWARD
: 만보기 마일스톤을 눌렀을 때 나오는 bottom sheet dialog 광고 유닛(Optional)pedometerIntroUnitId
를 통해 목표 걸음 달성 후 표시되는 바텀시트 광고 지면에 사용하는 Unit IDpedometerIntroUnitId
(부가 기능):YOUR_UNIT_ID_PEDOMETER_INTRO
를 설정합니다. 이 UnitId 가 설정되어있으면 적립이 가능할 때 Intro 광고 <그림 3> 노출설정하여 사용자가 만보기 히스토리 페이지에 진입할 때 Interstitial 광고를 노출할 수 있습니다.
popConfig:
<그림 1> 과 같이 feed 에 Pedometer 관련 내용을 보여주기 위해
feedHeaderViewAdapterClass
feedHeaderViewAdapterClass
를DefaultPedometerPopHeaderViewAdapter
로 설정popMode
를PopMode.PEDOMETER_POP
로 설정
Code Block | ||
---|---|---|
| ||
final PedometerConfig pedometerConfig = new PedometerConfig .Builder(getApplicationContext(), "YOUR_UNIT_ID_PEDOMETER", YOU"YOUR_UNIT_ID_PEDOMETER_REWARD") .pedometerIntroUnitId(YOUR_UNIT_ID_PEDOMETER_INTRO) // Optional .build(); final PopConfig popConfig = new PopConfig.Builder(getApplicationContext(), "YOUR_UNIT_ID_POPFEED") ...(생략)... .feedHeaderViewAdapterClass(DefaultPedometerPopHeaderViewAdapter.class) .popMode(PopConfig.PopMode.PEDOMETER_POP) .pedometerConfig(pedometerConfig) .build(); final BuzzAdBenefitConfig buzzAdBenefitConfig = new BuzzAdBenefitConfig.Builder(this) ...(생략)... .setPopConfig(popConfig) .build(); BuzzAdBenefit.init(this, buzzAdBenefitConfig); |
Step 3. 초기화
만보기 초기화는 로그인이 완료된 시점에 해야 합니다. 이를 위해 Application class onCreate
에 sessionReadyReceiver
를 등록합니다. 로그인 완료시, 만보기를 초기화합니다등록해야합니다. onReceive
는 BuzzAdBenefit.setUserProfile
가 살행된 후에 호출됩니다.
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", "YOUR_UNIT_ID_POPFEED"); } } }; @Override public void onCreate() { super.onCreate(); BuzzAdBenefit.registerSessionReadyBroadcastReceiver(this, sessionReadyReceiver); } |
Step 4. 권한 설정
OS 버전 Android 10 (Q, API 29) 부터는 이상인 디바이스에서 만보기 기능을 사용하기 위해서는 신체 활동 감지 권한이 필요하게 변경됐습니다필요합니다. (참고: Android Developer Guide)
1) 권한 요청
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 권한 획득
...
다른 앱 위에 그리기 권한 설정 및 Pop 실행의 4에서와 같이 다른 앱 위에 그리기 권한을 획득한 후 자동으로 Activity 로 돌아왔을때, 아래와 같이 만보기 기능을 활성화합니다.
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 // 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 activatePedometerPoppreloadAndShowPop(); } } private void activatePedometerPop() { BuzzAdPopPedometer.activate(); } |
Step 5. 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가 종료되고 이후 팝이 나타나지 않습니다.
Code Block | ||
---|---|---|
| ||
buzzAdPop.removePop(context);} } ...생략... |