ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

c# 服务端接入个推指定对象消息推送

2021-08-24 14:02:01  阅读:115  来源: 互联网

标签:string c# request item result using 推送 服务端


个推消息推送主要步骤:1.获取鉴权token 2.发送推送消息

1.获取鉴权token(会过期,需要间隔时间获取一次):
tokenUrl = "https://restapi.getui.com/v2/" + appId + "/auth";
        private string GetToken()
        {
            long nowTime ;    //当前的时间戳 毫秒级   
            string sign = appKey + nowTime + masterSecret;
            string sha256Sign = SHA256EncryptString(sign);  //用sha256加密
            string postParam = "{\"sign\":\"" + sha256Sign + "\",\"timestamp\":\"" + nowTime + "\",\"appkey\":\""+ appKey + "\"}";   //json格式的post参数 appkey masterSecret appid 申请应用后会有

            return HttpRequestPost(tokenUrl, postParam);
        }

        private string HttpRequestPost(string Url, string Param)
        {
            string result = string.Empty;
            try
            {
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
                request.Timeout = Timeout;
                request.ContentType = "application/json;charset=utf-8";
                request.ReadWriteTimeout = Timeout;
                request.Proxy = null;
                request.ServicePoint.Expect100Continue = false;
                request.KeepAlive = false;
                request.ServicePoint.ConnectionLimit = 1000;    //对象最大连接数

                request.Method = "POST";

                byte[] data = Encoding.UTF8.GetBytes(Param);
                using (Stream requestStream = request.GetRequestStream())
                {
                    using (StreamWriter swrite = new StreamWriter(requestStream))
                    {
                        swrite.Write(data);
                    }
                }
                HttpWebResponse wbResponse = (HttpWebResponse)request.GetResponse();
                using (Stream responseStream = wbResponse.GetResponseStream())
                {
                    using (StreamReader sread = new StreamReader(responseStream))
                    {
                        result = sread.ReadToEnd();
                    }
                }
            }
            catch (Exception ex)
            {
                 Console.WriteLine("GeTuiMsgTask.HttpRequestPost post failed url={0} ex={1}", Url, ex);
            }
            return result;
        }

        private string SHA256EncryptString(string data)
        {
            byte[] bytes = Encoding.UTF8.GetBytes(data);
            byte[] hash = SHA256Managed.Create().ComputeHash(bytes);

            StringBuilder builder = new StringBuilder();
            for (int i = 0; i < hash.Length; i++)
            {
                builder.Append(hash[i].ToString("x2"));
            }
            return builder.ToString();
        }

2. 发送推送消息:必要参数
string cid 客户端给过来的clientid(目标用户)
string requestId 请求唯一标识号,10-32位之间;如果request_id重复,会导致消息丢失
string title, 推送消息标题
string content 推送内容

pushUrl = "https://restapi.getui.com/v2/" + appId + "/push/single/cid"; 推送url
    private void SendMsgNotification(object o) { MsgTaskItem item = (MsgTaskItem)o; string postParam = "{\"request_id\":\"" + item.RequestId + "\",\"audience\":{\"cid\":[\"" + item.Cid + "\"]}," + "\"push_message\":{\"notification\":{\"title\":\"" + item.Title + "\",\"body\":\"" + item.Content + "\",\"click_type\":\"none\",\"url\":\"\"}}}"; string result = HttpRequestPost(pushUrl, postParam); //返回结果成功也是json格式字符串 } 更具体的查看官方文档:https://docs.getui.com/getui/server/rest_v2/push/
在线http接口测试网站:https://www.sojson.com/http/test.html

 

标签:string,c#,request,item,result,using,推送,服务端
来源: https://www.cnblogs.com/darkif/p/15180000.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有