...
Table of Contents |
---|
Info |
---|
PedometerePop 을 사용하기 위해선 Pop 초기화를 마친 상태여야 합니다. |
<그림 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 이상 |
pedometerConfig: 위 unitId 설정
발급받은 Pedometer unitId 2개 를 benefit 초기화 시 설정합니다.
UNIT_ID_PEDOMETER
: 만보기 리워드 적립을 하는 fragment에서의 광고 유닛UNIT_ID_PEDOMETER_REWARD
: 만보기 마일스톤을 눌렀을 때 나오는 bottom sheet dialog 광고 유닛(Optional)
pedometerIntroUnitId
를 통해UNIT_ID_PEDOMETER_INTRO
를 설정합니다. 이 UnitId 가 설정되어있으면 적립이 가능할 때 Intro 광고 <그림 3> 노출
feedConfig popConfig:
<그림 1> 과 같이 feed 에 Pedometer 관련 내용을 보여주기 위해
feedHeaderViewAdapterClass
설정
popConfig:
popMode
를PopMode.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 미만 |
pedometerConfig: 위 unitId 설정
발급받은 Pedometer unitId 2개 를 benefit 초기화 시 설정합니다.
UNIT_ID_PEDOMETER
: 만보기 리워드 적립을 하는 fragment에서의 광고 유닛UNIT_ID_PEDOMETER_REWARD
: 만보기 마일스톤을 눌렀을 때 나오는 bottom sheet dialog 광고 유닛(Optional) Pop 의 Exit 광고 <그림 3> 도
popExitUnitId
를 통해 설정 가능pedometerIntroUnitId
를 통해UNIT_ID_PEDOMETER_INTRO
를 설정합니다. 이 UnitId 가 설정되어있으면 적립이 가능할 때 Intro 광고 <그림 3> 노출
feedConfig: <그림 1> 과 같이 feed 에 Pedometer 관련 내용을 보여주기 위해
feedHeaderViewAdapterClass
설정popConfig:
popMode
를PopMode.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 onCreate
에 sessionReadyReceiver
를 등록합니다. 세션이 준비되면 만보기를 초기화합니다.
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
...
Status | ||||
---|---|---|---|---|
|
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
...
Pedometer Pop Icon 에 표시 되는 걸음 수 Text Color
...
15
...
Status | ||||
---|---|---|---|---|
|
popIconRewardIconResId
...
Pedometer Pop Icon 적립 가능할 때 보이는 Icon resource id
...
16
...
popIconBackgroundColor
...
Pedometer Pop Icon Background Color
Status | ||||
---|---|---|---|---|
|
PedometerPopHeaderViewAdapter
PedometerPopHeaderViewAdapter
를 확장하여 Pop Feed Header 영역을 customize 할 수 있습니다
...
Set CustomPedometerPopHeaderViewAdapter
and PopHeaderConfig
FeedConfig
.feedHeaderViewAdapterClass
를 통해CustomPedometerPopHeaderViewAdapter.class
를 사용하도록 설정CustomPedometerPopHeaderViewAdapter
class 생성:PedometerPopHeaderViewAdapter
를 상속PopHeaderConfig
를 통해 customizing 설정
Code Block |
---|
final FeedConfig feedConfig = new FeedConfig.Builder(getApplicationContext(), UNIT_ID_POP)
...
.feedHeaderViewAdapterClass(CustomPedometerPopHeaderViewAdapter.class)
...
.build();
public class CustomPedometerPopHeaderViewAdapter extends PedometerPopHeaderViewAdapter {
@Override
public PedometerPopHeaderConfig buildPopHeaderConfig(Context context) {
return new PedometerPopHeaderConfig.Builder(context)
.stepCountDescription()
.progressChartColor()
.progressChartGuideColor()
.inProgressDescription()
.rewardableDescription()
.progressIconResId()
.descriptionIconResId()
.boundaryImageResId()
.build();
}
} |
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
...