【友盟+】开发者社区

可以直接用的C#示例

发表于 2015-8-4 11:05:45 | |阅读模式

友盟推送更新
友盟推送更新 发表于 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报错

您需要登录后才可以发帖 登录 | 立即注册

本版积分规则

发表主题

精彩推荐

C罗领衔葡萄牙队强阵出击 中超名将连场首发
  中新网客户端6月20日电 北京时间20日晚8时,2018俄罗斯世界杯B组次轮葡萄牙队与摩洛哥队的较量即将在
北京冬奥会场馆“冰坛”明年完工
  北京冬奥会场馆“冰坛”明年完工 将成中国首座标准冰壶场馆   北京市重大项目建设指挥部办公室17日发
冬奥会“冰坛”地上施工 将成中国首块标准冰壶冰场
  冬奥会“冰坛”开始地上施工   建成后将成为我国第一块标准冰壶冰场 可对外开放服务于市民冰上运动

关注我们

新浪微博
微信

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

返回列表