項(xiàng)目需求:后臺(tái)管理人員向App用戶推送消息。
- 注:極光推送有多種推送方式供用戶選擇,很方便,而且 github 上也講得很明白,再加上極光文檔,就更加清晰了(文末已附上鏈接)。筆者此處用到了三種方式:all、tag和alias(別名)。
溫馨提示:本文中(僅限本文),筆者附的代碼主要用于自己記錄,參考者要以文末的 github 中的示例和極光文檔為主,這樣參考者會(huì)更加容易梳理,因?yàn)間ithub上沒(méi)有邏輯代碼的干擾,而且推送方式也比較全面。
1、安裝包:
go get github.com/ylywyn/jpush-api-go-client
2、完整代碼:
package ceControllers
import (
"fmt"
jpushclient "github.com/ylywyn/jpush-api-go-client"
)
/*
極光推送:go向Android推送消息
*/
func JpushGoSend(tags []string, aliasPhone []string, context string, state, jpushState int) error {
//state:區(qū)分推送方式; jpushState :區(qū)分推送消息的類別;
//構(gòu)建要推送的平臺(tái): jpushclient.Platform
var pf jpushclient.Platform
pf.Add(jpushclient.ANDROID)
//構(gòu)建接收聽(tīng)眾: jpushclient.Audience
var ad jpushclient.Audience
if state == JpushTag {
//推送 通知公告
if tags[0] == AdminLevelOne {
//極光推送 - 所有
//一級(jí)管理員發(fā)布,所有人員接收
ad.All()
} else {
//極光推送 - tag
//二級(jí)或者三級(jí)管理員發(fā)布,下屬app人員接收
ad.SetTag(tags)
}
} else {
//極光推送 - 別名 ,用app用戶的登錄手機(jī)號(hào)當(dāng)作別名
ad.SetAlias(aliasPhone)
}
//構(gòu)建通知 jpushclient.Notice,或者消息: jpushclient.Message
//Notice
var notice jpushclient.Notice
notice.SetAlert("alert_test")
if jpushState == JpushStateNotice {
//推送通知公告
notice.SetAndroidNotice(&jpushclient.AndroidNotice{Title: "通知公告", Alert: context})
} else {
//推送新單
notice.SetAndroidNotice(&jpushclient.AndroidNotice{Title: "新派xx單", Alert: context})
}
//構(gòu)建jpushclient.PayLoad
payload := jpushclient.NewPushPayLoad()
payload.SetPlatform(&pf)
payload.SetAudience(&ad)
payload.SetNotice(¬ice)
bytes, _ := payload.ToBytes()
fmt.Printf("%s\r\n", string(bytes))
//構(gòu)建PushClient,發(fā)出推送
c := jpushclient.NewPushClient(masterSecret, appKey)
r, err := c.Send(bytes)
if err != nil {
fmt.Printf("err:%s", err.Error())
return err
} else {
fmt.Printf("ok:%s", r)
}
return nil
}
github鏈接:https://github.com/ylywyn/jpush-api-go-client
極光文檔鏈接:https://docs.jiguang.cn/jpush/server/push/rest_api_v3_push