qb-pc-sdk 1.0.0 → 1.0.2
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 +144 -0
- package/index.js +28 -0
- package/package.json +23 -2
- package/src/ad-sdk-wrapper.js +26 -3
- package/src/example-simple.html +7 -4
- package/config/ylh-ad-config.js +0 -20
- package//345/220/257/345/212/250/346/234/215/345/212/241/345/231/250.bat +0 -34
package/README.md
ADDED
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
# qb-pc-sdk
|
|
2
|
+
|
|
3
|
+
趣变广告 SDK 封装器 - PC端广告接入工具
|
|
4
|
+
自动处理多级接口映射与原生渲染逻辑,简化广告接入流程。
|
|
5
|
+
从 1.0.1 起,浏览器环境会自动加载底层依赖 `qb-pc-ad-sdk-origin`(已改名的原始 SDK),常规打包场景开箱即用。
|
|
6
|
+
|
|
7
|
+
## 安装
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
npm install qb-pc-sdk
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## 使用方法
|
|
14
|
+
|
|
15
|
+
### ES6 模块方式(开箱即用)
|
|
16
|
+
|
|
17
|
+
#### 方式一:默认导入
|
|
18
|
+
|
|
19
|
+
```javascript
|
|
20
|
+
import AdSDK from 'qb-pc-sdk';
|
|
21
|
+
|
|
22
|
+
// 使用
|
|
23
|
+
const adSDK = new AdSDK({
|
|
24
|
+
appId: 'your-app-id',
|
|
25
|
+
placementId: 'your-placement-id',
|
|
26
|
+
container: '#ad-container',
|
|
27
|
+
onAdLoaded: (ad) => {
|
|
28
|
+
console.log('广告加载成功', ad);
|
|
29
|
+
},
|
|
30
|
+
onAdError: (error, message) => {
|
|
31
|
+
console.error('广告加载失败', error, message);
|
|
32
|
+
},
|
|
33
|
+
onAdExpose: () => {
|
|
34
|
+
console.log('广告已曝光');
|
|
35
|
+
},
|
|
36
|
+
onAdClick: () => {
|
|
37
|
+
console.log('广告被点击');
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
#### 方式二:命名导入
|
|
43
|
+
|
|
44
|
+
```javascript
|
|
45
|
+
import { AdSDKWrapper } from 'qb-pc-sdk';
|
|
46
|
+
|
|
47
|
+
// 使用(注意这里使用的是 AdSDKWrapper)
|
|
48
|
+
const adSDK = new AdSDKWrapper({
|
|
49
|
+
appId: 'your-app-id',
|
|
50
|
+
placementId: 'your-placement-id',
|
|
51
|
+
container: '#ad-container',
|
|
52
|
+
onAdLoaded: (ad) => {
|
|
53
|
+
console.log('广告加载成功', ad);
|
|
54
|
+
},
|
|
55
|
+
onAdError: (error, message) => {
|
|
56
|
+
console.error('广告加载失败', error, message);
|
|
57
|
+
},
|
|
58
|
+
onAdExpose: () => {
|
|
59
|
+
console.log('广告已曝光');
|
|
60
|
+
},
|
|
61
|
+
onAdClick: () => {
|
|
62
|
+
console.log('广告被点击');
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
> **注意**:`AdSDK` / `AdSDKWrapper` 是同一个类。
|
|
68
|
+
> 在浏览器打包场景(webpack/Vite 等)无需再单独 `import 'qb-pc-ad-sdk-origin'`,入口已在有 `window` 时自动 `require` 底层 SDK。若在极端沙箱/SSR 场景下未能挂载 `window.GDTAdSDK`,可手动在入口补充 `import 'qb-pc-ad-sdk-origin';` 作为兜底。
|
|
69
|
+
|
|
70
|
+
### 浏览器直接引入(不经打包)
|
|
71
|
+
|
|
72
|
+
```html
|
|
73
|
+
<!-- 先引入底层 SDK(本地或 CDN 其一) -->
|
|
74
|
+
<script src="/qb-pc-ad-sdk.v1.0.0.js"></script>
|
|
75
|
+
<!-- 或 CDN 示例: -->
|
|
76
|
+
<!-- <script src="https://unpkg.com/qb-pc-ad-sdk-origin/dist/qb-pc-ad-sdk.v1.0.0.js"></script> -->
|
|
77
|
+
|
|
78
|
+
<!-- 再引入封装后的 qb-pc-sdk(UMD,本仓库 src/ad-sdk-wrapper.js) -->
|
|
79
|
+
<script src="./src/ad-sdk-wrapper.js"></script>
|
|
80
|
+
<script>
|
|
81
|
+
// 使用 window.AdSDK
|
|
82
|
+
const ad = new window.AdSDK({
|
|
83
|
+
appId: 'your-app-id',
|
|
84
|
+
placementId: 'your-placement-id',
|
|
85
|
+
container: '#ad-container',
|
|
86
|
+
onAdLoaded: (ad) => {
|
|
87
|
+
console.log('广告加载成功', ad);
|
|
88
|
+
},
|
|
89
|
+
onAdError: (error, message) => {
|
|
90
|
+
console.error('广告加载失败', error, message);
|
|
91
|
+
}
|
|
92
|
+
});
|
|
93
|
+
</script>
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
## API
|
|
97
|
+
|
|
98
|
+
### 构造函数
|
|
99
|
+
|
|
100
|
+
```javascript
|
|
101
|
+
new AdSDK(config)
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
#### 参数
|
|
105
|
+
|
|
106
|
+
- `appId` (string, 必需): 应用 ID
|
|
107
|
+
- `placementId` (string, 必需): 广告位 ID
|
|
108
|
+
- `container` (string | HTMLElement, 必需): 广告容器选择器或 DOM 元素
|
|
109
|
+
- `onAdLoaded` (function, 可选): 广告加载成功回调
|
|
110
|
+
- `onAdError` (function, 可选): 广告加载失败回调
|
|
111
|
+
- `onAdExpose` (function, 可选): 广告曝光回调
|
|
112
|
+
- `onAdClick` (function, 可选): 广告点击回调
|
|
113
|
+
|
|
114
|
+
### 示例
|
|
115
|
+
|
|
116
|
+
```javascript
|
|
117
|
+
const AdSDK = require('qb-pc-sdk');
|
|
118
|
+
|
|
119
|
+
const adSDK = new AdSDK({
|
|
120
|
+
appId: 'your-app-id',
|
|
121
|
+
placementId: 'your-placement-id',
|
|
122
|
+
container: '#ad-container',
|
|
123
|
+
onAdLoaded: (ad) => {
|
|
124
|
+
console.log('广告加载成功');
|
|
125
|
+
},
|
|
126
|
+
onAdError: (error, message) => {
|
|
127
|
+
console.error('广告加载失败:', message);
|
|
128
|
+
},
|
|
129
|
+
onAdExpose: () => {
|
|
130
|
+
console.log('广告已曝光');
|
|
131
|
+
},
|
|
132
|
+
onAdClick: () => {
|
|
133
|
+
console.log('广告被点击');
|
|
134
|
+
}
|
|
135
|
+
});
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
## 依赖
|
|
139
|
+
|
|
140
|
+
- `qb-pc-ad-sdk-origin`: 底层广告 SDK(已自动在浏览器环境加载)
|
|
141
|
+
|
|
142
|
+
## License
|
|
143
|
+
|
|
144
|
+
MIT
|
package/index.js
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* qb-pc-sdk 入口文件
|
|
3
|
+
* 1) 浏览器环境下预加载底层 SDK(qb-pc-ad-sdk-origin),确保 window.GDTAdSDK 可用
|
|
4
|
+
* 2) 导出封装器 AdSDKWrapper
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
const isBrowser = typeof window !== 'undefined';
|
|
8
|
+
|
|
9
|
+
// 浏览器中预加载底层 SDK(仅 side-effect,挂载 window.GDTAdSDK)
|
|
10
|
+
if (isBrowser) {
|
|
11
|
+
try {
|
|
12
|
+
require('qb-pc-ad-sdk-origin');
|
|
13
|
+
} catch (err) {
|
|
14
|
+
// 这里不抛出,保持封装层逻辑可继续运行并给出错误回调
|
|
15
|
+
console.warn('[AdSDK] 底层 SDK 加载失败,请确认 qb-pc-ad-sdk-origin 已正确安装', err);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
// 导入封装器
|
|
20
|
+
const AdSDKWrapper = require('./src/ad-sdk-wrapper.js');
|
|
21
|
+
|
|
22
|
+
// 导出(支持多种导入方式)
|
|
23
|
+
module.exports = AdSDKWrapper;
|
|
24
|
+
module.exports.default = AdSDKWrapper;
|
|
25
|
+
module.exports.AdSDKWrapper = AdSDKWrapper;
|
|
26
|
+
// 可选:透出底层 SDK(若已加载)
|
|
27
|
+
module.exports.GDTAdSDK = isBrowser ? window.GDTAdSDK : undefined;
|
|
28
|
+
|
package/package.json
CHANGED
|
@@ -1,8 +1,29 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "qb-pc-sdk",
|
|
3
|
-
"version": "1.0.
|
|
4
|
-
"description": "PC
|
|
3
|
+
"version": "1.0.2",
|
|
4
|
+
"description": "趣变广告 SDK 封装器 - PC端广告接入工具,自动处理多级接口映射与原生渲染逻辑",
|
|
5
|
+
"main": "index.js",
|
|
6
|
+
"files": [
|
|
7
|
+
"index.js",
|
|
8
|
+
"src/",
|
|
9
|
+
"README.md"
|
|
10
|
+
],
|
|
11
|
+
"keywords": [
|
|
12
|
+
"ad",
|
|
13
|
+
"advertisement",
|
|
14
|
+
"sdk",
|
|
15
|
+
"qubian",
|
|
16
|
+
"pc",
|
|
17
|
+
"广告",
|
|
18
|
+
"广告SDK"
|
|
19
|
+
],
|
|
20
|
+
"author": "",
|
|
21
|
+
"license": "MIT",
|
|
5
22
|
"dependencies": {
|
|
6
23
|
"qb-pc-ad-sdk-origin": "^1.0.0"
|
|
24
|
+
},
|
|
25
|
+
"repository": {
|
|
26
|
+
"type": "git",
|
|
27
|
+
"url": ""
|
|
7
28
|
}
|
|
8
29
|
}
|
package/src/ad-sdk-wrapper.js
CHANGED
|
@@ -2,8 +2,11 @@
|
|
|
2
2
|
* 趣变广告 SDK 封装器
|
|
3
3
|
* 自动处理多级接口映射与原生渲染逻辑
|
|
4
4
|
*/
|
|
5
|
-
(function(
|
|
5
|
+
(function(global) {
|
|
6
6
|
'use strict';
|
|
7
|
+
|
|
8
|
+
// 兼容浏览器和 Node.js 环境
|
|
9
|
+
const window = typeof global !== 'undefined' && global.window ? global.window : (typeof window !== 'undefined' ? window : global);
|
|
7
10
|
|
|
8
11
|
// 内部常量配置
|
|
9
12
|
const API_CONFIG = {
|
|
@@ -212,5 +215,25 @@
|
|
|
212
215
|
}
|
|
213
216
|
}
|
|
214
217
|
|
|
215
|
-
|
|
216
|
-
|
|
218
|
+
// 浏览器环境:挂载到 window
|
|
219
|
+
if (typeof window !== 'undefined' && window.document) {
|
|
220
|
+
window.AdSDK = AdSDKWrapper;
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
// CommonJS 模块导出
|
|
224
|
+
if (typeof module !== 'undefined' && module.exports) {
|
|
225
|
+
module.exports = AdSDKWrapper;
|
|
226
|
+
module.exports.default = AdSDKWrapper;
|
|
227
|
+
module.exports.AdSDKWrapper = AdSDKWrapper;
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
// AMD 模块导出
|
|
231
|
+
if (typeof define === 'function' && define.amd) {
|
|
232
|
+
define(function() {
|
|
233
|
+
return AdSDKWrapper;
|
|
234
|
+
});
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
// 返回类供直接使用
|
|
238
|
+
return AdSDKWrapper;
|
|
239
|
+
})(typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : this);
|
package/src/example-simple.html
CHANGED
|
@@ -17,20 +17,23 @@
|
|
|
17
17
|
<body>
|
|
18
18
|
<div id="ad-slot-1"></div>
|
|
19
19
|
|
|
20
|
-
|
|
20
|
+
<!-- 先加载底层广告 SDK(CDN 方式,避免本地路径 404) -->
|
|
21
|
+
<script src="https://unpkg.com/qb-pc-ad-sdk-origin/dist/qb-pc-ad-sdk.v1.0.0.js"></script>
|
|
22
|
+
<!-- 再加载封装后的 qb-pc-sdk(本地源码版,直接挂载 window.AdSDK) -->
|
|
21
23
|
<script src="ad-sdk-wrapper.js"></script>
|
|
22
|
-
|
|
23
24
|
<script>
|
|
24
25
|
window.addEventListener('DOMContentLoaded', () => {
|
|
25
|
-
new AdSDK({
|
|
26
|
+
new window.AdSDK({
|
|
26
27
|
appId: '1999336062823956569',
|
|
27
28
|
placementId: '1999381081819709520',
|
|
28
29
|
container: '#ad-slot-1',
|
|
29
30
|
onAdLoaded: () => console.log('✅ 广告加载完成'),
|
|
30
|
-
onAdError: (err) => console.log('❌ 广告报错:', err),
|
|
31
|
+
onAdError: (err, msg) => console.log('❌ 广告报错:', err, msg),
|
|
32
|
+
onAdExpose: () => console.log('👀 广告曝光'),
|
|
31
33
|
onAdClick: () => console.log('🖱️ 用户点击了广告')
|
|
32
34
|
});
|
|
33
35
|
});
|
|
34
36
|
</script>
|
|
35
37
|
</body>
|
|
36
38
|
</html>
|
|
39
|
+
|
package/config/ylh-ad-config.js
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 参考文档: https://ylh.qq.com/help_detail.html?cid=5068&pid=12808
|
|
3
|
-
*/
|
|
4
|
-
|
|
5
|
-
const YLH_AD_CONFIG = {
|
|
6
|
-
// 应用ID
|
|
7
|
-
appId: '1212355090',
|
|
8
|
-
|
|
9
|
-
// 广告位ID
|
|
10
|
-
// 注意:在API调用时使用 placementId 参数名
|
|
11
|
-
posId: '4204613922235231'
|
|
12
|
-
};
|
|
13
|
-
|
|
14
|
-
// 导出配置
|
|
15
|
-
if (typeof module !== 'undefined' && module.exports) {
|
|
16
|
-
module.exports = YLH_AD_CONFIG;
|
|
17
|
-
} else if (typeof window !== 'undefined') {
|
|
18
|
-
window.YLH_AD_CONFIG = YLH_AD_CONFIG;
|
|
19
|
-
}
|
|
20
|
-
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
@echo off
|
|
2
|
-
chcp 65001 >nul
|
|
3
|
-
echo ========================================
|
|
4
|
-
echo 广告接入 - 启动本地服务器
|
|
5
|
-
echo ========================================
|
|
6
|
-
echo.
|
|
7
|
-
|
|
8
|
-
REM 检查是否安装了Node.js
|
|
9
|
-
where node >nul 2>&1
|
|
10
|
-
if %ERRORLEVEL% NEQ 0 (
|
|
11
|
-
echo [错误] 未检测到Node.js
|
|
12
|
-
echo 请先安装Node.js: https://nodejs.org/
|
|
13
|
-
echo.
|
|
14
|
-
pause
|
|
15
|
-
exit /b 1
|
|
16
|
-
)
|
|
17
|
-
|
|
18
|
-
echo [信息] 检测到Node.js
|
|
19
|
-
node --version
|
|
20
|
-
echo.
|
|
21
|
-
|
|
22
|
-
echo [信息] 正在启动HTTP服务器(已启用CORS)...
|
|
23
|
-
echo [信息] 服务器地址: http://localhost:8080
|
|
24
|
-
echo [信息] 访问地址: http://localhost:8080/src/example-simple.html
|
|
25
|
-
echo.
|
|
26
|
-
echo [提示] 按 Ctrl+C 停止服务器
|
|
27
|
-
echo ========================================
|
|
28
|
-
echo.
|
|
29
|
-
|
|
30
|
-
REM 启动服务器(启用CORS)
|
|
31
|
-
npx http-server -p 8080 --cors
|
|
32
|
-
|
|
33
|
-
pause
|
|
34
|
-
|