183 lines
13 KiB
Go
183 lines
13 KiB
Go
package uinapp
|
||
|
||
// AppID:dqxDP9HwHc5B1dd2db4ek2
|
||
// AppKey:Iogz63Q1HL7R4dB8F4Kbn5
|
||
// AppSecret:wX4n8IusDn7PfxkGmypzp5
|
||
// MasterSecret:J7pU14SwCC7SoUntXJghj8
|
||
|
||
const (
|
||
appKey = "Iogz63Q1HL7R4dB8F4Kbn5"
|
||
masterSecret = "J7pU14SwCC7SoUntXJghj8"
|
||
appId = "dqxDP9HwHc5B1dd2db4ek2"
|
||
appSecret = "wX4n8IusDn7PfxkGmypzp5"
|
||
|
||
BaseUrl = "https://restapi.getui.com/v2/" // 基础路由
|
||
GetTokenInterface = "/auth" // 获取token接口
|
||
PushMsgByCid = "push/single/cid" // 通过cId发送消息
|
||
)
|
||
|
||
// AppTokenRes 获取头肯返回值
|
||
type AppTokenRes struct {
|
||
Msg string `json:"msg"`
|
||
Code int `json:"code"`
|
||
Data struct {
|
||
ExpireTime string `json:"expire_time"`
|
||
Token string `json:"token"`
|
||
} `json:"data"`
|
||
}
|
||
|
||
// AudienceCid 推送目标用户
|
||
type AudienceCid struct {
|
||
CId []string `json:"cid"` // 设备CID只能一个
|
||
}
|
||
|
||
// SendMsgSetting 推送条件设置,详细解释见下方settings说明
|
||
type SendMsgSetting struct {
|
||
Ttl int64 `json:"ttl"` // 消息离线时间设置
|
||
Strategy struct {
|
||
DefaultSetting int64 `json:"default"` //1: 表示该消息在用户在线时推送个推通道,用户离线时推送厂商通道; 2: 表示该消息只通过厂商通道策略下发,不考虑用户是否在线; 3: 表示该消息只通过个推通道下发,不考虑用户是否在线; 4: 表示该消息优先从厂商通道下发,若消息内容在厂商通道代发失败后会从个推通道下发。
|
||
Ios int64 `json:"ios"`
|
||
Hw int64 `json:"hw"`
|
||
Ho int64 `json:"ho"`
|
||
Xm int64 `json:"xm"`
|
||
Xmg int64 `json:"xmg"`
|
||
Vv int64 `json:"vv"`
|
||
Op int64 `json:"op"`
|
||
Opg int64 `json:"opg"`
|
||
Mz int64 `json:"mz"`
|
||
St int64 `json:"st"`
|
||
Wx int64 `json:"wx"`
|
||
} `json:"strategy"` // 厂商通道策略
|
||
}
|
||
|
||
// PushMessageDetailNotification 个推安卓消息
|
||
type PushMessageDetailNotification struct {
|
||
Title string `json:"title"` // 通知消息标题
|
||
Body string `json:"body"` // 通知消息内容
|
||
BigText string `json:"big_text"` // 长文本消息内容,通知消息+长文本样式,与big_image二选一,两个都填写时报错,长度 ≤ 512字
|
||
BigImage string `json:"big_image"` // 大图的URL地址,通知消息+大图样式, 与big_text二选一,两个都填写时报错,URL长度 ≤ 1024字
|
||
Logo string `json:"logo"` // 通知的图标名称,包含后缀名
|
||
LogoUrl string `json:"logo_url"` // 通知图标URL地址
|
||
ChannelId string `json:"channel_id"` // 通知渠道id
|
||
ChannelName string `json:"channel_name"` // 通知渠道名称
|
||
ChannelLevel int64 `json:"channel_level"` // 设置通知渠道重要性
|
||
ClickType string `json:"click_type"` // 点击通知后续动作 intent:打开应用内特定页面, url:打开网页地址, payload:自定义消息内容启动应用, payload_custom:自定义消息内容不启动应用, startapp:打开应用首页, none:纯通知,无后续动作
|
||
Intent string `json:"intent"` // click_type为intent时必填 点击通知打开应用特定页面
|
||
Url string `json:"url"` // click_type为url时必填 点击通知栏消息时,唤起系统默认浏览器打开此链接。必须填写可访问的链接
|
||
Payload string `json:"payload"` // click_type为payload/payload_custom时必填 点击通知时,附加自定义透传消息
|
||
NotifyId int64 `json:"notify_id"` // 覆盖任务时会使用到该字段,两条消息的notify_id相同,新的消息会覆盖老的消息
|
||
RingName string `json:"ring_name"` // 自定义铃声,请填写文件名,不包含后缀名(需要在客户端开发时嵌入),个推通道下发有效
|
||
BadgeAddNum int64 `json:"badge_add_num"` // 角标, 必须大于0, 个推通道下发有效
|
||
ThreadId string `json:"thread_id"` // 消息折叠分组,设置成相同thread_id的消息会被折叠(仅支持个推渠道下发的安卓消息)。目前与iOS的thread_id设置无关,安卓和iOS需要分别设置。
|
||
}
|
||
|
||
// PushMessageDetail 个推推送消息参数
|
||
type PushMessageDetail struct {
|
||
Duration string `json:"duration"` // 手机端通知展示时间段,格式为毫秒时间戳段,两个时间的时间差必须大于10分钟
|
||
Notification PushMessageDetailNotification `json:"notification"` // 通知消息内容,仅支持安卓系统,iOS系统不展示个推通知消息,与transmission、revoke三选一,都填写时报错
|
||
Transmission string // 纯透传消息内容,安卓和iOS均支持,与notification、revoke 三选一,都填写时报错,长度 ≤ 3072字
|
||
Revoke struct {
|
||
OldTaskId string `json:"old_task_id"` // 需要撤回的taskId
|
||
Force bool `json:"force"` // 在没有找到对应的taskId,是否把对应appId下所有的通知都撤回
|
||
} `json:"revoke"` // 撤回消息时使用(仅撤回个推通道消息)
|
||
}
|
||
|
||
// IosPushChannelAlert 厂推消息通知内容
|
||
type IosPushChannelAlert struct {
|
||
Title string `json:"title"` // 通知消息标题
|
||
Body string `json:"body"` // 通知消息内容
|
||
ActionLocKey string `json:"action-loc-key"` // (用于多语言支持)指定执行按钮所使用的Localizable.strings
|
||
LocKey string `json:"loc-key"` // (用于多语言支持)指定Localizable.strings文件中相应的key
|
||
LocArgs []string `json:"loc-args"` // 如果loc-key中使用了占位符,则在loc-args中指定各参数
|
||
LaunchImage string `json:"launch-image"` // 指定启动界面图片名
|
||
TitleLocKey string `json:"title-loc-key"` // (用于多语言支持)对于标题指定执行按钮所使用的Localizable.strings,仅支持iOS8.2以上版本
|
||
TitleLocArgs []string `json:"title-loc-args"` // 对于标题,如果loc-key中使用的占位符,则在loc-args中指定各参数,仅支持iOS8.2以上版本
|
||
Subtitle string `json:"subtitle"` // 通知子标题,仅支持iOS8.2以上版本
|
||
SubtitleLocKey string `json:"subtitle-loc-key"` // 当前本地化文件中的子标题字符串的关键字,仅支持iOS8.2以上版本
|
||
SubtitleLocArgs []string `json:"subtitle-loc-args"` // 当前本地化子标题内容中需要置换的变量参数 ,仅支持iOS8.2以上版本
|
||
}
|
||
|
||
// IosPushChannelAps 推送通知消息内容
|
||
type IosPushChannelAps struct {
|
||
Alert IosPushChannelAlert `json:"alert"` // 通知消息
|
||
ContentAvailable int64 `json:"content-available"` // 0表示普通通知消息(默认为0); 1表示静默推送(无通知栏消息),静默推送时不需要填写其他参数。苹果建议1小时最多推送3条静默消息
|
||
Sound string // 自定义铃声,设置为包含后缀名的完整文件名,示例值:ring.mp3 系统铃声,设置为:default无声,设置为:com.gexin.ios.silence,或不填
|
||
Category string `json:"category"` // 在客户端通知栏触发特定的action和button显示
|
||
ThreadId string `json:"thread-id"` // ios的远程通知通过该属性对通知进行分组,仅支持iOS 12.0以上版本
|
||
Timestamp string `json:"timestamp"` // type为liveactivity时必填
|
||
Event string `json:"event"` // type为liveactivity时必填且值为update
|
||
ContentState struct{} `json:"content-state"` // type为liveactivity时必填
|
||
}
|
||
|
||
type MultimediaIos struct {
|
||
Url string `json:"url"` // 多媒体资源地址
|
||
TypeMultimedia int64 `json:"type"` // 资源类型(1.图片,2.音频,3.视频)
|
||
OnlyWifi bool `json:"only_wifi"` // 是否只在wifi环境下加载,如果设置成true,但未使用wifi时,会展示成普通通知
|
||
}
|
||
|
||
type IosApsDetail struct {
|
||
NotifyType string `json:"type"` // notify默认通知消息 voip:voip语音推送,notify:apns通知消息,liveactivity:灵动岛推送(不支持p12证书)
|
||
Aps IosPushChannelAps `json:"aps"` // 推送通知消息内容
|
||
AutoBadge string `json:""` // 用于计算icon上显示的数字,还可以实现显示数字的自动增减,如“+1”、 “-1”、 “1” 等,计算结果将覆盖badge
|
||
Payload string `json:"payload"` // 增加自定义的数据
|
||
Multimedia []MultimediaIos `json:"multimedia"` // 多媒体设置
|
||
ApnsCollapseId string `json:"apns-collapse-id"` // 使用相同的apns-collapse-id可以覆盖之前的消息
|
||
}
|
||
|
||
type AndroidPushChannelUps struct {
|
||
Notification AndroidPushChannelNotification `json:"notification"` // 通知消息内容,与transmission、revoke三选一,都填写时报错。若希望客户端离线时,直接在系统通知栏中展示通知栏消息,推荐使用此参数。
|
||
Transmission string `json:"transmission"` // 透传消息内容,与notification、revoke 三选一,都填写时报错,长度 ≤ 3072字
|
||
Revoke struct {
|
||
OldTaskId string `json:"old_task_id"` // 需要撤回的taskId
|
||
} // 撤回消息时使用(仅撤回厂商通道消息,支持的厂商有小米、VIVO),与notification、transmission三选一,都填写时报错(消息撤回请勿填写策略参数)
|
||
Options struct {
|
||
Constraint string `json:"constraint"` // 扩展内容对应厂商通道设置如:ALL,HW,HO,XM(小米国内),XMG(小米海外),VV,OP,OPG(OPPO海外),MZ,UPS(UPS的参数会影响UPS下面的所有机型,比如ST,SN等等)
|
||
Key string `json:"key"` // 厂商内容扩展字段
|
||
Value interface{} `json:"value"` // value的设置根据key值决定
|
||
} // 第三方厂商扩展内容
|
||
}
|
||
|
||
// AndroidPushChannelNotification 安卓厂推通知消息
|
||
type AndroidPushChannelNotification struct {
|
||
Title string `json:"title"` // 通知栏标题(长度建议取最小集)
|
||
Body string `json:"body"` // 通知栏内容(长度建议取最小集)
|
||
ClickType string `json:"click_type"` // 点击通知后续动作, 目前支持以下后续动作,intent:打开应用内特定页面(厂商都支持),url:打开网页地址(厂商都支持;华为/荣耀要求https协议,且游戏类应用不支持打开网页地址),startapp:打开应用首页(厂商都支持)
|
||
Intent string `json:"intent"` // click_type为intent时必填
|
||
Url string `json:"url"` // click_type为url时必填
|
||
NotifyId int64 `json:"notify_id"` // 消息覆盖使用,两条消息的notify_id相同,新的消息会覆盖老的消息
|
||
}
|
||
|
||
// AndroidPushChannelDetail 安卓厂推
|
||
type AndroidPushChannelDetail struct {
|
||
Ups AndroidPushChannelUps `json:"ups"` // android厂商通道推送消息内容
|
||
}
|
||
|
||
// MpPushChannelDetail 小程序厂推
|
||
type MpPushChannelDetail struct {
|
||
Wx struct {
|
||
TemplateId string `json:"template_id"` // 所需下发的订阅模板id
|
||
Page string `json:"page"` // 点击模板卡片后的跳转页面,仅限本小程序内的页面。支持带参数,(示例index?foo=bar)。该字段不填则模板无跳转
|
||
MiniProgramState string `json:"mini_program_state"` // 跳转小程序类型:developer:开发版 trial:体验版formal:正式版
|
||
Lang string `json:"lang"` // 进入小程序查看”的语言类型: zh_CN:简体中文en_US:英文zh_HK:繁体中文zh_TW:繁体中文
|
||
Data interface{} `json:"data"` // 模板内容,格式形如 { "key1": { "value": any }, "key2": { "value": any } }的Json对象
|
||
} `json:"wx"` // 微信小程序通道推送消息内容
|
||
|
||
}
|
||
|
||
// PushChannelDetail 厂推消息说明
|
||
type PushChannelDetail struct {
|
||
Ios IosApsDetail `json:"ios"` // ios通道推送消息内容
|
||
Android AndroidPushChannelDetail `json:"android"` // android通道推送消息内容
|
||
Mp MpPushChannelDetail `json:"mp"` // miniProgram通道推送消息内容(只支持透传消息)
|
||
}
|
||
|
||
// SendMsgReq 发送msg
|
||
type SendMsgReq struct {
|
||
RequestId string `json:"request_id"` // 请求唯一标识号,10-32位之间;如果request_id重复,会导致消息丢失
|
||
GroupName string `json:"group_name"` // 任务组名称
|
||
Audience AudienceCid `json:"audience"` // 推送目标用户
|
||
Settings SendMsgSetting `json:"settings"` // 推送条件设置
|
||
PushMessage PushMessageDetail `json:"push_message"` // 个推推送消息参数
|
||
PushChannel PushChannelDetail `json:"push_channel"` // 厂商推送消息参数,包含ios消息参数,android厂商消息参数
|
||
}
|