Send push notification on Apple (APNS) on c#.net

來源:互聯網
上載者:User

標籤:

原文: http://apns-c-sharp-net-vikram-jain.blogspot.com

=======================Please, Install your certificate *.p12 on pc, and take firend name use here for refernce.Please, set configuration file : <appSettings> <add key="FriendName" value="Apple Production IOS Push Services: com.ABC.XYZ"/>    <add key="ProductionKeyFriendName" value="Production"/>     </appSettings>==============Send, push as per below in your class to call apns class:   Cls_APNS _Cls_APNS = new class_apns();  //Here pass custom fiels as per seprated by ";" ann asssigb value by "key=value;key=value"   _Cls_APNS.PushMessage("Message","DeviceToken",0,"id=12;name=ABC");==================Please create a class as per below (class_apns.cs). :using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Net.Security;using System.Net.Sockets;using System.Security.Cryptography.X509Certificates;using System.Text;using System.Configuration;using System.Data;using System.Security.Authentication;using System.IO;namespace Push.Class{    public class class_apns    {        String CertificateName = "";        String CertificatePwd = "";        String FriendName = "Apple Development IOS Push Services: com.ABC.XYZ";        String ProductionKeyFriendName = "Production";        SslStream sslStream;             public Cls_APNS()        {                             FriendName = ConfigurationManager.AppSettings["FriendName"].ToString();            ProductionKeyFriendName = ConfigurationManager.AppSettings["ProductionKeyFriendName"].ToString();                }        public bool ConnectToAPNS()        {            X509Certificate2Collection certs = new X509Certificate2Collection();            // Add the Apple cert to our collection            certs.Add(getServerCert());            // Apple development server address            string apsHost;            if (getServerCert().ToString().Contains(ProductionKeyFriendName))                apsHost = "gateway.push.apple.com";            else                apsHost = "gateway.sandbox.push.apple.com";            // Create a TCP socket connection to the Apple server on port 2195            TcpClient tcpClient = new TcpClient(apsHost, 2195);            // Create a new SSL stream over the connection            sslStream = new SslStream(tcpClient.GetStream());            // Authenticate using the Apple cert            sslStream.AuthenticateAsClient(apsHost, certs, SslProtocols.Default, false);            //PushMessage();            return true;        }        private X509Certificate getServerCert()        {            X509Certificate test = new X509Certificate();            //Open the cert store on local machine                    X509Store store = new X509Store(StoreName.My, StoreLocation.CurrentUser);            if (store != null)            {                // store exists, so open it and search through the certs for the Apple Cert                        store.Open(OpenFlags.OpenExistingOnly | OpenFlags.ReadOnly);                X509Certificate2Collection certs = store.Certificates;                if (certs.Count > 0)                {                    int i;                    for (i = 0; i < certs.Count; i++)                    {                        X509Certificate2 cert = certs[i];                        if (cert.FriendlyName.Contains(FriendName))                        {                            //Cert found, so return it.                            return certs[i];                        }                    }                }                return test;            }            return test;        }        private  byte[] HexToData(string hexString)        {            if (hexString == null)                return null;            if (hexString.Length % 2 == 1)                hexString = ‘0‘ + hexString; // Up to you whether to pad the first or last byte            byte[] data = new byte[hexString.Length / 2];            for (int i = 0; i < data.Length; i++)                data[i] = Convert.ToByte(hexString.Substring(i * 2, 2), 16);            return data;        }        public bool PushMessage(string Mess, string DeviceToken, int Badge, string Custom_Field)        {                          ConnectToAPNS();                 List<string> Key_Value_Custom_Field = new List<string>();            String cToken = DeviceToken;            String cAlert = Mess;            int iBadge = Badge;            // Ready to create the push notification            byte[] buf = new byte[256];            MemoryStream ms = new MemoryStream();            BinaryWriter bw = new BinaryWriter(ms);            bw.Write(new byte[] { 0, 0, 32 });            byte[] deviceToken = HexToData(cToken);            bw.Write(deviceToken);            bw.Write((byte)0);            // Create the APNS payload - new.caf is an audio file saved in the application bundle on the device            string msg = "";                  msg = "{\"aps\":{\"alert\":\"" + cAlert + "\",\"badge\":\"" + iBadge.ToString() + "\",\"sound\":\"noti.aiff\"}";                    String PayloadMess = "";            if (string.IsNullOrWhiteSpace(Custom_Field) == false)            {                List<string> list_Custom_Field = Custom_Field.Split(‘;‘).ToList();                if (list_Custom_Field.Count > 0)                {                    for (int indx = 0; indx < list_Custom_Field.Count; indx++)                    {                        Key_Value_Custom_Field = list_Custom_Field[indx].Split(‘=‘).ToList();                        if (Key_Value_Custom_Field.Count > 1)                        {                            if (PayloadMess != "") PayloadMess += ", ";                                                    PayloadMess += "\"" + Key_Value_Custom_Field[0].ToString() + "\":\"" + Key_Value_Custom_Field[1].ToString() + "\"";                        }                    }                }            }            if (PayloadMess != "")            {                msg += ", " + PayloadMess;            }            msg += "}";            // Write the data out to the stream            bw.Write((byte)msg.Length);            bw.Write(msg.ToCharArray());            bw.Flush();            if (sslStream != null)            {                sslStream.Write(ms.ToArray());                return true;            }            return false;        }        }}

 

Send push notification on Apple (APNS) on c#.net

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.