PedometerPop은 만보기를 기본으로 하는 Pop 을 사용할 수 있게 해주는 feature 입니다.
Info |
---|
Buzz-Pedometer를 연동하실 때는, 아래 BuzzAd-Benefit과의 호환성을 참고해 연동 부탁드립니다. BuzzAd-Benefit 2.7.+ Buzz-Pedometer 1.2.0-hotfix.2 BuzzAd-Benefit 2.9.+ Buzz-Pedometer 1.2.1-hotfix.2 BuzzAd-Benefit 2.11.+ Buzz-Pedometer 1.2.6 |
...
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
에 만보기 모듈을 추가합니다.
Code Block |
---|
implementation 'com.buzzvil:buzz-pedometer:x.y.z' |
Info |
---|
buzzad-benefit:2.1112.+ 를 사용하는 경우 buzz-pedometer:1.3.+ 사용 |
Step2. (Optional) Manifest settings for project with minSdk less than 19
발생할 수 있는 빌드 에러
...
Manifest merger failed : uses-sdk:minSdkVersion 15 cannot be smaller than version 19 declared in library [:feature:buzz-pedometer]
가 발생했습니다.
-> minSdk가 19 미만의 경우, AndroidManifest.xml 에 아래와 같이 설정해야합니다.
Code Block |
---|
<uses-sdk tools:overrideLibrary="com.buzzvil.pedometer" /> |
AndroidManifest 에 이미 사용 중인 overrideLibrary 가 있다면 다음과 같이 추가할 수 있습니다.
...
<그림 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> 노출
popConfig:
<그림 1> 과 같이 feed 에 Pedometer 관련 내용을 보여주기 위해
feedHeaderViewAdapterClass
설정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 |
...
<그림 3> Pop Interstitial Ad
Step3. Set pedometer config
Application class 에서 BuzzAdBenefit.init
할 때
...
.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)
pedometerIntroUnitId
를 통해UNIT_ID_PEDOMETER_INTRO
를 설정합니다. 이 UnitId 가 설정되어있으면 적립이 가능할 때 Intro 광고 <그림 3> 노출
feedConfig: <그림 1> 과 같이 feed 에 Pedometer 관련 내용을 보여주기 위해
feedHeaderViewAdapterClass
설정popConfig:
popMode
를PopMode.PEDOMETER_POP
로 설정(Optional)Pop 의 Exit 광고 <그림 3> 도
popExitUnitId
를 통해 설정 가능
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) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { initPedometer(context); } else { Log.d(TAG, "BuzzAdPopPedometer failure, needs Build.VERSION_CODE >= 19"); } Log.d(TAG, "Session is Ready. Ads can be loaded now."); } @RequiresApi(api = Build.VERSION_CODES.KITKAT) 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) 부터는 신체 활동 감지 권한이 필요하도록 필요하게 변경됐습니다. 앱에서 PedometerPop 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 활성화 → 신체 감지 권한 획득 → OverlayPermission OverlayPermissoin 획득 → BuzzAdPopPedometer.activate() → showPop → PedometerPop 기능을 사용할 수 있습니다.
Customization
PedometerConfig
PedometerConfig
를 통해서 아래 이미지의 내용(이미지, 컬러, 문구)을 변경할 수 있습니다
...
No. 는 위 그림의 customize 가능한 영역의 숫자를 뜻합니다. unitId
, rewardUnitId
는 필수이며 나머지는 optional 입니다.
...
No.
...
Parameter
...
Description
...
8
...
unitId
...
Pedometer fragment 에서 사용하는 광고 Unit Id
...
11
...
rewardUnitId
...
Pedometer bottom sheet(리워드 정보 화면)에서 사용하는 광고 Unit Id
...
<그림 3>
...
pedometerIntroUnitId
...
적립 가능 할 때 Pedometer fragment 진입 시 사용하는 광고 Unit id
...
1
...
toolbarTitleResId
...
Pedometer fragment 툴바에 표시되는 title resource id
...
2
...
tutorialUrl
...
Pedometer fragment 툴바의 튜토리얼 버튼을 눌렀을 때 이동할 url 주소
...
3
...
milestoneProgressGuideColorResId
...
Pedometer fragment 마일스톤 Progress Guide Color resource id
...
4
...
milestoneProgressColorResId
...
Pedometer fragment 마일스톤 Progress Color resource id
...
5
...
milestoneRewardIconResId
...
Pedometer fragment 마일스톤 적립 가능할 때 보이는 Icon resource id
...
6
...
rewardAvailableTextColorId
...
Pedometer fragment 마일스톤 적립 가능할 때 표시되는 Text Color resource id
...
7
...
rewardAvailableBackgroundId
...
Pedometer fragment 마일스톤 적립 가능할 때 표시되는 Text Background resource Id
...
9
...
bottomSheetImageResId
...
Pedometer bottom sheet 마일스톤 적립 가능할 때 보이는 image resource id
...
10
...
bottomSheetSuccessStringResId
...
Pedometer bottom sheet 적립 완료 string resource id
...
10
...
bottomSheetInProgressStringResId
...
Pedometer bottom sheet 적립 중 string resource id
...
12
...
popIconProgressColorResId
...
Pedometer Pop Icon Progress Color resource id
...
13
...
popIconProgressGuideColorResId
...
Pedometer Pop Icon Progress Guide Color resource id
...
14
...
popIconTextColorResId
...
수
...
15
...
popIconRewardIconResId
...
Pedometer Pop Icon 적립 가능할 때 보이는 Icon resource id
...
16
...
popIconBackgroundColorResId
...
Pedometer Pop Icon Background Color resource id
PedometerPopHeaderViewAdapter
PopHeaderConfig
를 사용하여 PedometerPop Feed Header 영역을 customize 할 수 있습니다
...
Set PopHeaderConfig
FeedConfig
.feedHeaderViewAdapterClass
를 통해DefaultPedometerPopHeaderViewAdapter.class
를 사용하도록 설정PopHeaderConfig
설정: PedometerPop Feed Header customizingPopConfig
.popHeaderConfig
를 통해 2. 에서 설정한PopHeaderConfig
를 설정
...
.
...
PopHeaderConfig
...
No.
...
Parameter
...
Description
...
1
...
pedometerDashboardProgressChartColor
...
Progress Color
...
2
...
pedometerDashboardProgressChartGuideColor
...
Progress Guide Color
...
3
...
drawableProgressIcon
...
적립 가능할 때 보이는 Icon resource id
...
4
...
drawablePopPedometerDescriptionIcon
...
적립 중을 표시하는 Icon resource id
...
5
...
pedometerDashboardBoundaryImage
...
추가로 보여줄 Image resource id
...
6
...
pedometerStepCountDescription
...
몇 걸음 걸었는지 표시하는 String
...
7
...
pedometerInProgressDescription
...
적립 중일 때 표시하는 String
...
8
...
pedometerRewardableDescription
...