Skip to content

Mavl Screen SDK v1.0.0 integrated guide

shewenbiao edited this page May 15, 2019 · 11 revisions

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 Introduce Methods of MavlScreenConfig.Builder

4.1.1 setAddedTime(long time)

设置集成screen sdk后首次进入应用的时间。

Note:

  1. 该方法必须调用

  2. 已有锁屏功能的应用集成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:

该方法用来调试用, 正式版本中不要调用该方法。

4.2 Using default screen

MavlScreenManager.getInstance().init(this, new MavlScreenConfig.Builder()
        .setAddedTime(addedTime)
        .setBackgroundId(R.drawable.bg_screen)
        .setAdId(Constants.MOPUB_ID_SCREEN)  
        .build());

4.3 Custom your screen

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。

Clone this wiki locally