【友盟+】开发者社区

可以直接用的C#示例

友盟推送更新 发表于 2017-3-17 09:21:54 |

友盟推送更新
友盟推送更新 发表于 2015-8-4 11:05:45 | 显示全部楼层 |阅读模式
本帖最后由 友盟推送更新 于 2015-8-4 17:29 编辑

这是一个ios广播的例子,直接替换里面的appkey和appMasterSecret就可以用了。感谢网友@浓眉大眼提供初始版本。


public class UmengDemo
{

    public static void post5()
    {
        try
        {
            string ts = GetTimeStamp();
            string str = "{\"appkey\":\"XXXXXXX\",\"timestamp\":" + ts + ",\"type\":\"broadcast\",\"payload\":{\"aps\":{ \"alert\":\"sucess\"}},\"policy\":{},\"production_mode\":\"false\",\"description\":\"xxx\"}";
///组播:
///string str = "{\"appkey\":\"XXXXXXXXXXXXXXXXXXXX\",\"timestamp\":" + ts +
///                ",\"type\":\"groupcast\",\"filter\":{\"where\":{\"and\":[{\"tag\":\"6\"}]}},\"payload\":{\"aps\":{ ///\"alert\":\"sucess++\",\"sound\":\"Notification\",\"badge\":1}},\"policy\":{},\"production_mode\":\"false\",\"description\":\"成功++\"}";
            string app_master_secret = "XXXXXXXXXX";
            string url = "http://msg.umeng.com/api/send"
            string mysign = getMD5Hash("POST" + url + str + app_master_secret);

            url = url + "?sign=" + mysign;
            HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
            request.Method = "POST";


            byte[] bs = Encoding.UTF8.GetBytes(str);
            request.ContentLength = bs.Length;
            using (Stream reqStream = request.GetRequestStream())
            {
                reqStream.Write(bs, 0, bs.Length);
                reqStream.Close();
            }
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            HttpStatusCode statusCode = response.StatusCode;
        }
        catch (WebException e)
        {
            Console.WriteLine("This program is expected to throw WebException on successful run." +
                                "\n\nException Message :" + e.Message);
            if (e.Status == WebExceptionStatus.ProtocolError)
            {
                Console.WriteLine("Status Code : {0}", ((HttpWebResponse)e.Response).StatusCode);
                Console.WriteLine("Status Description : {0}", ((HttpWebResponse)e.Response).StatusDescription);
                Stream myResponseStream = ((HttpWebResponse)e.Response).GetResponseStream();
                StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));
                string retString = myStreamReader.ReadToEnd();
                Console.WriteLine("return content:", retString);
            }
        }
    }

    /// <summary>
    /// 计算MD5
    /// </summary>
    /// <param name="s"></param>
    /// <returns></returns>
    public static String getMD5Hash(String str)
    {
        MD5 md5 = new MD5CryptoServiceProvider();
        byte[] result = md5.ComputeHash(System.Text.Encoding.UTF8.GetBytes(str));
        StringBuilder strReturn = new StringBuilder();

        for (int i = 0; i < result.Length; i++)
        {
            strReturn.Append(Convert.ToString(result[    i   ], 16).PadLeft(2, '0'));
        }

        return strReturn.ToString().PadLeft(32, '0');

    }


        /// <summary>
        /// 获取时间戳
        /// </summary>
        /// <returns></returns>
        public static string GetTimeStamp()
        {
            TimeSpan ts = DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0);
            return Convert.ToInt64(ts.TotalSeconds).ToString();
        }

}



上一篇:推送的消息有时接收不到
下一篇:友盟调用api报错




tt_tt
tt_tt 发表于 2015-8-4 17:26:30 | 显示全部楼层
子问 发表于 2015-8-4 17:13
用不了啊,返回500错误!

加入
catch (WebException e)
        {
            Console.WriteLine("This program is expected to throw WebException on successful run." +
                                "\n\nException Message :" + e.Message);
            if (e.Status == WebExceptionStatus.ProtocolError)
            {
                Console.WriteLine("Status Code : {0}", ((HttpWebResponse)e.Response).StatusCode);
                Console.WriteLine("Status Description : {0}", ((HttpWebResponse)e.Response).StatusDescription);
                Stream myResponseStream = ((HttpWebResponse)e.Response).GetResponseStream();
                StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));
                string retString = myStreamReader.ReadToEnd();
                Console.WriteLine("return content:", retString);
            }
        }
看看返回的具体错误是什么

xiaochu
xiaochu 发表于 2015-8-6 13:45:10 | 显示全部楼层
500错误,
具体的返回值:{"ret":"FAIL","data":{"error_code":"1002"}}
请教怎么处理    1002        请求参数payload中没有body

友盟推送更新
友盟推送更新 发表于 2015-8-9 09:57:25 | 显示全部楼层
xiaochu 发表于 2015-8-6 13:45
500错误,
具体的返回值:{"ret":"FAIL","data":{"error_code":"1002"}}
请教怎么处理    1002        请求参数pay ...

我给的这是ios的例子。android的话你需要改一下这句:
string str = "{\"appkey\":\"XXXXXXX\",\"timestamp\":" + ts + ",\"type\":\"broadcast\",\"payload\":{\"aps\":{ \"alert\":\"sucess\"}},\"policy\":{},\"production_mode\":\"false\",\"description\":\"xxx\"}";
把这里面的str变量改成你要发送的内容。具体可以参考api文档http://dev.umeng.com/push/android/api-doc#2

51huodi
51huodi 发表于 2016-1-25 16:14:51 | 显示全部楼层
上面的代码我直接复制到项目中了、然后修改了  android 版本的  str、但是 提示  签名错误


重霄
重霄 发表于 2016-5-6 15:51:31 | 显示全部楼层
51huodi 发表于 2016-1-25 16:14
上面的代码我直接复制到项目中了、然后修改了  android 版本的  str、但是 提示  签名错误 ...

你好,你这个问题解决了吗

的确bug少
的确bug少 发表于 2016-9-1 15:10:27 | 显示全部楼层

sky_dhx
sky_dhx 发表于 2016-11-9 17:01:15 | 显示全部楼层
的确bug少 发表于 2016-9-1 15:10
这段代码我直接用,改了appkey和appMasterSecret后,一直报400错误是因为什么原因啊 ...

我的也是报错400



fangjie008
fangjie008 发表于 2017-3-17 09:21:54 | 显示全部楼层
我完全对照着java sdk改写的.net c# sdk ,生产环境实际使用中,请拿去不谢

请搜索:友盟消息推送SDK(C#版本),完全改变自java,生产使用
您需要登录后才可以发帖 登录 | 立即注册

本版积分规则

发表主题

精彩推荐

大数据创新在广告营销中的应用(上)
当大数据遇到广告营销,将擦出哪些火花?酷云互动让电视媒体充满数据智慧,收视数据更加真实,受众择优变得
新零售三问:如何切入、CIO如何发力、2018年趋势?
阿里巴巴的无人淘咖啡店、Amazon收购全食以及线下小米之家的激增。从巨头的布局和进程可以预见,新零售将会
Xcode9 beat2 编译出错
今天安装了Xcode9 beat2 版本,感觉还不错,就兴冲冲的去编译公司项目,然后发现悲了个催了 ,,编译不通

关注我们

新浪微博
微信

欢迎关注友盟官方微博微信!

在线客服
返回顶部 返回列表