小说 Novel Android SDK 接入文档

概述

本文档描述了 Android 开发者如何集成 Novel SDK(后面简称为 NovelSdk),通过集成 NovelSdk 为 App 引入丰富的小说内容。

术语介绍

AppId:应用 id,18位 hex 字符串。【注意】调试时请使用测试 appId:ba0063bfbc1a5ad878;外发版本请替换成正式 appId,否则不会产生收益。

UserId:用户 id,接入方定义的用户唯一标识,userId 和用户小说积分、奖励信息相关联。

SDK 集成

方法一:自动集成 (推荐)

通过在 Android Studio 工程的 build.gradle 配置脚本中添加 maven 依赖,导入最新版本 NovelSdk。

步骤一:添加 Maven 仓库地址

allprojects {
    repositories {
        maven {
            credentials {
                username 'iqLuKm'
                password 'pomH01oYcR'
            }
            url 'https://repo.rdc.aliyun.com/repository/117933-release-sPkE7F/'
        }
    }
}

【注意】加在 allprojects 中,不要加在 buildscript 中哦。

步骤二:添加依赖

dependencies {
    implementation 'androidx.appcompat:appcompat:1.2.0'
    implementation 'pl.droidsonroids.gif:android-gif-drawable:1.2.3'

    implementation 'com.mob.sdk:adsdk:2.7.16'
    implementation 'com.mob.sdk:novelsdk:1.0.1'
}

方法二:手动集成

将 NewsSdk 的 aar 包复制到 Application Module 的 libs 目录下(无此目录需手动创建), 并在工程的 build.gradle 中添加如下配置:

repositories {
    flatDir {
        dirs 'libs'
    }
}

depedencies {
    implementation 'androidx.appcompat:appcompat:1.2.0'
    implementation 'pl.droidsonroids.gif:android-gif-drawable:1.2.3'

    implementation(name: 'adsdk-2.7.16', ext: 'aar')
    implementation(name: 'novelsdk-1.0.1', ext: 'aar')
}

SDK 初始化

开发者需要在 Application 实例的 onCreate() 方法中调用以下代码来初始化 NovelSdk。

public class DemoApplication extends Application {

    @Override
    public void onCreate() {
        super.onCreate();

        // 初始化 AdSdk,小说中可以展现广告
        AdSdk.getInstance().init(getApplicationContext(),
                new AdConfig.Builder()
                        .appId(APP_ID)
                        .userId(userId) // 未登录可不设置 userId,登录时再设置
                        .multiProcess(false)
                        .debug(BuildConfig.DEBUG)
                        .build(),
                null);

        NovelSdk.getInstance().init(getApplicationContext(),
                new NovelConfig.Builder()
                        .appId(APP_ID)
                        .userId(userId) // 未登录可不设置 userId,登录时再设置,userId 关联用户积分信息
                        .debug(BuildConfig.DEBUG)
                        .build(),
                null);
    }
}

初始化配置参数说明:

private String appId;           // 应用程序 id
private String userId;          // 用户 id
private boolean debug;          // 是否 debug 模式,是则输出日志

登录时请设置 userId:

NovelSdk.getInstance().setUserId(userId);

退出登录请重置 userId:

NovelSdk.getInstance().setUserId(null);

小说接入

NovelSdk 将小说封装成了 NovelFragment,接入方只需将 NovelFragment 放置在对应的 container 容器中即可,具体调用方式可以参考 Demo 中的 NovelActivity。

public class NovelActivity extends AppCompatActivity {

    private NovelFragment mNovelFragment;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_novel);

        mNovelFragment = NovelFragment.newInstance();
        getSupportFragmentManager() // fragment 嵌套替换成 getChildFragmentManager()
                .beginTransaction()
                .replace(R.id.container, mNovelFragment)
                .commitNowAllowingStateLoss();
    }

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (mNovelFragment.onKeyDown(keyCode, event)) {
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }
}

如果启用了看小说发积分的功能,需要设置奖励回调,示例如下:

mNovelFragment.setRewardListener(new NovelFragment.RewardListener() {
    @Override
    public void onReward(String id, float amount) {
        // 发放积分,amount 为积分数
    }
});