-
Notifications
You must be signed in to change notification settings - Fork 0
Mavl Screen SDK v1.0.0 integrated guide
1.1 Copy mavl-screen-release-*.aar file into app/libs folder
1.2 Add mavl-screen-release-*.aar supported in build.gradle
repositories {
jcenter()
flatDir {
dirs './libs'
}
}
android {
dependencies {
implementation(name: 'mavl-screen-release-*.aar, ext: 'aar')
}
}
dependencies {
implementation 'me.drakeet.support:toastcompat:1.1.0'
implementation 'org.greenrobot:eventbus:3.1.1'
//glide
implementation 'com.github.bumptech.glide:glide:4.7.1'
annotationProcessor 'com.github.bumptech.glide:compiler:4.7.1'
}
由于Mavl Screen上面有广告,所以需要添加Mavl Mopub sdk支持,集成文档请见:
https://github.com/kevenzxd/GoodPractice/wiki/Mavl-sdk-V1.2.--integrated-guide
It's easy to use, only called MavlScreenManager.getInstance().init(Context, MavlScreenConfig) in your Application's onCreate().
4.1.1 setAddedTime(long time)
设置集成screen sdk后首次进入应用的时间。
Note:
-
该方法必须调用
-
已有锁屏功能的应用集成screen sdk的话,只需要将已有的那个时间传进去,之前没有锁屏功能的应用需要记录该时间, 并传给sdk。
4.1.2 setBackgroundId(@DrawableRes int backgroundId)
设置screen背景id
4.1.3 setAdId(@NonNull String adId)
设置screen native广告id
Note:
如果使用默认screen,必须调用该方法传入native广告id,否则不会有广告
4.1.4 withFragment(@Nullable String fragmentClassName)
设置自定义fragment的类名。 如果没有调用该方法或者传入的值为null, 则会采用默认的screen
Note:
该类名不能是写死的字符串,因为内部实现是通过反射机制,如果该类被混淆了就会找不到类,就会使用默认的screen
错误示例:
withFragment("*.*.*.ScreenCustomFragment")
正确示例:
withFragment(ScreenCustomFragment.class.getName())
4.1.5 setFullScreen(boolean fullScreen)
设置是否全屏(隐藏状态栏和底部导航栏), 默认true(两者都隐藏)。 如果设置为false的话, 只隐藏底部导航栏, 状态栏不隐藏并且是透明的。
4.1.6 setDeveloperModeEnabled(boolean developerModeEnabled)
设置是否开启debug模式, 默认false. true开启, false不开启, 如果开启的话, 在灭屏和充拔电源的情况下可以直接出现锁屏, 方便调试。
Note:
该方法用来调试用, 正式版本中不要调用该方法。
MavlScreenManager.getInstance().init(this, new MavlScreenConfig.Builder()
.setAddedTime(addedTime)
.setBackgroundId(R.drawable.bg_screen)
.setAdId(Constants.MOPUB_ID_SCREEN)
.build());
4.3.1 Create your SreenFragment
public class ScreenFragment extends ScreenBaseFragment {
/**
* Get ad config. ScreenAdConfig contain ad id and AdViewBinder.
* AdViewBinder contains ad layout id, image id, icon id, title id, content id, action id and choice id
* @return
*/
@Override
protected ScreenAdConfig getAdConfig() {
AdViewBinder adViewBinder =
new AdViewBinder(R.layout.screen_native_ad_view, R.id.ad_image,
R.id.ad_icon, R.id.ad_title
, R.id.ad_desc, R.id.call_to_action, R.id.ad_choice);
return new ScreenAdConfig(Constants.MOPUB_ID_SCREEN, adViewBinder);
}
/**
* Fragment layout id
* @return
*/
@Override
protected int getLayoutId() {
return R.layout.fragment_screen;
}
/**
* Native ad container(type: ViewGroup, you can use LinearLayout, FrameLayout or ReleativeLayout)
* @return
*/
@Override
protected int getNativeAdContainerId() {
return R.id.native_ad_container;
}
}
4.3.2 Init
MavlScreenManager.getInstance().init(this, new MavlScreenConfig.Builder()
.withFragment(ScreenFragment.class.getName())
.setAddedTime(addedTime)
.setBackgroundId(R.drawable.bg_screen)
.build());
5.1 我们应用里锁屏launch的第一个前提条件是在不去广告的前提下,因此,init mavl screen sdk的时候仍要加此判断。 至于其他launch条件已经在sdk里处理了。
5.2 应用内付费购买后注意调用MavlScreenManager.getInstance().disableScreen(Context)去关闭锁屏功能。
5.3 在关闭锁屏功能的点击事件里调用MavlScreenManager.getInstance().disableScreen(Context)去关闭锁屏功能。
5.4 在打开锁屏功能的点击事件里调用MavlScreenManager.getInstance().enableScreen(Context)去打开锁屏功能。
5.5 如果各应用在原有的ScreenFragment基础上去实现ScreenBaseFragment,记得删掉广告相关的代码,因为和广告有关的逻辑已经全部封装在module里了。
5.6 如果是已有锁屏功能的应用集成mavl screen sdk, 需要注意以下几点: 如果是使用默认的screen, 就把原有和锁屏相关的全部删掉(比如service, activity, fragment, view, util, firebase remote config等等); 如果是使用自定义的方式, 注意(5.5)这一点,然后也是把其他的都删掉; 有用ShimmerTextView的话改用sdk里的ShimmerTextView。