美文网首页
Go - 手机App消息推送(极光推送)

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

作者: 灵魂深灵 | 来源:发表于2020-03-02 15:47 被阅读0次

    项目需求:后台管理人员向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(&notice)
    
        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消息推送(极光推送)

          本文链接:https://www.haomeiwen.com/subject/nszkactx.html