Android
ReleaseNote
版本 | 时间 | 修改内容 |
---|
3.4.4.4 | 2022 年 3 月 3 日 | 整理接口 |
SDK 概要
Data SDK 便于接入方快速对接信息流的 api,节省对接工作量
工程配置
接入之前请首先再一览平台为您的应用创建好accessKey于accessToken
添加依赖
开发者可以使用Gradle方式导入一览 SDK
步骤一:添加仓库
在project级别的build.gradle文件中添加Maven的引用,如下:
allprojects {
repositories {
google()
jcenter()
//添加一览maven地址
maven {
url 'http://nexus.1lan.tv/repository/maven-releases/'
}
}
}
1
2
3
4
5
6
7
8
9
10
步骤二:添加依赖
在主module的build.gradle文件添加 SDK 依赖
dependencies {
//添加SDK主要依赖
implementation "com.yilan.sdk:data:3.4.4.4"
//添加SDK其他所需依赖
implementation 'com.squareup.okhttp3:okhttp:3.11.0'
implementation 'com.google.code.gson:gson:2.8.5'
implementation 'com.android.support:recyclerview-v7:28.0.0'
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support:support-v4:28.0.0'
}
1
2
3
4
5
6
7
8
9
10
代码混淆
默认情况下不需要您关注 SDK 混淆的配置,相关的proguard配置位于 SDK AAR文件中**"/proguard.txt",您可以通过 check 混淆后的您的mapping文件来判断这些配置是否生效。例如,您可以 check 包名com.yilan.sdk**下类的 public 和 protected 成员是否被 keep 来验证 SDK AAR 文件中的 proguard 配置被正确应用。
SDK 初始化配置
初始化配置
开发者需要在Application的onCreate()
方法中调用以下代码来初始化 sdk。
YLInit.getInstance()
.setApplication(this)
.setAccessKey("")//设置accesskey
.setAccessToken("")//设置token
.build();
1
2
3
4
5
方法及参数说明如下:
方法名 | 方法说明 | 是否为必须参数 |
---|
setApplication(Application context) | 设置 Context | 是 |
setAccessToken(String token) | 设置 token,由一览提供 | 是,注册后台获取 |
setAccessKey(String key) | 设置 key,由一览提供 | 是,注册后台获取 |
隐私合规检测说明
2021 年 5 月 1 日起,由国家互联网信息办公室、工业和信息化部、公安部、国家市场监督管理总局联合制定了《常见类型移动互联网应用程序必要个人信息范围规定》(简称“App 必要个人信息范围规定”)已正式施行。“App 必要个人信息范围规定”不仅明确常见 39 种类型的 App 必要个人信息范围,而且明确移动互联网应用程序(App)运营者不得因用户不同意收集非必要个人信息,而拒绝用户使用 App 基本功能服务。为了避免 App 被下架,请您务必做好两件事:首先将 SDK 升级至满足监管要求的最新版本,再按下文合规解法进行配置。
我们的 SDK 未经用户同意前默认不会获取设备的敏感信息,为保证您的在集成 SDK 之后,能够满足工信部相关合规要求,您应确保在 App 安装后首次冷启动时,在用户阅读您的**《隐私政策》并取得用户授权之后,调用提交隐私协议函数FSDevice.setSensitiveEnable(true)
提交隐私协议。反之,如果用户不同意《隐私政策》**授权,则不能调用FSDevice.setSensitiveEnable(true)
提交隐私协议。
//在用户阅读您的**《隐私政策》**并取得用户授权之后调用
FSDevice.setSensitiveEnable(true);
1
2
信息流 API 说明
请求接口在YLDataRequest类中,这是一个单例类,下面介绍各个 api 的用法及字段含义
1.获取频道列表
/**
* 请求频道列表
*
* @param callback
* @param videoType; 视频类型 1 横版 2 竖版
*/
IYLDataRequest.REQUEST.getChannels(int videoType,new YLCallBack<ChannelList>() {
@Override
public void onSuccess(ChannelList data) {
List<Channel> channels = data.getData();
}
@Override
public void onError(int httpCode, String ylCode, String msg) {
}
});
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
字段名 | 字段类型 | 描述 |
---|
data | List< Channel > | 频道列表 |
字段名 | 字段类型 | 描述 |
---|
id | String | 频道 id |
name | String | 频道名称 |
2.获取视频信息流(横版)
/**
* 请求频道视频列表
*
* @param channelId 频道id
* @param load_type 加载方式:0:上拉加载更多 1:非首次下拉刷新时 2:首次刷新某个频道
* @param callback 回调
*/
IYLDataRequest.REQUEST.feedList(channelId, loadType, new YLCallBack<MediaList>() {
@Override
public void onSuccess(MediaList data) {
List<MediaInfo> mediaInfos = data.getData();
}
@Override
public void onError(int httpCode, String ylCode, String msg) {
}
});
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
参数名称 | 类型 | 默认值 | 是否必传 | 解释 |
---|
channel_id | string | 无 | 是 | 频道 ID |
load_type | int | 无 | 是 | 0-上拉,1-下拉,2-首次刷新 |
字段名 | 字段类型 | 描述 |
---|
data | List < MediaInfo > | 频道列表 |
字段名 | 字段类型 | 描述 |
---|
video_id | string | 视频编号 |
title | string | 视频标题 |
image | string | 视频封面图 |
tags | string | 视频标签,多标签用英文逗号分隔 |
duration | int | 视频时长(单位秒) |
h5_url | string | 视频 h5 播放地址 |
share_url | string | 视频 分享 地址 |
provider | object | 视频来源 |
provider.id | string | 视频来源 id |
provider.name | string | 视频来源昵称 |
provider.avatar | string | 视频来源头像 |
provider.fans | Int | 作者粉丝数量 |
provider.aword | string | 作者签名 |
provider.videos | int | 作者视频数量 |
play_num | int | 播放数 |
like_num | int | 点赞数 |
video_h | int | 视频高 |
video_w | int | 视频宽 |
publish_date | string | 视频发布时间 |
4.获取视频详情
IYLDataRequest.REQUEST.videoDetail(videoId, source, new YLCallBack<MediaDetail>() {
@Override
public void onSuccess(MediaDetail data) {
}
@Override
public void onError(int httpCode, String ylCode, String msg) {
}
});
1
2
3
4
5
6
7
8
9
10
11
参数名称 | 类型 | 默认值 | 是否必传 | 解释 |
---|
videoId | string | 无 | 是 | 视频编号,信息流接口返回 |
source | int | 无 | 否 | 预留字段,传 0 即可 |
字段名 | 字段类型 | 描述 |
---|
video_id | string | 视频编号 |
title | string | 视频标题 |
image | string | 视频封面图 |
duration | int | 视频时长(单位秒) |
h5_url | string | 视频 h5 播放地址 |
share_url | string | 视频 分享 地址 |
5.获取相关视频
IYLDataRequest.REQUEST.getRelateVideos(videoId, new YLCallBack<MediaList>() {
@Override
public void onSuccess(MediaList data) {
}
@Override
public void onError(int httpCode, String ylCode, String msg) {
}
});
1
2
3
4
5
6
7
8
9
10
11
参数名称 | 类型 | 默认值 | 是否必传 | 解释 |
---|
videoId | string | 无 | 是 | 视频编号,信息流接口返回 |
字段名 | 字段类型 | 描述 |
---|
data | List < MediaInfo > | 频道列表 |
字段名 | 字段类型 | 描述 |
---|
video_id | string | 视频编号 |
title | string | 视频标题 |
image | string | 视频封面图 |
tags | string | 视频标签,多标签用英文逗号分隔 |
duration | int | 视频时长(单位秒) |
h5_url | string | 视频 h5 播放地址 |
share_url | string | 视频 分享 地址 |
provider | object | 视频来源 |
provider.id | string | 视频来源 id |
provider.name | string | 视频来源昵称 |
provider.avatar | string | 视频来源头像 |
publish_date | string | 视频发布时间 |
video_w | int | 视频宽 |
video_h | int | 视频高 |
play_num | int | 播放数 |
like_num | int | 点赞数 |
6.获取视频作者信息
IYLDataRequest.REQUEST.cpInfo(cpId, source,new YLCallBack<CpInfo>() {
@Override
public void onSuccess(CpInfo data) {
}
@Override
public void onError(int httpCode, String ylCode, String msg) {
}
});
1
2
3
4
5
6
7
8
9
10
11
参数名称 | 类型 | 默认值 | 是否必传 | 解释 |
---|
cpId | string | 无 | 是 | 视频作者 id,信息流接口返回,provider.id |
Source | Int | 无 | 否 | 预留字段,传 0 即可 |
字段名 | 字段类型 | 描述 |
---|
id | string | 视频来源 id |
name | string | 视频来源昵称 |
avatar | string | 视频来源头像 |
aword | string | 作者签名 |
videos | int | 作品数 |
fans | string | 粉丝数 |
isFollowd | string | 是否关注 |
7.获取作者视频列表
IYLDataRequest.REQUEST.cpVideos(String cpID, int videoType, int source, int pg, int sz, new YLCallBack<MediaList>() {
@Override
public void onSuccess(MediaList data) {
}
@Override
public void onError(int httpCode, String ylCode, String msg) {
}
});
1
2
3
4
5
6
7
8
9
10
11
参数名称 | 类型 | 默认值 | 是否必传 | 解释 |
---|
cpID | string | 无 | 是 | 视频编号,信息流接口返回 |
videoType | int | 无 | 是 | 视频类型,1-横屏,2-竖屏 |
source | int | 无 | 否 | 预留字段,传 0 即可 |
pg | int | 1 | 否 | 页数 |
sz | int | 20 | 否 | 页大小 |
字段名 | 字段类型 | 描述 |
---|
data | List < MediaInfo > | 频道列表 |
字段名 | 字段类型 | 描述 |
---|
video_id | string | 视频编号 |
title | string | 视频标题 |
image | string | 视频封面图 |
tags | string | 视频标签,多标签用英文逗号分隔 |
duration | int | 视频时长(单位秒) |
h5_url | string | 视频 h5 播放地址 |
share_url | string | 视频 分享 地址 |
provider | object | 视频来源 |
provider.id | string | 视频来源 id |
provider.name | string | 视频来源昵称 |
provider.avatar | string | 视频来源头像 |
publish_date | string | 视频发布时间 |
video_w | int | 视频宽 |
video_h | int | 视频高 |
play_num | int | 播放数 |
like_num | int | 点赞数 |
8.获取视频播放地址
IYLDataRequest.REQUEST.videoPlay(videoId, source, new YLCallBack<PlayUrlList>() {
@Override
public void onSuccess(PlayUrlList data) {
}
@Override
public void onError(int httpCode, String ylCode, String msg) {
}
});
1
2
3
4
5
6
7
8
9
10
11
参数名称 | 类型 | 默认值 | 是否必传 | 解释 |
---|
videoId | string | 无 | 是 | 视频编号,信息流接口返回 |
source | int | 无 | 否 | 预留字段,传 0 即可 |
字段名 | 字段类型 | 描述 |
---|
bitrates | List < Play > | 播放地址列表 |
字段名 | 字段类型 | 描述 |
---|
name | string | 视频清晰度描述(高清,标清,超清) |
uri | string | 视频播放地址 |
size | string | 视频大小 |
code | string | 视频清晰度码(ld,sd,hd) |
上报 API 说明
1.视频曝光上报
上报时机
视频在屏幕中出现,即被算展现一次曝光。
代码示例
ReporterEngine.instance().reportVideoShow(mediaInfo,position);
1
请求参数:
参数名称 | 类型 | 默认值 | 是否必传 | 解释 |
---|
mediaInfo | MediaInfo | 无 | 是 | 视频信息流返回的单个 item |
position | int | - | 是 | 当前视频在页面中的位置 |