cordova-plugin-xinstall 1.3.4 → 1.5.7
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 +339 -9
- package/package.json +1 -1
- package/plugin.xml +1 -1
- package/src/android/XinstallPlugin.java +394 -55
- package/src/android/libs/XInstallSDK.aar +0 -0
- package/src/ios/CDVXinstall.h +8 -0
- package/src/ios/CDVXinstall.m +142 -10
- package/src/ios/libs/XinstallError.h +2 -1
- package/src/ios/libs/XinstallSDK.h +57 -2
- package/src/ios/libs/libXinstallSDK.a +0 -0
- package/www/cordova-plugin-xinstall.js +75 -10
package/README.md
CHANGED
|
@@ -2,6 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
> Xinstall 为了方便Cordova开发同学接入SDK的封装SDK
|
|
4
4
|
|
|
5
|
+
> 【重要说明】:从 v1.5.0 版本(含)开始,调用 Xinstall 模块的任意方法前,必须先调用一次初始化方法(init 或者 initWithAd),否则将导致其他方法无法正常调用。
|
|
6
|
+
>
|
|
7
|
+
> 从 v1.5.0 以下升级到 v1.5.0 以上版本后,需要自行修改代码调用初始化方法,Xinstall 模块无法在升级后自动兼容。
|
|
8
|
+
|
|
5
9
|
## 前期准备
|
|
6
10
|
|
|
7
11
|
1. 在Xinstall官网注册自己的账号
|
|
@@ -34,24 +38,112 @@ Android 不需要任何配置
|
|
|
34
38
|
|
|
35
39
|
## 调用API
|
|
36
40
|
|
|
37
|
-
### 1
|
|
41
|
+
### 1. 快速下载
|
|
38
42
|
|
|
39
43
|
如果只需要快速下载功能,无需其它功能(携带参数安装、渠道统计、一键拉起),完成初始化即可(这里指安装插件)
|
|
40
44
|
|
|
41
|
-
### 2
|
|
45
|
+
### 2.初始化SDK
|
|
46
|
+
|
|
47
|
+
```js
|
|
48
|
+
window.xinstall.init();
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### 3. 一键拉起
|
|
42
52
|
|
|
43
53
|
#### 拉起参数获取
|
|
44
54
|
|
|
45
55
|
调用以下代码注册拉起回调,应尽早调用。如在 `deviceready` 事件回调之时注册
|
|
46
56
|
|
|
47
57
|
```js
|
|
58
|
+
// 第一种回调方法 只有是wakeup 操作才会回调------------
|
|
48
59
|
window.xinstall.registerWakeUpHandler(function(data) {
|
|
49
60
|
// 对data进行处理
|
|
50
61
|
}, function(msg){
|
|
51
62
|
console.log("xinstall.wakeup error : " + msg)
|
|
52
63
|
});
|
|
64
|
+
// -----------------------------------------------
|
|
65
|
+
|
|
66
|
+
// 第二种回调方法, 只要调用方法,就一定有回调------------
|
|
67
|
+
window.xinstall.registerWakeUpDetailHandler(function(data) {
|
|
68
|
+
// 对data进行处理
|
|
69
|
+
},function(msg) {
|
|
70
|
+
console.log("xinstall.registerWakeUpDetailHandler : " + msg)
|
|
71
|
+
});
|
|
72
|
+
//-----------------------------------------------------
|
|
53
73
|
```
|
|
54
74
|
|
|
75
|
+
【注】:两种回调方法选择一个使用。
|
|
76
|
+
|
|
77
|
+
两种回调返回的data格式分别为:
|
|
78
|
+
|
|
79
|
+
```json
|
|
80
|
+
// 第一种回调的json 数据
|
|
81
|
+
{
|
|
82
|
+
"channelCode":"渠道编号", // 字符串类型。渠道编号,没有渠道编号时为 ""
|
|
83
|
+
"data":{ // 对象类型。唤起时携带的参数。
|
|
84
|
+
"co":{ // co 为唤醒页面中通过 Xinstall Web SDK 中的点击按钮传递的数据,key & value 均可自定义,key & value 数量不限制
|
|
85
|
+
"自定义key1":"自定义value1",
|
|
86
|
+
"自定义key2":"自定义value2"
|
|
87
|
+
},
|
|
88
|
+
"uo":{ // uo 为唤醒页面 URL 中 ? 后面携带的标准 GET 参数,key & value 均可自定义,key & value 数量不限制
|
|
89
|
+
"自定义key1":"自定义value1",
|
|
90
|
+
"自定义key2":"自定义value2"
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
// 第二种回调的json 数据
|
|
96
|
+
{
|
|
97
|
+
"wakeUpData":
|
|
98
|
+
{
|
|
99
|
+
"channelCode":"渠道编号", // 字符串类型。渠道编号,没有渠道编号时为 ""
|
|
100
|
+
"data":{ // 对象类型。唤起时携带的参数。
|
|
101
|
+
"co":{ // co 为唤醒页面中通过 Xinstall Web SDK 中的点击按钮传递的数据,key & value 均可自定义,key & value 数量不限制
|
|
102
|
+
"自定义key1":"自定义value1",
|
|
103
|
+
"自定义key2":"自定义value2"
|
|
104
|
+
},
|
|
105
|
+
"uo":{ // uo 为唤醒页面 URL 中 ? 后面携带的标准 GET 参数,key & value 均可自定义,key & value 数量不限制
|
|
106
|
+
"自定义key1":"自定义value1",
|
|
107
|
+
"自定义key2":"自定义value2"
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
},
|
|
111
|
+
"error":
|
|
112
|
+
{
|
|
113
|
+
"errorType" : 7, // 数字类型。代表错误的类型,具体数字对应类型可在下方查看
|
|
114
|
+
"errorMsg" : "xxxxx" // 字符串类型。错误的描述
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
/** errorType 对照表:
|
|
120
|
+
* iOS
|
|
121
|
+
* -1 : SDK 配置错误;
|
|
122
|
+
* 0 : 未知错误;
|
|
123
|
+
* 1 : 网络错误;
|
|
124
|
+
* 2 : 没有获取到数据;
|
|
125
|
+
* 3 : 该 App 已被 Xinstall 后台封禁;
|
|
126
|
+
* 4 : 该操作不被允许(一般代表调用的方法没有开通权限);
|
|
127
|
+
* 5 : 入参不正确;
|
|
128
|
+
* 6 : SDK 初始化未成功完成;
|
|
129
|
+
* 7 : 没有通过 Xinstall Web SDK 集成的页面拉起;
|
|
130
|
+
*
|
|
131
|
+
* Android
|
|
132
|
+
* 1006 : 未执行init 方法;
|
|
133
|
+
* 1007 : 未传入Activity,Activity 未比传参数
|
|
134
|
+
* 1008 : 用户未知操作 不处理
|
|
135
|
+
* 1009 : 不是唤醒执行的调用方法
|
|
136
|
+
* 1010 : 前后两次调起时间小于1s,请求过于频繁
|
|
137
|
+
* 1011 : 获取调起参数失败
|
|
138
|
+
* 1012 : 重复获取调起参数
|
|
139
|
+
* 1013 : 本次调起并非为XInstall的调起
|
|
140
|
+
* 1004 : 无权限
|
|
141
|
+
* 1014 : SCHEME URL 为空
|
|
142
|
+
*/
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
|
|
55
147
|
**iOS 由于使用Universal Link 技术**
|
|
56
148
|
|
|
57
149
|
首先,我们需要到[苹果开发者网站](https://developer.apple.com/),为当前的 App ID 开启关联域名 (Associated Domains) 服务:
|
|
@@ -62,11 +154,13 @@ window.xinstall.registerWakeUpHandler(function(data) {
|
|
|
62
154
|
|
|
63
155
|

|
|
64
156
|
|
|
65
|
-
在Xcode中配置Xinstall为当前应用生成的关联域名 (Associated Domains) :**applinks:xxxx.xinstall.top**
|
|
157
|
+
在Xcode中配置Xinstall为当前应用生成的关联域名 (Associated Domains) :**applinks:xxxx.xinstall.top** 和 **applinks:xxxx.xinstall.net**
|
|
158
|
+
|
|
159
|
+
> 具体的关联域名可在 Xinstall管理后台 - 对应的应用控制台 - iOS下载配置 页面中找到
|
|
66
160
|
|
|
67
|
-

|
|
161
|
+

|
|
68
162
|
|
|
69
|
-
###
|
|
163
|
+
### 4. 携带参数安装
|
|
70
164
|
|
|
71
165
|
```js
|
|
72
166
|
window.xinstall.getInstallParams(function(data) {
|
|
@@ -87,21 +181,257 @@ window.xinstall.getInstallParams(function(data) {
|
|
|
87
181
|
// isFirstFetch 是否第一次获取安装参数
|
|
88
182
|
```
|
|
89
183
|
|
|
90
|
-
###
|
|
184
|
+
### 5. 事件统计相关
|
|
91
185
|
|
|
92
|
-
####
|
|
186
|
+
#### 5.1 注册量统计
|
|
93
187
|
|
|
94
188
|
```js
|
|
95
189
|
window.xinstall.reportRegister();
|
|
96
190
|
```
|
|
97
191
|
|
|
98
|
-
####
|
|
192
|
+
#### 5.2 事件统计
|
|
99
193
|
|
|
100
194
|
```js
|
|
101
195
|
window.xinstall.reportEffectEvent(eventId, eventVal);
|
|
102
196
|
```
|
|
103
197
|
|
|
104
|
-
|
|
198
|
+
**补充说明**
|
|
199
|
+
|
|
200
|
+
只有 Xinstall 后台创建事件统计,并且代码中 **传递的事件ID** 与 **后台创建的ID** 一致时,上报数据才会被统计。
|
|
201
|
+
|
|
202
|
+
#### 5.3 事件明细统计
|
|
203
|
+
|
|
204
|
+
> 除了旧有事件业务,我们还开发了事件明细统计,用来统计各个事件具体发生情况。
|
|
205
|
+
>
|
|
206
|
+
> 1.5.7 及以后版本可用
|
|
207
|
+
|
|
208
|
+
在使用之前要现在后台管理系统中打开该事件明细统计功能,具体如下:
|
|
209
|
+
|
|
210
|
+

|
|
211
|
+
|
|
212
|
+
在开启权限之后,我们直接使用Xinstall SDK 的`reportEventWhenOpenDetailInfo`方法上传单个事件的第二个详细值
|
|
213
|
+
|
|
214
|
+
```js
|
|
215
|
+
window.xinstall.reportEventWhenOpenDetailInfo(eventId, eventVal,eventSubValue);
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
最终在事件列表中可以点击查看查阅具体详情的内容
|
|
219
|
+
|
|
220
|
+

|
|
221
|
+
|
|
222
|
+
|
|
223
|
+
|
|
224
|
+
|
|
225
|
+
|
|
226
|
+
### 6. 广告平台渠道功能
|
|
227
|
+
|
|
228
|
+
> 如果您在 Xinstall 管理后台对应 App 中,**只使用「自建渠道」,而不使用「广告平台渠道」,则无需进行本小节中额外的集成工作**,也能正常使用 Xinstall 提供的其他功能。
|
|
229
|
+
>
|
|
230
|
+
> 注意:根据目前已有的各大主流广告平台的统计方式,目前 iOS 端和 Android 端均需要用户授权并获取一些设备关键值后才能正常进行 [ 广告平台渠道 ] 的统计,如 IDFA / OAID / GAID 等,对该行为敏感的 App 请慎重使用该功能。
|
|
231
|
+
|
|
232
|
+
#### 6.1 配置工作
|
|
233
|
+
|
|
234
|
+
**iOS 端:**
|
|
235
|
+
|
|
236
|
+
在 Xcode 中打开 iOS 端的工程,在 `Info.plist` 文件中配置一个权限作用声明(如果不配置将导致 App 启动后马上闪退):
|
|
237
|
+
|
|
238
|
+
```xml
|
|
239
|
+
<key>NSUserTrackingUsageDescription</key>
|
|
240
|
+
<string>这里是针对获取 IDFA 的作用描述,请根据实际情况填写</string>
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
在 Xcode 中,找到 App 对应的「Target」,再点击「General」,然后在「Frameworks, Libraries, and Embedded Content」中,添加如下两个框架:
|
|
244
|
+
|
|
245
|
+
* AppTrackingTransparency.framework
|
|
246
|
+
* AdSupport.framework
|
|
247
|
+
|
|
248
|
+
**Android 端:**
|
|
249
|
+
|
|
250
|
+
相关接入可以参考广告平台联调指南中的[《Android集成指南》](https://doc.xinstall.com/AD/AndroidGuide.html)
|
|
251
|
+
|
|
252
|
+
1. 接入IMEI需要额外的全下申请,需要在`AndroidManifest`中添加权限声明
|
|
253
|
+
|
|
254
|
+
```java
|
|
255
|
+
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
2. 如果使用OAID,因为内部使用反射获取oaid 参数,所以都需要外部用户接入OAID SDK 。具体接入参考[《Android集成指南》](https://doc.xinstall.com/AD/AndroidGuide.html)
|
|
259
|
+
|
|
260
|
+
|
|
261
|
+
|
|
262
|
+
##### 6.2、更换初始化方法
|
|
263
|
+
|
|
264
|
+
**使用新的 initWithAd 方法,替代原先的 init 方法来进行模块的初始化**
|
|
265
|
+
|
|
266
|
+
> iOS 端使用该方法时,需要传入 IDFA(在 JS 脚本内)。您可以使用任意方式在 JS 脚本中获取到 IDFA,例如第三方获取 IDFA 的模块。
|
|
267
|
+
>
|
|
268
|
+
|
|
269
|
+
**入参说明**:需要主动传入参数,字典
|
|
270
|
+
|
|
271
|
+
入参内部字段:
|
|
272
|
+
|
|
273
|
+
* iOS 端:
|
|
274
|
+
|
|
275
|
+
<table>
|
|
276
|
+
<tr>
|
|
277
|
+
<th>参数名</th>
|
|
278
|
+
<th>参数类型</th>
|
|
279
|
+
<th>描述 </th>
|
|
280
|
+
</tr>
|
|
281
|
+
<tr>
|
|
282
|
+
<th>idfa</th>
|
|
283
|
+
<th>字符串</th>
|
|
284
|
+
<th>iOS 系统中的广告标识符</th>
|
|
285
|
+
</tr>
|
|
286
|
+
<tr>
|
|
287
|
+
<th>asaEnable</th>
|
|
288
|
+
<th>boolean</th>
|
|
289
|
+
<th>是否开启 ASA 渠道,不需要时可以不传。详见《8. 苹果搜索广告(ASA)渠道功能》</th>
|
|
290
|
+
</tr>
|
|
291
|
+
</table>
|
|
292
|
+
|
|
293
|
+
|
|
294
|
+
* Android 端:
|
|
295
|
+
|
|
296
|
+
<table>
|
|
297
|
+
<tr>
|
|
298
|
+
<th>参数名</th>
|
|
299
|
+
<th>参数类型</th>
|
|
300
|
+
<th>描述 </th>
|
|
301
|
+
</tr>
|
|
302
|
+
<tr>
|
|
303
|
+
<th>adEnabled</th>
|
|
304
|
+
<th>boolean</th>
|
|
305
|
+
<th>是否使用广告功能</th>
|
|
306
|
+
</tr>
|
|
307
|
+
<tr>
|
|
308
|
+
<th>oaid (可选)</th>
|
|
309
|
+
<th>string</th>
|
|
310
|
+
<th>OAID</th>
|
|
311
|
+
</tr>
|
|
312
|
+
<tr>
|
|
313
|
+
<th>gaid(可选)</th>
|
|
314
|
+
<th>string</th>
|
|
315
|
+
<th>GaID(google Ad ID)</th>
|
|
316
|
+
</tr>
|
|
317
|
+
</table>
|
|
318
|
+
|
|
319
|
+
**调用示例**
|
|
320
|
+
|
|
321
|
+
```javascript
|
|
322
|
+
|
|
323
|
+
// oaid和gaid 为选传,不传则代表使用SDK自动去获取(SDK内不包括OAID SDK,需要自己接入)
|
|
324
|
+
window.xinstall.initWithAd({adEnabled:true,idfa:"idfa需要自己传入",oaid:"oaid测试",gaid:"测试",asaEnable:true});
|
|
325
|
+
// 如果希望在完成初始化,立即执行之后的步骤可以通过 下列代码实现-------------------------
|
|
326
|
+
//window.xinstall.initWithAd({adEnable:true,idfa:"外部获取的idfa",asaEnable:true},function() {
|
|
327
|
+
// window.xinstall.getInstallParams 或者 window.xinstall.registerWakeUpHandler 等操作
|
|
328
|
+
//});
|
|
329
|
+
//-----------------------------------------------------------------------------
|
|
330
|
+
|
|
331
|
+
```
|
|
332
|
+
|
|
333
|
+
##### 7.3、上架须知
|
|
334
|
+
|
|
335
|
+
**在使用了广告平台渠道后,若您的 App 需要上架,请认真阅读本段内容。**
|
|
336
|
+
|
|
337
|
+
##### 7.3.1 iOS 端:上架 App Store
|
|
338
|
+
|
|
339
|
+
1. 如果您的 App 没有接入苹果广告(即在 App 中显示苹果投放的广告),那么在提交审核时,在广告标识符中,请按照下图勾选:
|
|
340
|
+
|
|
341
|
+

|
|
342
|
+
|
|
343
|
+
|
|
344
|
+
|
|
345
|
+
1. 在 App Store Connect 对应 App —「App隐私」—「数据类型」选项中,需要选择:**“是,我们会从此 App 中收集数据”**:
|
|
346
|
+
|
|
347
|
+

|
|
348
|
+
|
|
349
|
+
在下一步中,勾选「设备 ID」并点击【发布】按钮:
|
|
350
|
+
|
|
351
|
+

|
|
352
|
+
|
|
353
|
+
点击【设置设备 ID】按钮后,在弹出的弹框中,根据实际情况进行勾选:
|
|
354
|
+
|
|
355
|
+
- 如果您仅仅是接入了 Xinstall 广告平台而使用了 IDFA,那么只需要勾选:**第三方广告**
|
|
356
|
+
- 如果您在接入 Xinstall 广告平台之外,还自行使用 IDFA 进行别的用途,那么在勾选 **第三方广告** 后,还需要您根据您的实际使用情况,进行其他选项的勾选
|
|
357
|
+
|
|
358
|
+

|
|
359
|
+
|
|
360
|
+

|
|
361
|
+
|
|
362
|
+
勾选完成后点击【下一步】按钮,在 **“从此 App 中收集的设备 ID 是否与用户身份关联?”** 选项中,请根据如下情况进行选择:
|
|
363
|
+
|
|
364
|
+
- 如果您仅仅是接入了 Xinstall 广告平台而使用了 IDFA,那么选择 **“否,从此 App 中收集的设备 ID 未与用户身份关联”**
|
|
365
|
+
- 如果您在接入 Xinstall 广告平台之外,还自行使用 IDFA 进行别的用途,那么请根据您的实际情况选择对应的选项
|
|
366
|
+
|
|
367
|
+

|
|
368
|
+
|
|
369
|
+
最后,在弹出的弹框中,选择 **“是,我们会将设备 ID 用于追踪目的”**,并点击【发布】按钮:
|
|
370
|
+
|
|
371
|
+

|
|
372
|
+
|
|
373
|
+
##### 7.3.2 Android 端
|
|
374
|
+
|
|
375
|
+
无特殊需要注意,如碰上相关合规问题,参考 [《应用合规指南》](https://doc.xinstall.com/应用合规指南.html)
|
|
376
|
+
|
|
377
|
+
### 8. 苹果搜索广告(ASA)渠道功能
|
|
378
|
+
|
|
379
|
+
> 如果您在 Xinstall 管理后台对应 App 中,**不使用「ASA渠道」,则无需进行本小节中额外的集成工作**,也能正常使用 Xinstall 提供的其他功能。
|
|
380
|
+
|
|
381
|
+
#### 8.1 更换初始化方法
|
|
382
|
+
|
|
383
|
+
**使用新的 initWithAd 方法,替代原先的 init 方法来进行模块的初始化**
|
|
384
|
+
|
|
385
|
+
## **initWithAd**
|
|
386
|
+
|
|
387
|
+
**入参说明**:需要主动传入参数,JSON对象
|
|
388
|
+
|
|
389
|
+
入参内部字段:
|
|
390
|
+
|
|
391
|
+
* iOS 端:
|
|
392
|
+
|
|
393
|
+
<table>
|
|
394
|
+
<tr>
|
|
395
|
+
<th>参数名</th>
|
|
396
|
+
<th>参数类型</th>
|
|
397
|
+
<th>描述 </th>
|
|
398
|
+
</tr>
|
|
399
|
+
<tr>
|
|
400
|
+
<th>idfa</th>
|
|
401
|
+
<th>string</th>
|
|
402
|
+
<th>iOS 系统中的广告标识符(不需要时可以不传)</th>
|
|
403
|
+
</tr>
|
|
404
|
+
<tr>
|
|
405
|
+
<th>asaEnable</th>
|
|
406
|
+
<th>boolean</th>
|
|
407
|
+
<th>是否开启 ASA 渠道,true 时为开启,false 或者不传时均为不开启</th>
|
|
408
|
+
</tr>
|
|
409
|
+
</table>
|
|
410
|
+
|
|
411
|
+
**回调说明**:无需传入回调函数
|
|
412
|
+
|
|
413
|
+
**调用示例**
|
|
414
|
+
|
|
415
|
+
```javascript
|
|
416
|
+
// idfa 为广告传入参数,如果未使用到,可以不传入
|
|
417
|
+
window.xinstall.initWithAd({asaEnable:true},function() {
|
|
418
|
+
// 初始化回调 为选传参数
|
|
419
|
+
window.xinstall.getInstallParams(function(data){
|
|
420
|
+
|
|
421
|
+
}, 10);
|
|
422
|
+
});
|
|
423
|
+
|
|
424
|
+
```
|
|
425
|
+
|
|
426
|
+
**可用性**
|
|
427
|
+
|
|
428
|
+
iOS系统
|
|
429
|
+
|
|
430
|
+
可提供的 1.5.5 及更高版本
|
|
431
|
+
|
|
432
|
+
|
|
433
|
+
|
|
434
|
+
|
|
105
435
|
|
|
106
436
|
## 导出apk/ipa包并上传
|
|
107
437
|
|
package/package.json
CHANGED
package/plugin.xml
CHANGED