.net平台藉助第三方推送服務在推送Android訊息(極光推送)

來源:互聯網
上載者:User

標籤:ade   private   json格式   ext   ons   window   android手機   山寨   開始   

.net平台藉助第三方推送服務在推送Android訊息(極光推送)

最近做的.net項目(Windows Service)需要向Android手機發送推送訊息,真是有點困難,沒有搞過就不停的搜文檔,最後看到了一個開源項目PushSharp,可以在.net平台推送IOS,Android,Windows Phone等裝置訊息,大喜,然後先做了IOS的,成功了,但是做Android的時候遇到了問題,一直推送不成功,程式執行了,但是推送一直出不來,後來費勁的在網上搜,沒有找到,最後放棄使用這種推送Android,另尋出路,隨後找到了一種C2DM雲端推送功能,但是問題又出現了,(1)C2DM內建於Android的2.2系統上,無法相容老的1.6到2.1系統;(2)C2DM需要依賴於Google官方提供的C2DM伺服器,由於國內的網路環境,這個服務經常不可用,如果想要很好的使用,我們的App Server必須也在國外,這個恐怕不是每個開發人員都能夠實現的;(3)不像在iPhone中,他們把硬體系統整合在一塊了。所以對於我們開發人員來說,如果要在我們的應用程式中使用C2DM的推送功能,因為對於不同的這種硬體廠商平台,比如摩托羅拉、華為、中興做一個手機,他們可能會把Google的這種服務去掉,尤其像在國內就很多這種,把Google這種原生的服務去掉。買了一些像什麼山寨機或者是華為這種國產機,可能Google的服務就沒有了。而像在國外出的那些可能會內建。沒辦法了,最後轉到了第三方推送服務平台,極光推送,下面將介紹怎麼使用極光推送。

1,首先需要將你的app在極光官網上進行註冊,擷取一個ApiKey,一個APIMasterSecret(密碼),將這兩個值儲存在設定檔(app/web.config)中,具體手機開發端需要做什麼操作我們.net平台不管

 

 

<appSettings>    <add key="ApiKey" value="**********"/>    <add key="APIMasterSecret" value="*******"/> </appSettings>

 

2,讀取配置中的值

private readonly string ApiKey = "";private readonly string APIMasterSecret = "";ApiKey = ConfigurationManager.AppSettings["ApiKey"].ToString();//Android ApiKeyAPIMasterSecret = ConfigurationManager.AppSettings["APIMasterSecret"].ToString();//Android密碼

3,開始推送方法

        /// <summary>        /// Android極光推送        /// </summary>        /// <param name="RegistrationID">裝置號</param>        public void PushAndroid(string RegistrationID)        {            try            {                Random ran = new Random();                int sendno = ran.Next(1, 2100000000);//隨機產生的一個編號                string app_key = ApiKey;                string masterSecret = APIMasterSecret;                int receiver_type = 5;//接收者類型。2、指定的 tag。3、指定的 alias。4、廣播:對 app_key 下的所有使用者推送訊息。5、根據 RegistrationID 進行推送。當前只是 Android SDK r1.6.0 版本支援                string receiver_value = RegistrationID;                int msg_type = 1;//1、通知2、自訂訊息(只有 Android 支援)                string msg_content = "{\"n_builder_id\":\"00\",\"n_title\":\"" + Title + "\",\"n_content\":\"" + Content + "\"}";//訊息內容                string platform = "android";//目標使用者終端手機的平台類型,如: android, ios 多個請使用逗號分隔。                string verification_code = GetMD5Str(sendno.ToString(), receiver_type.ToString(), receiver_value,masterSecret);//驗證串,用於校正發送的合法性。MD5                string postData = "sendno=" + sendno;                postData += ("&app_key=" + app_key);                postData += ("&masterSecret=" + masterSecret);                postData += ("&receiver_type=" + receiver_type);                postData += ("&receiver_value=" + receiver_value);                postData += ("&msg_type=" + msg_type);                postData += ("&msg_content=" + msg_content);                postData += ("&platform=" + platform);                postData += ("&verification_code=" + verification_code);                //byte[] data = encoding.GetBytes(postData);                byte[] data = Encoding.UTF8.GetBytes(postData);                string resCode = GetPostRequest(data);//調用極光的介面擷取傳回值                JpushMsg msg = Newtonsoft.Json.JsonConvert.DeserializeObject<JpushMsg>(resCode);//定義一個JpushMsg類,包含傳回值資訊,將返回的json格式字串轉成JpushMsg對象            }            catch (Exception ex)            {                            }        }

4,MD5加密驗證字串,用於調用介面的時候,極光將做驗證使用

        /// <summary>        /// MD5字串        /// </summary>        /// <param name="paras">參數數組</param>        /// <returns>MD5字串</returns>        public string GetMD5Str(params string [] paras)        {            string str = "";            for(int i=0;i<paras.Length;i++)            {                str += paras[i];            }            byte[] buffer = MD5.Create().ComputeHash(Encoding.UTF8.GetBytes(str));            string md5Str = string.Empty;            for (int i = 0; i < buffer.Length; i++)            {                md5Str = md5Str + buffer[i].ToString("X2");            }            return md5Str;        }

5,http Post方式調用極光的推送服務

 /// <summary>        /// Post方式請求擷取傳回值        /// </summary>        /// <param name="data"></param>        /// <returns></returns>        public string GetPostRequest(byte[] data)        {            HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create("http://api.jpush.cn:8800/v2/push");            myRequest.Method = "POST";//極光http請求方式為post            myRequest.ContentType = "application/x-www-form-urlencoded";//按照極光的要求            myRequest.ContentLength = data.Length;            Stream newStream = myRequest.GetRequestStream();            // Send the data.            newStream.Write(data, 0, data.Length);            newStream.Close();            // Get response            var response = (HttpWebResponse)myRequest.GetResponse();            using (var reader = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding("UTF-8")))            {                string result = reader.ReadToEnd();                reader.Close();                response.Close();                return result;            }        }

6,定義一個類,接收傳回值

public class JpushMsg    {        private string sendno;//編號        public string Sendno        {            get { return sendno; }            set { sendno = value; }        }        private string msg_id;//資訊編號        public string Msg_id        {            get { return msg_id; }            set { msg_id = value; }        }        private string errcode;//返回碼        public string Errcode        {            get { return errcode; }            set { errcode = value; }        }        private string errmsg;//錯誤資訊        public string Errmsg        {            get { return errmsg; }            set { errmsg = value; }        }    }

.net平台藉助第三方推送服務在推送Android訊息(極光推送)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.