@singcl/ad-execute-manager 1.0.0 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -268
- package/package.json +1 -4
package/README.md
CHANGED
|
@@ -1,268 +1 @@
|
|
|
1
|
-
#
|
|
2
|
-
|
|
3
|
-
广告执行管理器是一个用于管理和执行广告任务的JavaScript库,特别适用于激励视频广告的场景化管理和执行。
|
|
4
|
-
|
|
5
|
-
## 功能特性
|
|
6
|
-
|
|
7
|
-
- **任务管理**:支持广告任务的添加、执行和取消
|
|
8
|
-
- **场景化**:支持不同场景下的广告展示和统计
|
|
9
|
-
- **激励视频**:专注于激励视频广告的管理和执行
|
|
10
|
-
- **回调机制**:提供丰富的回调函数来处理广告的各种状态
|
|
11
|
-
- **统计分析**:集成广告展示和点击的统计分析功能
|
|
12
|
-
- **单例模式**:使用单例模式管理广告实例,确保资源的有效利用
|
|
13
|
-
|
|
14
|
-
## 目录结构
|
|
15
|
-
|
|
16
|
-
```
|
|
17
|
-
src/
|
|
18
|
-
├── ad/ # 广告相关核心代码
|
|
19
|
-
│ ├── AdExecuteManager.js # 广告执行管理器
|
|
20
|
-
│ ├── RewardAdFather.js # 激励视频广告基类
|
|
21
|
-
│ ├── RewardAdNovel.js # 小说场景激励视频广告
|
|
22
|
-
│ ├── RewardAdLaunch.js # 启动场景激励视频广告
|
|
23
|
-
│ ├── RewardAdLaunchAlone.js # 单独启动场景激励视频广告
|
|
24
|
-
│ ├── RewardAdReadingLoad.js # 阅读加载场景激励视频广告
|
|
25
|
-
│ ├── RewardAdReadingUnload.js # 阅读卸载场景激励视频广告
|
|
26
|
-
│ ├── RewardAdSceneTriggerManager.js # 广告场景触发管理器
|
|
27
|
-
│ ├── RewardAdGlobalRecorder.js # 广告全局记录器
|
|
28
|
-
│ ├── LovelUnlockManager.js # 解锁管理器
|
|
29
|
-
│ ├── AdUnlock/ # 广告解锁相关代码
|
|
30
|
-
│ ├── ExbAnalyticsJS.js # 统计分析工具
|
|
31
|
-
│ ├── Storage.js # 存储工具
|
|
32
|
-
│ ├── CountRecorder.js # 计数记录器
|
|
33
|
-
│ ├── Logger.js # 日志工具
|
|
34
|
-
│ ├── SerializableError.js # 可序列化错误
|
|
35
|
-
│ ├── compose.js # 函数组合工具
|
|
36
|
-
│ └── const.js # 常量定义
|
|
37
|
-
├── typings/ # 类型定义
|
|
38
|
-
│ ├── ad.js # 广告相关类型定义
|
|
39
|
-
│ └── tracker.js # 统计跟踪相关类型定义
|
|
40
|
-
├── utils/ # 工具函数
|
|
41
|
-
│ └── functional.js # 函数式工具函数
|
|
42
|
-
└── index.js # 入口文件
|
|
43
|
-
```
|
|
44
|
-
|
|
45
|
-
## 安装
|
|
46
|
-
|
|
47
|
-
```bash
|
|
48
|
-
npm install @singcl/ad-execute-manager
|
|
49
|
-
```
|
|
50
|
-
|
|
51
|
-
## 快速开始
|
|
52
|
-
|
|
53
|
-
### 导入
|
|
54
|
-
|
|
55
|
-
```javascript
|
|
56
|
-
import AdExecuteManager from '@singcl/ad-execute-manager';
|
|
57
|
-
import RewardAdNovel from '@singcl/ad-execute-manager/lib/ad/RewardAdNovel';
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
### 创建广告实例
|
|
61
|
-
|
|
62
|
-
```javascript
|
|
63
|
-
// 创建激励视频广告实例
|
|
64
|
-
const rewardAdNovel = new RewardAdNovel({
|
|
65
|
-
sign: 'novel_ad',
|
|
66
|
-
adConfig: {
|
|
67
|
-
adUnitId: 'your_ad_unit_id',
|
|
68
|
-
multiton: true,
|
|
69
|
-
multitonRewardTimes: 4,
|
|
70
|
-
multitonRewardMsg: ['全部小说免费看'],
|
|
71
|
-
progressTip: true
|
|
72
|
-
},
|
|
73
|
-
collection: {
|
|
74
|
-
onShow: (args) => {
|
|
75
|
-
console.log('广告展示', args);
|
|
76
|
-
},
|
|
77
|
-
onFinish: (args) => {
|
|
78
|
-
console.log('广告看完', args);
|
|
79
|
-
},
|
|
80
|
-
onHalfway: (args) => {
|
|
81
|
-
console.log('广告中途退出', args);
|
|
82
|
-
},
|
|
83
|
-
onError: (error) => {
|
|
84
|
-
console.error('广告错误', error);
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
});
|
|
88
|
-
```
|
|
89
|
-
|
|
90
|
-
### 执行广告任务
|
|
91
|
-
|
|
92
|
-
```javascript
|
|
93
|
-
// 获取广告执行管理器实例
|
|
94
|
-
const adManager = AdExecuteManager.getInstance({ log: true });
|
|
95
|
-
|
|
96
|
-
// 添加广告任务
|
|
97
|
-
adManager.addTask(rewardAdNovel, {
|
|
98
|
-
options: {
|
|
99
|
-
scene: 1, // 小说插件强制广告场景
|
|
100
|
-
log: true
|
|
101
|
-
},
|
|
102
|
-
collection: {
|
|
103
|
-
always: (args) => {
|
|
104
|
-
console.log('广告总是回调', args);
|
|
105
|
-
},
|
|
106
|
-
finished: (args) => {
|
|
107
|
-
console.log('广告完成回调', args);
|
|
108
|
-
},
|
|
109
|
-
halfway: (args) => {
|
|
110
|
-
console.log('广告中途回调', args);
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
}).then((result) => {
|
|
114
|
-
console.log('广告任务完成', result);
|
|
115
|
-
}).catch((error) => {
|
|
116
|
-
console.error('广告任务失败', error);
|
|
117
|
-
});
|
|
118
|
-
```
|
|
119
|
-
|
|
120
|
-
## API 文档
|
|
121
|
-
|
|
122
|
-
### AdExecuteManager
|
|
123
|
-
|
|
124
|
-
广告执行管理器,用于管理广告任务的执行流程。
|
|
125
|
-
|
|
126
|
-
#### 静态方法
|
|
127
|
-
|
|
128
|
-
- `getInstance(args)`: 获取单例实例
|
|
129
|
-
- `args`: 配置参数
|
|
130
|
-
- `log`: 是否打印日志
|
|
131
|
-
|
|
132
|
-
#### 实例方法
|
|
133
|
-
|
|
134
|
-
- `addTask(adInstance, ctx)`: 添加广告任务
|
|
135
|
-
- `adInstance`: 广告实例(必须是RewardAdFather的子类)
|
|
136
|
-
- `ctx`: 广告执行上下文
|
|
137
|
-
- `options`: 广告执行选项
|
|
138
|
-
- `collection`: 回调集合
|
|
139
|
-
- 返回: Promise对象
|
|
140
|
-
|
|
141
|
-
- `clearTasks()`: 清空所有任务(包括正在执行的任务)
|
|
142
|
-
|
|
143
|
-
- `getTaskCount()`: 获取当前未完成的任务总数
|
|
144
|
-
|
|
145
|
-
- `isRunning()`: 检查是否有任务正在运行
|
|
146
|
-
|
|
147
|
-
- `getCurrentTaskId()`: 获取当前执行的任务ID
|
|
148
|
-
|
|
149
|
-
### RewardAdFather
|
|
150
|
-
|
|
151
|
-
激励视频广告基类,所有具体的激励视频广告类都继承自此类。
|
|
152
|
-
|
|
153
|
-
#### 构造方法
|
|
154
|
-
|
|
155
|
-
- `constructor(args)`: 创建广告实例
|
|
156
|
-
- `args`: 配置参数
|
|
157
|
-
- `sign`: 初始化标识
|
|
158
|
-
- `adConfig`: 广告配置
|
|
159
|
-
- `preserveOnEnd`: 是否保留广告实例
|
|
160
|
-
|
|
161
|
-
#### 实例方法
|
|
162
|
-
|
|
163
|
-
- `initialize(params, callback)`: 初始化广告
|
|
164
|
-
- `params`: 初始化参数
|
|
165
|
-
- `callback`: 初始化成功回调
|
|
166
|
-
|
|
167
|
-
- `ad(ctx, next)`: 执行广告展示(抽象方法,子类必须实现)
|
|
168
|
-
- `ctx`: 广告执行上下文
|
|
169
|
-
- `next`: 执行下一个任务的回调函数
|
|
170
|
-
|
|
171
|
-
- `addExecuteManager(ctx)`: 确保广告按顺序执行
|
|
172
|
-
|
|
173
|
-
- `destroy()`: 销毁广告实例
|
|
174
|
-
|
|
175
|
-
- `show()`: 显示广告
|
|
176
|
-
|
|
177
|
-
- `load()`: 加载广告
|
|
178
|
-
|
|
179
|
-
- `onClose(callback)`: 监听广告关闭事件
|
|
180
|
-
|
|
181
|
-
- `onError(callback)`: 监听广告错误事件
|
|
182
|
-
|
|
183
|
-
- `onLoad(callback)`: 监听广告加载事件
|
|
184
|
-
|
|
185
|
-
### RewardAdNovel
|
|
186
|
-
|
|
187
|
-
小说场景激励视频广告实现类。
|
|
188
|
-
|
|
189
|
-
#### 静态方法
|
|
190
|
-
|
|
191
|
-
- `build(args)`: 创建并获取单例实例
|
|
192
|
-
|
|
193
|
-
- `getInstance()`: 获取单例实例
|
|
194
|
-
|
|
195
|
-
- `new(args)`: 创建新实例
|
|
196
|
-
|
|
197
|
-
## 广告场景类型
|
|
198
|
-
|
|
199
|
-
| 场景值 | 场景名称 | 说明 |
|
|
200
|
-
| --- | --- | --- |
|
|
201
|
-
| 0 | launch_ad | 启动广告 |
|
|
202
|
-
| 1 | novel_plugin_strong_ad | 小说插件强制广告 |
|
|
203
|
-
| 2 | novel_plugin_unlock_btn | 小说插件解锁按钮 |
|
|
204
|
-
| 3 | novel_plugin_free_benefit_btn | 小说插件免费福利按钮 |
|
|
205
|
-
| 4 | home_free_welfare_btn | 首页免费福利按钮 |
|
|
206
|
-
| 5 | home_free_popup | 首页免费弹窗 |
|
|
207
|
-
| 6 | other | 其他场景 |
|
|
208
|
-
| 7 | home_back_show | 首页返回展示 |
|
|
209
|
-
| 8 | novel_plugin_free_time_btn | 小说插件免费时间按钮 |
|
|
210
|
-
| 9 | launch_ad_alone | 单独启动广告 |
|
|
211
|
-
|
|
212
|
-
## 回调集合
|
|
213
|
-
|
|
214
|
-
### CallbackCollection
|
|
215
|
-
|
|
216
|
-
| 回调函数 | 说明 |
|
|
217
|
-
| --- | --- |
|
|
218
|
-
| always | 每次广告结束时都会调用 |
|
|
219
|
-
| finished | 完整看完广告时调用 |
|
|
220
|
-
| halfway | 半途退出广告时调用 |
|
|
221
|
-
| complete | 完成广告时调用(不管是否看完) |
|
|
222
|
-
| onCancel | 取消广告时调用 |
|
|
223
|
-
| before | 展示广告前调用 |
|
|
224
|
-
| success | 展示广告成功时调用 |
|
|
225
|
-
| prelude | 计时回调 |
|
|
226
|
-
|
|
227
|
-
## 开发
|
|
228
|
-
|
|
229
|
-
### 构建
|
|
230
|
-
|
|
231
|
-
```bash
|
|
232
|
-
npm run build
|
|
233
|
-
```
|
|
234
|
-
|
|
235
|
-
### 开发模式
|
|
236
|
-
|
|
237
|
-
```bash
|
|
238
|
-
npm run dev
|
|
239
|
-
```
|
|
240
|
-
|
|
241
|
-
### 代码格式化
|
|
242
|
-
|
|
243
|
-
```bash
|
|
244
|
-
npm run format
|
|
245
|
-
```
|
|
246
|
-
|
|
247
|
-
### 代码检查
|
|
248
|
-
|
|
249
|
-
```bash
|
|
250
|
-
npm run lint
|
|
251
|
-
```
|
|
252
|
-
|
|
253
|
-
### 测试
|
|
254
|
-
|
|
255
|
-
```bash
|
|
256
|
-
npm run test
|
|
257
|
-
```
|
|
258
|
-
|
|
259
|
-
## 依赖
|
|
260
|
-
|
|
261
|
-
- @rslib/core: 用于项目构建
|
|
262
|
-
- @rstest/core: 用于测试
|
|
263
|
-
- eslint: 用于代码检查
|
|
264
|
-
- prettier: 用于代码格式化
|
|
265
|
-
|
|
266
|
-
## 许可证
|
|
267
|
-
|
|
268
|
-
MIT
|
|
1
|
+
# AD Execute Manager
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@singcl/ad-execute-manager",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": {
|
|
@@ -29,8 +29,5 @@
|
|
|
29
29
|
"eslint-plugin-import": "^2.32.0",
|
|
30
30
|
"globals": "^16.5.0",
|
|
31
31
|
"prettier": "^3.7.3"
|
|
32
|
-
},
|
|
33
|
-
"publishConfig": {
|
|
34
|
-
"access": "public"
|
|
35
32
|
}
|
|
36
33
|
}
|