Go - 手機(jī)App消息推送(極光推送)

項(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(&notice)

    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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容