Go - 手机App消息推送(极光推送)

项目需求:后台管理人员向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:区分推送方式;  jpushState :区分推送消息的类别;
    //构建要推送的平台: jpushclient.Platform
    var pf jpushclient.Platform
    pf.Add(jpushclient.ANDROID)

    //构建接收听众: jpushclient.Audience
    var ad jpushclient.Audience
    if state == JpushTag {
        //推送 通知公告
        if tags[0] == AdminLevelOne {
            //极光推送 - 所有
            //一级管理员发布,所有人员接收
            ad.All()
        } else {
            //极光推送 - tag
            //二级或者三级管理员发布,下属app人员接收
            ad.SetTag(tags)
        }
    } else {
        //极光推送 - 别名 ,用app用户的登录手机号当作别名
        ad.SetAlias(aliasPhone)
    }

    //构建通知 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})
    }

    //构建jpushclient.PayLoad
    payload := jpushclient.NewPushPayLoad()
    payload.SetPlatform(&pf)
    payload.SetAudience(&ad)
    payload.SetNotice(¬ice)

    bytes, _ := payload.ToBytes()
    fmt.Printf("%s\r\n", string(bytes))

    //构建PushClient,发出推送
    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

你可能感兴趣的:(Go - 手机App消息推送(极光推送))