180 lines
4.1 KiB
Go
180 lines
4.1 KiB
Go
|
package huawei
|
|||
|
|
|||
|
import (
|
|||
|
"encoding/json"
|
|||
|
)
|
|||
|
|
|||
|
const (
|
|||
|
// MsgTypePassthrough 消息类型:透传
|
|||
|
MsgTypePassthrough = 1
|
|||
|
// MsgTypeNotification 消息类型:通知栏消息
|
|||
|
MsgTypeNotification = 3
|
|||
|
|
|||
|
// ActionTypeCustom 动作类型:自定义
|
|||
|
ActionTypeCustom = 1
|
|||
|
// ActionTypeURL 动作类型:打开URL
|
|||
|
ActionTypeURL = 2
|
|||
|
// ActionTypeAPP 动作类型:打开APP
|
|||
|
ActionTypeAPP = 3
|
|||
|
|
|||
|
// CallbackTokenUninstalled 应用被卸载了
|
|||
|
CallbackTokenUninstalled = 2
|
|||
|
// CallbackTokenNotApply 终端安装了该应用,但从未打开过,未申请token,所以不能展示
|
|||
|
CallbackTokenNotApply = 5
|
|||
|
// CallbackTokenInactive 非活跃设备,消息丢弃
|
|||
|
CallbackTokenInactive = 10
|
|||
|
)
|
|||
|
|
|||
|
// Response push response.
|
|||
|
type Response struct {
|
|||
|
Code string `json:"code"`
|
|||
|
Msg string `json:"msg"`
|
|||
|
Err string `json:"error"`
|
|||
|
RequestID string `json:"requestId"`
|
|||
|
}
|
|||
|
|
|||
|
// InvalidTokenResponse invalid tokens info in the push response.
|
|||
|
type InvalidTokenResponse struct {
|
|||
|
Success int `json:"success"`
|
|||
|
Failure int `json:"failure"`
|
|||
|
IllegalTokens []string `json:"illegal_tokens"`
|
|||
|
}
|
|||
|
|
|||
|
// Message request message.
|
|||
|
type Message struct {
|
|||
|
Hps Hps `json:"hps"`
|
|||
|
}
|
|||
|
|
|||
|
// Hps .
|
|||
|
type Hps struct {
|
|||
|
Msg Msg `json:"msg"`
|
|||
|
Ext Ext `json:"ext"`
|
|||
|
}
|
|||
|
|
|||
|
// Msg .
|
|||
|
type Msg struct {
|
|||
|
Type int `json:"type"`
|
|||
|
Body Body `json:"body"`
|
|||
|
Action Action `json:"action"`
|
|||
|
}
|
|||
|
|
|||
|
// Body .
|
|||
|
type Body struct {
|
|||
|
Content string `json:"content"`
|
|||
|
Title string `json:"title"`
|
|||
|
}
|
|||
|
|
|||
|
// Action .
|
|||
|
type Action struct {
|
|||
|
Type int `json:"type"`
|
|||
|
Param Param `json:"param"`
|
|||
|
}
|
|||
|
|
|||
|
// Param .
|
|||
|
type Param struct {
|
|||
|
Intent string `json:"intent"`
|
|||
|
AppPkgName string `json:"appPkgName"`
|
|||
|
}
|
|||
|
|
|||
|
// Ext .
|
|||
|
type Ext struct {
|
|||
|
BiTag string `json:"biTag"`
|
|||
|
Icon string `json:"icon"`
|
|||
|
Customize []map[string]string `json:"customize"`
|
|||
|
}
|
|||
|
|
|||
|
// Callback 华为推送回执(回调)
|
|||
|
type Callback struct {
|
|||
|
Statuses []*CallbackItem `json:"statuses"`
|
|||
|
}
|
|||
|
|
|||
|
// CallbackItem http://developer.huawei.com/consumer/cn/service/hms/catalog/huaweipush_agent.html?page=hmssdk_huaweipush_devguide_server_agent#3.3 消息回执
|
|||
|
type CallbackItem struct {
|
|||
|
BiTag string `json:"biTag"`
|
|||
|
AppID string `json:"appid"`
|
|||
|
Token string `json:"token"`
|
|||
|
Status int `json:"status"`
|
|||
|
Timestamp int64 `json:"timestamp"`
|
|||
|
}
|
|||
|
|
|||
|
// NewMessage get message.
|
|||
|
func NewMessage() *Message {
|
|||
|
return &Message{
|
|||
|
Hps: Hps{
|
|||
|
Msg: Msg{
|
|||
|
Type: MsgTypeNotification, //1 透传异步消息, 3 系统通知栏异步消息 注意:2和4以后为保留后续扩展使用
|
|||
|
Body: Body{
|
|||
|
Content: "",
|
|||
|
Title: "",
|
|||
|
},
|
|||
|
Action: Action{
|
|||
|
Type: ActionTypeAPP, //1 自定义行为, 2 打开URL ,3 打开App
|
|||
|
Param: Param{},
|
|||
|
},
|
|||
|
},
|
|||
|
Ext: Ext{ //扩展信息,含BI消息统计,特定展示风格,消息折叠。
|
|||
|
BiTag: "Trump", // 设置消息标签,如果带了这个标签,会在回执中推送给CP用于检测某种类型消息的到达率和状态
|
|||
|
},
|
|||
|
},
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
// SetContent sets content.
|
|||
|
func (m *Message) SetContent(content string) *Message {
|
|||
|
m.Hps.Msg.Body.Content = content
|
|||
|
return m
|
|||
|
}
|
|||
|
|
|||
|
// SetTitle sets title.
|
|||
|
func (m *Message) SetTitle(title string) *Message {
|
|||
|
m.Hps.Msg.Body.Title = title
|
|||
|
return m
|
|||
|
}
|
|||
|
|
|||
|
// SetMsgType sets title.
|
|||
|
func (m *Message) SetMsgType(typ int) *Message {
|
|||
|
m.Hps.Msg.Type = typ
|
|||
|
return m
|
|||
|
}
|
|||
|
|
|||
|
// SetIntent sets intent.
|
|||
|
func (m *Message) SetIntent(intent string) *Message {
|
|||
|
m.Hps.Msg.Action.Param.Intent = intent
|
|||
|
return m
|
|||
|
}
|
|||
|
|
|||
|
// SetPkg sets app package name.
|
|||
|
func (m *Message) SetPkg(pkg string) *Message {
|
|||
|
m.Hps.Msg.Action.Param.AppPkgName = pkg
|
|||
|
return m
|
|||
|
}
|
|||
|
|
|||
|
// SetCustomize set ext info.
|
|||
|
func (m *Message) SetCustomize(key, val string) *Message {
|
|||
|
mp := map[string]string{key: val}
|
|||
|
m.Hps.Ext.Customize = append(m.Hps.Ext.Customize, mp)
|
|||
|
return m
|
|||
|
}
|
|||
|
|
|||
|
// SetBiTag set biTag.
|
|||
|
func (m *Message) SetBiTag(tag string) *Message {
|
|||
|
m.Hps.Ext.BiTag = tag
|
|||
|
return m
|
|||
|
}
|
|||
|
|
|||
|
// SetIcon sets icon.
|
|||
|
func (m *Message) SetIcon(url string) *Message {
|
|||
|
m.Hps.Ext.Icon = url
|
|||
|
return m
|
|||
|
}
|
|||
|
|
|||
|
// JSON encode the message.
|
|||
|
func (m *Message) JSON() (res string, err error) {
|
|||
|
bytes, err := json.Marshal(m)
|
|||
|
if err != nil {
|
|||
|
return
|
|||
|
}
|
|||
|
res = string(bytes)
|
|||
|
return
|
|||
|
}
|