You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
179 lines
4.1 KiB
179 lines
4.1 KiB
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 |
|
}
|
|
|