-
Notifications
You must be signed in to change notification settings - Fork 9
/
TaobaoCloudpushPushAPIRequest.go
398 lines (345 loc) · 13.2 KB
/
TaobaoCloudpushPushAPIRequest.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
package cloudpush
import (
"net/url"
"sync"
"github.com/bububa/opentaobao/model"
)
// TaobaoCloudpushPushAPIRequest 百川用户使用云推送高级推送接口 API请求
// taobao.cloudpush.push
//
// 百川用户使用云推送高级推送接口
type TaobaoCloudpushPushAPIRequest struct {
model.Params
// 推送目标: device:推送给设备; account:推送给指定帐号,tag:推送给自定义标签; all: 推送给全部
_target string
// 根据Target来设定,如Target=device, 则对应的值为 设备id1,设备id2. 多个值使用逗号分隔.(帐号与设备有一次最多100个的限制)
_targetValue string
// Android对应的activity,仅仅当androidOpenType=2有效
_androidActivity string
// 自定义的kv结构,开发者扩展用 针对android
_androidExtParameters string
// android通知声音
_androidMusic string
// 点击通知后动作,1:打开应用 2: 打开应用Activity 3:打开 url
_androidOpenType string
// Android收到推送后打开对应的url,仅仅当androidOpenType=3有效
_androidOpenUrl string
// 批次编号,用于活动效果统计
_batchNumber string
// 推送内容
_body string
// iOS应用图标右上角角标
_iosBadge string
// 自定义的kv结构,开发者扩展用 针对iOS设备
_iosExtParameters string
// iOS通知声音
_iosMusic string
// 通知的摘要
_summery string
// 推送的标题内容.
_title string
// 防打扰时长,取值范围为1~23
_antiHarassDuration int64
// 防打扰开始时间点,取值范围为0~23
_antiHarassStartTime int64
// 设备类型,取值范围为:0~3云推送支持多种设备,各种设备类型编号如下: iOS设备:deviceType=0; Andriod设备:deviceType=1;如果存在此字段,则向指定的设备类型推送消息。 默认为全部(3);
_deviceType int64
// 离线消息保存时长,取值范围为1~72,若不填,则表示不保存离线消息
_timeout int64
// 0:表示消息(默认为0),1:表示通知
_type int64
// 当APP不在线时候,是否通过通知提醒. 针对不同设备,处理逻辑不同。 该参数只针对iOS设备生效, (remind=true & 发送消息的话(type=0)). 当你的目标设备不在线(既长连接通道不通, 我们会将这条消息的标题,通过苹果的apns通道再送达一次。发apns是发送生产环境的apns,需要在云推送配置的app的iOS生产证书和密码需要正确,否则也发送不了。 (remind=false & 并且是发送消息的话(type=0)),那么设备不在线,则不会再走苹果apns发送了。
_remind bool
// 离线消息是否保存,若保存, 在推送时候,用户即使不在线,下一次上线则会收到
_storeOffline bool
}
// NewTaobaoCloudpushPushRequest 初始化TaobaoCloudpushPushAPIRequest对象
func NewTaobaoCloudpushPushRequest() *TaobaoCloudpushPushAPIRequest {
return &TaobaoCloudpushPushAPIRequest{
Params: model.NewParams(21),
}
}
// Reset IRequest interface 方法, 清空结构体
func (r *TaobaoCloudpushPushAPIRequest) Reset() {
r._target = ""
r._targetValue = ""
r._androidActivity = ""
r._androidExtParameters = ""
r._androidMusic = ""
r._androidOpenType = ""
r._androidOpenUrl = ""
r._batchNumber = ""
r._body = ""
r._iosBadge = ""
r._iosExtParameters = ""
r._iosMusic = ""
r._summery = ""
r._title = ""
r._antiHarassDuration = 0
r._antiHarassStartTime = 0
r._deviceType = 0
r._timeout = 0
r._type = 0
r._remind = false
r._storeOffline = false
r.Params.ToZero()
}
// GetApiMethodName IRequest interface 方法, 获取Api method
func (r TaobaoCloudpushPushAPIRequest) GetApiMethodName() string {
return "taobao.cloudpush.push"
}
// GetApiParams IRequest interface 方法, 获取API参数
func (r TaobaoCloudpushPushAPIRequest) GetApiParams(params url.Values) {
for k, v := range r.Params {
params.Set(k, v.String())
}
}
// GetRawParams IRequest interface 方法, 获取API原始参数
func (r TaobaoCloudpushPushAPIRequest) GetRawParams() model.Params {
return r.Params
}
// SetTarget is Target Setter
// 推送目标: device:推送给设备; account:推送给指定帐号,tag:推送给自定义标签; all: 推送给全部
func (r *TaobaoCloudpushPushAPIRequest) SetTarget(_target string) error {
r._target = _target
r.Set("target", _target)
return nil
}
// GetTarget Target Getter
func (r TaobaoCloudpushPushAPIRequest) GetTarget() string {
return r._target
}
// SetTargetValue is TargetValue Setter
// 根据Target来设定,如Target=device, 则对应的值为 设备id1,设备id2. 多个值使用逗号分隔.(帐号与设备有一次最多100个的限制)
func (r *TaobaoCloudpushPushAPIRequest) SetTargetValue(_targetValue string) error {
r._targetValue = _targetValue
r.Set("target_value", _targetValue)
return nil
}
// GetTargetValue TargetValue Getter
func (r TaobaoCloudpushPushAPIRequest) GetTargetValue() string {
return r._targetValue
}
// SetAndroidActivity is AndroidActivity Setter
// Android对应的activity,仅仅当androidOpenType=2有效
func (r *TaobaoCloudpushPushAPIRequest) SetAndroidActivity(_androidActivity string) error {
r._androidActivity = _androidActivity
r.Set("android_activity", _androidActivity)
return nil
}
// GetAndroidActivity AndroidActivity Getter
func (r TaobaoCloudpushPushAPIRequest) GetAndroidActivity() string {
return r._androidActivity
}
// SetAndroidExtParameters is AndroidExtParameters Setter
// 自定义的kv结构,开发者扩展用 针对android
func (r *TaobaoCloudpushPushAPIRequest) SetAndroidExtParameters(_androidExtParameters string) error {
r._androidExtParameters = _androidExtParameters
r.Set("android_ext_parameters", _androidExtParameters)
return nil
}
// GetAndroidExtParameters AndroidExtParameters Getter
func (r TaobaoCloudpushPushAPIRequest) GetAndroidExtParameters() string {
return r._androidExtParameters
}
// SetAndroidMusic is AndroidMusic Setter
// android通知声音
func (r *TaobaoCloudpushPushAPIRequest) SetAndroidMusic(_androidMusic string) error {
r._androidMusic = _androidMusic
r.Set("android_music", _androidMusic)
return nil
}
// GetAndroidMusic AndroidMusic Getter
func (r TaobaoCloudpushPushAPIRequest) GetAndroidMusic() string {
return r._androidMusic
}
// SetAndroidOpenType is AndroidOpenType Setter
// 点击通知后动作,1:打开应用 2: 打开应用Activity 3:打开 url
func (r *TaobaoCloudpushPushAPIRequest) SetAndroidOpenType(_androidOpenType string) error {
r._androidOpenType = _androidOpenType
r.Set("android_open_type", _androidOpenType)
return nil
}
// GetAndroidOpenType AndroidOpenType Getter
func (r TaobaoCloudpushPushAPIRequest) GetAndroidOpenType() string {
return r._androidOpenType
}
// SetAndroidOpenUrl is AndroidOpenUrl Setter
// Android收到推送后打开对应的url,仅仅当androidOpenType=3有效
func (r *TaobaoCloudpushPushAPIRequest) SetAndroidOpenUrl(_androidOpenUrl string) error {
r._androidOpenUrl = _androidOpenUrl
r.Set("android_open_url", _androidOpenUrl)
return nil
}
// GetAndroidOpenUrl AndroidOpenUrl Getter
func (r TaobaoCloudpushPushAPIRequest) GetAndroidOpenUrl() string {
return r._androidOpenUrl
}
// SetBatchNumber is BatchNumber Setter
// 批次编号,用于活动效果统计
func (r *TaobaoCloudpushPushAPIRequest) SetBatchNumber(_batchNumber string) error {
r._batchNumber = _batchNumber
r.Set("batch_number", _batchNumber)
return nil
}
// GetBatchNumber BatchNumber Getter
func (r TaobaoCloudpushPushAPIRequest) GetBatchNumber() string {
return r._batchNumber
}
// SetBody is Body Setter
// 推送内容
func (r *TaobaoCloudpushPushAPIRequest) SetBody(_body string) error {
r._body = _body
r.Set("body", _body)
return nil
}
// GetBody Body Getter
func (r TaobaoCloudpushPushAPIRequest) GetBody() string {
return r._body
}
// SetIosBadge is IosBadge Setter
// iOS应用图标右上角角标
func (r *TaobaoCloudpushPushAPIRequest) SetIosBadge(_iosBadge string) error {
r._iosBadge = _iosBadge
r.Set("ios_badge", _iosBadge)
return nil
}
// GetIosBadge IosBadge Getter
func (r TaobaoCloudpushPushAPIRequest) GetIosBadge() string {
return r._iosBadge
}
// SetIosExtParameters is IosExtParameters Setter
// 自定义的kv结构,开发者扩展用 针对iOS设备
func (r *TaobaoCloudpushPushAPIRequest) SetIosExtParameters(_iosExtParameters string) error {
r._iosExtParameters = _iosExtParameters
r.Set("ios_ext_parameters", _iosExtParameters)
return nil
}
// GetIosExtParameters IosExtParameters Getter
func (r TaobaoCloudpushPushAPIRequest) GetIosExtParameters() string {
return r._iosExtParameters
}
// SetIosMusic is IosMusic Setter
// iOS通知声音
func (r *TaobaoCloudpushPushAPIRequest) SetIosMusic(_iosMusic string) error {
r._iosMusic = _iosMusic
r.Set("ios_music", _iosMusic)
return nil
}
// GetIosMusic IosMusic Getter
func (r TaobaoCloudpushPushAPIRequest) GetIosMusic() string {
return r._iosMusic
}
// SetSummery is Summery Setter
// 通知的摘要
func (r *TaobaoCloudpushPushAPIRequest) SetSummery(_summery string) error {
r._summery = _summery
r.Set("summery", _summery)
return nil
}
// GetSummery Summery Getter
func (r TaobaoCloudpushPushAPIRequest) GetSummery() string {
return r._summery
}
// SetTitle is Title Setter
// 推送的标题内容.
func (r *TaobaoCloudpushPushAPIRequest) SetTitle(_title string) error {
r._title = _title
r.Set("title", _title)
return nil
}
// GetTitle Title Getter
func (r TaobaoCloudpushPushAPIRequest) GetTitle() string {
return r._title
}
// SetAntiHarassDuration is AntiHarassDuration Setter
// 防打扰时长,取值范围为1~23
func (r *TaobaoCloudpushPushAPIRequest) SetAntiHarassDuration(_antiHarassDuration int64) error {
r._antiHarassDuration = _antiHarassDuration
r.Set("anti_harass_duration", _antiHarassDuration)
return nil
}
// GetAntiHarassDuration AntiHarassDuration Getter
func (r TaobaoCloudpushPushAPIRequest) GetAntiHarassDuration() int64 {
return r._antiHarassDuration
}
// SetAntiHarassStartTime is AntiHarassStartTime Setter
// 防打扰开始时间点,取值范围为0~23
func (r *TaobaoCloudpushPushAPIRequest) SetAntiHarassStartTime(_antiHarassStartTime int64) error {
r._antiHarassStartTime = _antiHarassStartTime
r.Set("anti_harass_start_time", _antiHarassStartTime)
return nil
}
// GetAntiHarassStartTime AntiHarassStartTime Getter
func (r TaobaoCloudpushPushAPIRequest) GetAntiHarassStartTime() int64 {
return r._antiHarassStartTime
}
// SetDeviceType is DeviceType Setter
// 设备类型,取值范围为:0~3云推送支持多种设备,各种设备类型编号如下: iOS设备:deviceType=0; Andriod设备:deviceType=1;如果存在此字段,则向指定的设备类型推送消息。 默认为全部(3);
func (r *TaobaoCloudpushPushAPIRequest) SetDeviceType(_deviceType int64) error {
r._deviceType = _deviceType
r.Set("device_type", _deviceType)
return nil
}
// GetDeviceType DeviceType Getter
func (r TaobaoCloudpushPushAPIRequest) GetDeviceType() int64 {
return r._deviceType
}
// SetTimeout is Timeout Setter
// 离线消息保存时长,取值范围为1~72,若不填,则表示不保存离线消息
func (r *TaobaoCloudpushPushAPIRequest) SetTimeout(_timeout int64) error {
r._timeout = _timeout
r.Set("timeout", _timeout)
return nil
}
// GetTimeout Timeout Getter
func (r TaobaoCloudpushPushAPIRequest) GetTimeout() int64 {
return r._timeout
}
// SetType is Type Setter
// 0:表示消息(默认为0),1:表示通知
func (r *TaobaoCloudpushPushAPIRequest) SetType(_type int64) error {
r._type = _type
r.Set("type", _type)
return nil
}
// GetType Type Getter
func (r TaobaoCloudpushPushAPIRequest) GetType() int64 {
return r._type
}
// SetRemind is Remind Setter
// 当APP不在线时候,是否通过通知提醒. 针对不同设备,处理逻辑不同。 该参数只针对iOS设备生效, (remind=true & 发送消息的话(type=0)). 当你的目标设备不在线(既长连接通道不通, 我们会将这条消息的标题,通过苹果的apns通道再送达一次。发apns是发送生产环境的apns,需要在云推送配置的app的iOS生产证书和密码需要正确,否则也发送不了。 (remind=false & 并且是发送消息的话(type=0)),那么设备不在线,则不会再走苹果apns发送了。
func (r *TaobaoCloudpushPushAPIRequest) SetRemind(_remind bool) error {
r._remind = _remind
r.Set("remind", _remind)
return nil
}
// GetRemind Remind Getter
func (r TaobaoCloudpushPushAPIRequest) GetRemind() bool {
return r._remind
}
// SetStoreOffline is StoreOffline Setter
// 离线消息是否保存,若保存, 在推送时候,用户即使不在线,下一次上线则会收到
func (r *TaobaoCloudpushPushAPIRequest) SetStoreOffline(_storeOffline bool) error {
r._storeOffline = _storeOffline
r.Set("store_offline", _storeOffline)
return nil
}
// GetStoreOffline StoreOffline Getter
func (r TaobaoCloudpushPushAPIRequest) GetStoreOffline() bool {
return r._storeOffline
}
var poolTaobaoCloudpushPushAPIRequest = sync.Pool{
New: func() any {
return NewTaobaoCloudpushPushRequest()
},
}
// GetTaobaoCloudpushPushRequest 从 sync.Pool 获取 TaobaoCloudpushPushAPIRequest
func GetTaobaoCloudpushPushAPIRequest() *TaobaoCloudpushPushAPIRequest {
return poolTaobaoCloudpushPushAPIRequest.Get().(*TaobaoCloudpushPushAPIRequest)
}
// ReleaseTaobaoCloudpushPushAPIRequest 将 TaobaoCloudpushPushAPIRequest 放入 sync.Pool
func ReleaseTaobaoCloudpushPushAPIRequest(v *TaobaoCloudpushPushAPIRequest) {
v.Reset()
poolTaobaoCloudpushPushAPIRequest.Put(v)
}