# react-native-ttad
**Repository Path**: ChengFengPoLang2008/react-native-ttad
## Basic Information
- **Project Name**: react-native-ttad
- **Description**: android 穿山甲广告
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2024-09-16
- **Last Updated**: 2024-09-16
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# react-native-ttad
react native ttad
# 安装
`yarn add react-native-ttad`
# Android 配置
## 1.`android/app/src/main/androidManifest.xml`
```
```
## 2.新建 `android/app/src/main/res/xml/file_paths.xml`
```xml
```
## 3.依赖冲突
若编译过程,相关依赖版本冲突,请参阅 [build.gradle](android/build.gradle#L32)
# iOS 配置
还未开发 iOS 版本,TODO
# 使用
``` js
import {
// Api
initSdk,
fullVideo, //全屏视频
lastFullVideo,
rewardVideo, //激励视频
lastRewardVideo,
interaction, //插屏
lastInteraction,
loadFeed,
loadDraw,
// 组件
TTadBanner,
TTadFeed,
TTAdInteraction,
TTAdSplash,
TTAdDraw
} from 'react-native-ttad'
// 也可以
import ttad, {TTadBanner} from 'react-native-ttad'
// 调用api
ttad.initSdk();
```
## initSdk
初始化 sdk,在项目入口处调用
``` js
initSdk({
appId:"", // 应用ID, 该项必须(其他可选)
appName:"", //应用名称, 默认自动获取, 可另设
showNotify:Bool, //是否允许sdk显示通知栏, 默认 true
download4g:Bool, //在4g网络下是否可直接下载app, 默认 false
lightBar:Bool, //打开广告网页是否使用浅色标题栏, 默认 false
debug:Bool, //是否输出日志 (是 android 日志,不是js), debug模式默认为true, 反之false
})
```
## API
```js
// onLoad / onCached 回调参数与 load() 返回的是同一个对象
Player = [fullVideo|rewardVideo|interaction](codeId) // 设置广告ID
.horizontal(Bool) //是否获取横屏视频, 默认 false
.deepLink(Bool) //是否允许 deepLink, 默认 false
.permission(Bool) //是否自动索要权限, 默认 false, 不建议自动, 而是在加载广告前更友好的询问
.size(width, height) //设置广告尺寸 可仅设置 width (高度自动), 也可二者都设置
//一般只用于插屏, 全屏/激励适配虽可以设置, 但没什么作用
.isNative(false) //是否为自渲染广告(支持 fullVideo / rewardVideo),
//默认已无法创建该类型广告了, 新创建的只有模板渲染类型
// 激励视频专用, 奖励配置, 具体请参考官方文档, 还可能牵涉服务端通信
.userId(String)
.rewardName(String)
.rewardAmount(String)
.extra(String)
.onLoad(player => {}) // 加载成功回调
.onError(error => {}) // 加载失败回调
.onCached(player => {}) // 缓存成功回调 (插屏无此回调)
.load(); // 开始加载
// 获取最后一次加载的对象
Player = [lastFullVideo|lastRewardVideo|lastInteraction]();
// 显示广告
player
.ritScenes(Int) // 设置场景 0~11
.scenes(String) // ritScenes=11 时为自定义场景, 手动设置字符串
.showDownLoadBar(Bool) //是否显示下载条(广告为下载类时生效)
.onError(callback) //发生错误回调
.onShow(callback) //显示后回调
.onClick(callback) //点击回调
.onSkip(callback) //跳过回调 (全屏视频跳过|插屏关闭)
//因为用户点击广告导致的关闭, 而非主动关闭插屏, 不触发
.onComplete(callback) //视频播放完成后回调
.onReward(callback) //激励视频,需发放奖励回调
.onClose(callback) //广告关闭回调 , 对于插屏, 只有在插屏关闭 + 弹窗关闭才触发
.onIdle(callback) //下载空闲
.onDownloadProgress(callback) //下载进度
.onDownloadPaused(callback) //下载暂停
.onDownloadFailed(callback) //下载失败
.onDownloadFinished(callback) //下载完成
.onInstalled(callback) //安装完成
.show(); //显示
// player 可以使用 load() 的返回, 或 onLoad | onCached 回调参数
// 或者使用 last*** 获取,但以下接口只能在 onLoad | onCached 回调中使用
//广告类型 - 0: 全屏视频, 1:激励视频, 2:插屏
(int) player.type()
// 广告展示类型
// 2: 浏览器内打开 (普通类型)
// 3: 落地页(普通类型)
// 4: 应用下载
// 5: 拨打电话
// -1:未知类型
(int) type = player.interaction()
// 获取广告尺寸, 仅针对插屏
{(int) width, (int) height} = player.size
// 最后,对于使用 last*** 系列获取到的 player,可在确认加载完成后显示
if (player.canplay()) {
player.show()
}
```
备注:关于场景值,可参见 [mttRitScenes](android/src/main/java/com/malacca/ttad/TTadModule.java#L45)
## 组件
组件必须要有 width 尺寸,可以是通过 style 指定的,也可以是 flex 布局从父级继承的;
TTAdSplash / TTAdDraw 除 width 外,还必须要有 height,也可以是直接指定或从父级继承的
```jsx
// 通用属性
// Banner
// feed 信息流
// 插屏
// 启动屏
// draw 信息流
```
组件的 listeners 需要指定为一个函数,可监听广告的各种回调
具体可参见: [Helper.js](src/Helper.js)
```
listener = {bus => {
bus
.onLoad()
.onFail()
.onShow()
....
}}
```
# 预加载
对于 TTadFeed / TTAdDraw 组件,一般用于列表,可进行预加载
```
[loadFeed|loadDraw](codeId, count) //广告ID, 预加载条数
.horizontal(Bool)
.deepLink(Bool)
.permission(Bool)
.size(width, height) // 广告尺寸, 建议设置
.isNative(false) // loadDraw 是否为预加载自渲染 draw video
.onError(err => {})
.onLoad(uuids => {
// 获取 uuids 为数组 ["xxx", "yyyy"]
})
.load()
```
通过预加载得到的 uuid 载入组件
``` js
// 与正常组件相同, 只需将 codeId 替换为 uuid
```
#### 介绍
android 穿山甲广告
#### 软件架构
软件架构说明
#### 安装教程
1. xxxx
2. xxxx
3. xxxx
#### 使用说明
1. xxxx
2. xxxx
3. xxxx
#### 参与贡献
1. Fork 本仓库
2. 新建 Feat_xxx 分支
3. 提交代码
4. 新建 Pull Request
#### 特技
1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md
2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com)
3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目
4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目
5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help)
6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)