qb-pc-sdk 1.0.2 → 1.0.3
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 +29 -1
- package/index.js +10 -2
- package/package.json +1 -1
- package/src/ad-sdk-wrapper.js +25 -2
- package/src/example-simple.html +15 -0
package/README.md
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
# qb-pc-sdk
|
|
2
2
|
|
|
3
3
|
趣变广告 SDK 封装器 - PC端广告接入工具
|
|
4
|
+
目前PC SDK仅支持Windows系统接入,接入Mac会报错,接入时请注意。
|
|
4
5
|
自动处理多级接口映射与原生渲染逻辑,简化广告接入流程。
|
|
5
|
-
从 1.0.1 起,浏览器环境会自动加载底层依赖 `qb-pc-ad-sdk-origin
|
|
6
|
+
从 1.0.1 起,浏览器环境会自动加载底层依赖 `qb-pc-ad-sdk-origin`,常规打包场景开箱即用。
|
|
6
7
|
|
|
7
8
|
## 安装
|
|
8
9
|
|
|
@@ -67,6 +68,33 @@ const adSDK = new AdSDKWrapper({
|
|
|
67
68
|
> **注意**:`AdSDK` / `AdSDKWrapper` 是同一个类。
|
|
68
69
|
> 在浏览器打包场景(webpack/Vite 等)无需再单独 `import 'qb-pc-ad-sdk-origin'`,入口已在有 `window` 时自动 `require` 底层 SDK。若在极端沙箱/SSR 场景下未能挂载 `window.GDTAdSDK`,可手动在入口补充 `import 'qb-pc-ad-sdk-origin';` 作为兜底。
|
|
69
70
|
|
|
71
|
+
#### Vue2 / Vue3 / React 等模块化环境(推荐方式)
|
|
72
|
+
|
|
73
|
+
在某些模块化打包环境中(如 Vue2),如果自动加载失败,需要手动引入底层 SDK 并挂载到 `window`:
|
|
74
|
+
|
|
75
|
+
```javascript
|
|
76
|
+
// main.js 或入口文件
|
|
77
|
+
import 'qb-pc-ad-sdk-origin/dist/qb-pc-ad-sdk.v1.0.0.js';
|
|
78
|
+
import AdSDK from 'qb-pc-sdk';
|
|
79
|
+
import OriginSDK from 'qb-pc-ad-sdk-origin';
|
|
80
|
+
|
|
81
|
+
// 确保 GDTAdSDK 挂载到 window(模块化环境可能需要手动挂载)
|
|
82
|
+
if (typeof window !== 'undefined' && !window.GDTAdSDK) {
|
|
83
|
+
window.GDTAdSDK = OriginSDK.default || OriginSDK.GDTAdSDK || OriginSDK;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
// 之后在组件中使用
|
|
87
|
+
new AdSDK({
|
|
88
|
+
appId: 'your-app-id',
|
|
89
|
+
placementId: 'your-placement-id',
|
|
90
|
+
container: '#ad-container',
|
|
91
|
+
onAdLoaded: (ad) => console.log('广告加载成功', ad),
|
|
92
|
+
onAdError: (error, message) => console.error('广告加载失败', error, message)
|
|
93
|
+
});
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
> **提示**:如果遇到 "SDK Load Timeout" 错误,通常是 `window.GDTAdSDK` 未正确挂载,请按照上述方式手动挂载。
|
|
97
|
+
|
|
70
98
|
### 浏览器直接引入(不经打包)
|
|
71
99
|
|
|
72
100
|
```html
|
package/index.js
CHANGED
|
@@ -9,10 +9,18 @@ const isBrowser = typeof window !== 'undefined';
|
|
|
9
9
|
// 浏览器中预加载底层 SDK(仅 side-effect,挂载 window.GDTAdSDK)
|
|
10
10
|
if (isBrowser) {
|
|
11
11
|
try {
|
|
12
|
-
require('qb-pc-ad-sdk-origin');
|
|
12
|
+
const OriginSDK = require('qb-pc-ad-sdk-origin');
|
|
13
|
+
// 如果模块导出了对象但未挂载到 window,手动挂载
|
|
14
|
+
if (OriginSDK && !window.GDTAdSDK) {
|
|
15
|
+
window.GDTAdSDK = OriginSDK.default || OriginSDK.GDTAdSDK || OriginSDK;
|
|
16
|
+
}
|
|
13
17
|
} catch (err) {
|
|
14
18
|
// 这里不抛出,保持封装层逻辑可继续运行并给出错误回调
|
|
15
|
-
|
|
19
|
+
// 在 Vue/React 等环境中,用户可能需要手动引入并挂载
|
|
20
|
+
if (process.env.NODE_ENV !== 'production') {
|
|
21
|
+
console.warn('[AdSDK] 底层 SDK 自动加载失败,若在模块化环境中,请手动引入:',
|
|
22
|
+
'import \'qb-pc-ad-sdk-origin/dist/qb-pc-ad-sdk.v1.0.0.js\';', err);
|
|
23
|
+
}
|
|
16
24
|
}
|
|
17
25
|
}
|
|
18
26
|
|
package/package.json
CHANGED
package/src/ad-sdk-wrapper.js
CHANGED
|
@@ -114,12 +114,35 @@
|
|
|
114
114
|
_checkAndRun() {
|
|
115
115
|
let attempts = 0;
|
|
116
116
|
const check = () => {
|
|
117
|
+
// 优先检查 window.GDTAdSDK
|
|
117
118
|
if (window.GDTAdSDK) {
|
|
118
119
|
this._loadAd();
|
|
119
|
-
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
// 尝试从可能的模块导出中获取(适用于 Vue/React 等模块化环境)
|
|
124
|
+
// 检查是否有通过 require/import 导入的模块
|
|
125
|
+
if (typeof require !== 'undefined') {
|
|
126
|
+
try {
|
|
127
|
+
const OriginSDK = require('qb-pc-ad-sdk-origin');
|
|
128
|
+
// 如果模块导出了 GDTAdSDK 或 default,尝试挂载到 window
|
|
129
|
+
if (OriginSDK && !window.GDTAdSDK) {
|
|
130
|
+
window.GDTAdSDK = OriginSDK.default || OriginSDK.GDTAdSDK || OriginSDK;
|
|
131
|
+
if (window.GDTAdSDK) {
|
|
132
|
+
this._loadAd();
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
} catch (e) {
|
|
137
|
+
// require 失败,继续轮询
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
// 轮询等待
|
|
142
|
+
if (attempts++ < 50) {
|
|
120
143
|
setTimeout(check, 100);
|
|
121
144
|
} else {
|
|
122
|
-
this._handleError('SDK Load Timeout', '底层SDK
|
|
145
|
+
this._handleError('SDK Load Timeout', '底层SDK加载超时,请确保已正确引入 qb-pc-ad-sdk-origin');
|
|
123
146
|
}
|
|
124
147
|
};
|
|
125
148
|
check();
|
package/src/example-simple.html
CHANGED
|
@@ -23,6 +23,21 @@
|
|
|
23
23
|
<script src="ad-sdk-wrapper.js"></script>
|
|
24
24
|
<script>
|
|
25
25
|
window.addEventListener('DOMContentLoaded', () => {
|
|
26
|
+
// 检查底层 SDK 是否加载
|
|
27
|
+
if (!window.GDTAdSDK) {
|
|
28
|
+
console.error('❌ 底层 SDK (GDTAdSDK) 未加载,请检查脚本路径');
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
console.log('✅ 底层 SDK 加载成功');
|
|
32
|
+
|
|
33
|
+
// 检查封装 SDK 是否加载
|
|
34
|
+
if (!window.AdSDK) {
|
|
35
|
+
console.error('❌ 封装 SDK (AdSDK) 未加载,请检查 ad-sdk-wrapper.js 路径');
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
console.log('✅ 封装 SDK 加载成功');
|
|
39
|
+
|
|
40
|
+
// 初始化广告
|
|
26
41
|
new window.AdSDK({
|
|
27
42
|
appId: '1999336062823956569',
|
|
28
43
|
placementId: '1999381081819709520',
|