// Package asPush ----------------------------- // @file : unipush2V0ParamsBuilder.go // @author : JJXu // @contact : wavingbear@163.com // @time : 2024/12/24 09:27 // ------------------------------------------- package asPush import ( "encoding/json" "fmt" ) func NewUnipush2V0ParamsBuilder() *Unipush2V0ParamsBuilder { builder := &Unipush2V0ParamsBuilder{} builder.InitParams() return builder } type Unipush2V0ParamsBuilder struct { Params map[string]any } func (u *Unipush2V0ParamsBuilder) InitParams() { u.Params = map[string]any{ "push_clientid": nil, //手机端app获取到的cid,可以[]string或者string类型。如果是nil会向所有客户端进行app推送 "title": "", //标题 "content": "", //消息内容 "force_notification": true, //用于显示横幅,默认为true "payload": map[string]any{}, //这个是自定义参数 "options": map[string]any{}, //这个是手机厂商的参数 } } func (u *Unipush2V0ParamsBuilder) ClientId(value ...string) { fmt.Println("inputClientId:", value) switch len(value) { case 0: return case 1: u.Params["push_clientid"] = value[0] default: u.Params["push_clientid"] = value } } func (u *Unipush2V0ParamsBuilder) Title(value string) { u.Params["title"] = value } func (u *Unipush2V0ParamsBuilder) Content(value string) { u.Params["content"] = value } func (u *Unipush2V0ParamsBuilder) forceNotification(value bool) { u.Params["force_notification"] = value } // 自定义参数 ViewPathOfPayload func (u *Unipush2V0ParamsBuilder) ViewPathOfPayload(value string) { u.Params["payload"].(map[string]any)["viewPath"] = value } func (u *Unipush2V0ParamsBuilder) OptionsOfParams(options ...IUnipushOptionsBuilder) { for _, option := range options { u.Params = option.BuildOptionParams(u.Params) } } func (u *Unipush2V0ParamsBuilder) JsonData() []byte { data, _ := json.Marshal(u.Params) return data }