項目需求:后臺管理人員向App用戶推送消息插勤。
- 注:極光推送有多種推送方式供用戶選擇赐稽,很方便顽聂,而且 github 上也講得很明白潭枣,再加上極光文檔殃恒,就更加清晰了(文末已附上鏈接)晒旅。筆者此處用到了三種方式:all馏臭、tag和alias(別名)彻况。
溫馨提示:本文中(僅限本文)挺庞,筆者附的代碼主要用于自己記錄晰赞,參考者要以文末的 github 中的示例和極光文檔為主,這樣參考者會更加容易梳理选侨,因為github上沒有邏輯代碼的干擾掖鱼,而且推送方式也比較全面。
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)建要推送的平臺: jpushclient.Platform
var pf jpushclient.Platform
pf.Add(jpushclient.ANDROID)
//構(gòu)建接收聽眾: jpushclient.Audience
var ad jpushclient.Audience
if state == JpushTag {
//推送 通知公告
if tags[0] == AdminLevelOne {
//極光推送 - 所有
//一級管理員發(fā)布褐墅,所有人員接收
ad.All()
} else {
//極光推送 - tag
//二級或者三級管理員發(fā)布拆檬,下屬app人員接收
ad.SetTag(tags)
}
} else {
//極光推送 - 別名 ,用app用戶的登錄手機號當作別名
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