IPhone Push Notification from c#

madjad

New Member
We have been using apple push notification service and we can send push message from gateway.sandbox.push.apple.com,All I know this address is test, so we have to use real address gateway.push.apple.com, we can not send push message from this address. Could you help us?Our code is;\[code\]public void pushMessage(string deviceID, string Mesaj){ int port = 2195; String hostname = "gateway.sandbox.push.apple.com"; // TEST //String hostname = "gateway.push.apple.com"; // REAL // @"cert.p12"; String certificatePath = HttpContext.Current.Server.MapPath("cert.p12"); //X509Certificate2 clientCertificate = new X509Certificate2(certificatePath, ""); X509Certificate2 clientCertificate = new X509Certificate2(System.IO.File.ReadAllBytes(certificatePath), "", X509KeyStorageFlags.MachineKeySet |\[/code\]X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.Exportable);\[code\] X509Certificate2Collection certificatesCollection = new X509Certificate2Collection(clientCertificate); TcpClient client = new TcpClient(hostname, port); SslStream sslStream = new SslStream(client.GetStream(), false, new RemoteCertificateValidationCallback(ValidateServerCertificate), null); try { sslStream.AuthenticateAsClient(hostname, certificatesCollection, SslProtocols.Tls, true); } catch (Exception e) { throw (e); client.Close(); return; } MemoryStream memoryStream = new MemoryStream(); BinaryWriter writer = new BinaryWriter(memoryStream); writer.Write((byte)0); //The command writer.Write((byte)0); //The first byte of the deviceId length (big-endian first byte) writer.Write((byte)32); //The deviceId length (big-endian second byte) writer.Write(HexStringToByteArray(deviceID.ToUpper())); String payload = "{\"aps\":{\"alert\":\"" + Mesaj + "\",\"badge\":0,\"sound\":\"default\"}}"; writer.Write((byte)0); writer.Write((byte)payload.Length); byte[] b1 = System.Text.Encoding.UTF8.GetBytes(payload); writer.Write(b1); writer.Flush(); byte[] array = memoryStream.ToArray(); sslStream.Write(array); sslStream.Flush(); client.Close();}\[/code\]
 
Back
Top