qb-pc-sdk 1.0.1 → 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 CHANGED
@@ -1,8 +1,9 @@
1
1
  # qb-pc-sdk
2
2
 
3
- 趣变广告 SDK 封装器 - PC端广告接入工具
4
-
5
- 自动处理多级接口映射与原生渲染逻辑,简化广告接入流程。
3
+ 趣变广告 SDK 封装器 - PC端广告接入工具
4
+ 目前PC SDK仅支持Windows系统接入,接入Mac会报错,接入时请注意。
5
+ 自动处理多级接口映射与原生渲染逻辑,简化广告接入流程。
6
+ 从 1.0.1 起,浏览器环境会自动加载底层依赖 `qb-pc-ad-sdk-origin`,常规打包场景开箱即用。
6
7
 
7
8
  ## 安装
8
9
 
@@ -12,7 +13,7 @@ npm install qb-pc-sdk
12
13
 
13
14
  ## 使用方法
14
15
 
15
- ### ES6 模块方式
16
+ ### ES6 模块方式(开箱即用)
16
17
 
17
18
  #### 方式一:默认导入
18
19
 
@@ -64,11 +65,45 @@ const adSDK = new AdSDKWrapper({
64
65
  });
65
66
  ```
66
67
 
67
- > **注意**:两种引入方式引入的都是同一个类,使用方式完全相同。`AdSDK` `AdSDKWrapper` 是同一个类的不同名称。
68
+ > **注意**:`AdSDK` / `AdSDKWrapper` 是同一个类。
69
+ > 在浏览器打包场景(webpack/Vite 等)无需再单独 `import 'qb-pc-ad-sdk-origin'`,入口已在有 `window` 时自动 `require` 底层 SDK。若在极端沙箱/SSR 场景下未能挂载 `window.GDTAdSDK`,可手动在入口补充 `import 'qb-pc-ad-sdk-origin';` 作为兜底。
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';
68
80
 
69
- ### 浏览器直接引入
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
+
98
+ ### 浏览器直接引入(不经打包)
70
99
 
71
100
  ```html
101
+ <!-- 先引入底层 SDK(本地或 CDN 其一) -->
102
+ <script src="/qb-pc-ad-sdk.v1.0.0.js"></script>
103
+ <!-- 或 CDN 示例: -->
104
+ <!-- <script src="https://unpkg.com/qb-pc-ad-sdk-origin/dist/qb-pc-ad-sdk.v1.0.0.js"></script> -->
105
+
106
+ <!-- 再引入封装后的 qb-pc-sdk(UMD,本仓库 src/ad-sdk-wrapper.js) -->
72
107
  <script src="./src/ad-sdk-wrapper.js"></script>
73
108
  <script>
74
109
  // 使用 window.AdSDK
@@ -130,7 +165,7 @@ const adSDK = new AdSDK({
130
165
 
131
166
  ## 依赖
132
167
 
133
- - `qb-pc-ad-sdk-origin`: 底层广告 SDK
168
+ - `qb-pc-ad-sdk-origin`: 底层广告 SDK(已自动在浏览器环境加载)
134
169
 
135
170
  ## License
136
171
 
package/index.js CHANGED
@@ -1,13 +1,36 @@
1
1
  /**
2
2
  * qb-pc-sdk 入口文件
3
- * 导出 AdSDKWrapper 类供用户使用
3
+ * 1) 浏览器环境下预加载底层 SDK(qb-pc-ad-sdk-origin),确保 window.GDTAdSDK 可用
4
+ * 2) 导出封装器 AdSDKWrapper
4
5
  */
5
6
 
6
- // 导入 AdSDKWrapper
7
+ const isBrowser = typeof window !== 'undefined';
8
+
9
+ // 浏览器中预加载底层 SDK(仅 side-effect,挂载 window.GDTAdSDK)
10
+ if (isBrowser) {
11
+ try {
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
+ }
17
+ } catch (err) {
18
+ // 这里不抛出,保持封装层逻辑可继续运行并给出错误回调
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
+ }
24
+ }
25
+ }
26
+
27
+ // 导入封装器
7
28
  const AdSDKWrapper = require('./src/ad-sdk-wrapper.js');
8
29
 
9
30
  // 导出(支持多种导入方式)
10
31
  module.exports = AdSDKWrapper;
11
32
  module.exports.default = AdSDKWrapper;
12
33
  module.exports.AdSDKWrapper = AdSDKWrapper;
34
+ // 可选:透出底层 SDK(若已加载)
35
+ module.exports.GDTAdSDK = isBrowser ? window.GDTAdSDK : undefined;
13
36
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "qb-pc-sdk",
3
- "version": "1.0.1",
3
+ "version": "1.0.3",
4
4
  "description": "趣变广告 SDK 封装器 - PC端广告接入工具,自动处理多级接口映射与原生渲染逻辑",
5
5
  "main": "index.js",
6
6
  "files": [
@@ -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
- } else if (attempts++ < 50) {
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();
@@ -17,20 +17,38 @@
17
17
  <body>
18
18
  <div id="ad-slot-1"></div>
19
19
 
20
- <script src="https://qzs.gdtimg.com/union/res/pc/ylh-pc-ad-sdk.v1.25.25.js"></script>
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
- AdSDK
23
24
  <script>
24
25
  window.addEventListener('DOMContentLoaded', () => {
25
- new ({
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
+ // 初始化广告
41
+ new window.AdSDK({
26
42
  appId: '1999336062823956569',
27
43
  placementId: '1999381081819709520',
28
44
  container: '#ad-slot-1',
29
45
  onAdLoaded: () => console.log('✅ 广告加载完成'),
30
- onAdError: (err) => console.log('❌ 广告报错:', err),
46
+ onAdError: (err, msg) => console.log('❌ 广告报错:', err, msg),
47
+ onAdExpose: () => console.log('👀 广告曝光'),
31
48
  onAdClick: () => console.log('🖱️ 用户点击了广告')
32
49
  });
33
50
  });
34
51
  </script>
35
52
  </body>
36
53
  </html>
54
+