C# iPhone push server?
صفحه اصلي

C# iPhone push server?

Im attempting to write a push server for the iPhone in C#. I have the following code:

        // Create a TCP/IP client socket.         using (TcpClient client = new TcpClient())         {             client.Connect("gateway.sandbox.push.apple.com", 2195);             using (NetworkStream networkStream = client.GetStream())             {                 Console.WriteLine("Client connected.");                  X509Certificate clientCertificate = new X509Certificate(@"certfile.p12", passwordHere);                 X509CertificateCollection clientCertificateCollection = new X509CertificateCollection(new X509Certificate[1] { clientCertificate });                  // Create an SSL stream that will close the client's stream.                 SslStream sslStream = new SslStream(                     client.GetStream(),                     false,                     new RemoteCertificateValidationCallback(ValidateServerCertificate),                     null                     );                  try                 {                     sslStream.AuthenticateAsClient("gateway.sandbox.push.apple.com");                 }                 catch (AuthenticationException e)                 {                     Console.WriteLine("Exception: {0}", e.Message);                     if (e.InnerException != null)                     {                         Console.WriteLine("Inner exception: {0}", e.InnerException.Message);                     }                     Console.WriteLine("Authentication failed - closing the connection.");                     client.Close();                     return;                 }             } 


Only I keep receiving a exception: "A call to SSPI failed, see Inner exception" Inner Exception -> "The message received was unexpected or badly formatted."

Does anyone have any idea whats going wrong here?

declaring global variables in iPhone project


Where's the difference between setObject:forKey: and setValue:forKey: in NSMutableDictionary?
Figured it out. Why is my UIImageView blurred?Replaced sslStream.AuthenticateAsClient("gateway.sandbox.push.apple.com"); with sslStream.AuthenticateAsClient("gateway.sandbox.push.apple.com", clientCertificateCollection, SslProtocols.Default, false); And registered the certificates on the PC.. SHowing Activity Indicator View Using Thread Shows This Error in gdb? Edit: Here is the code for creating a payload as requested:. Unable to push notifications to iPhone in .NET - .PEM certificate problem?
    private static byte[] GeneratePayload(byte [] deviceToken, string message, string sound)     {         MemoryStream memoryStream = new MemoryStream();          // Command         memoryStream.WriteByte(0);          byte[] tokenLength = BitConverter.GetBytes((Int16)32);         Array.Reverse(tokenLength);         // device token length         memoryStream.Write(tokenLength, 0, 2);          // Token         memoryStream.Write(deviceToken, 0, 32);          // String length         string apnMessage = string.Format ( "{{\"aps\":{{\"alert\":{{\"body\":\"{0}\",\"action-loc-key\":null}},\"sound\":\"{1}\"}}}}",             message,             sound);          byte [] apnMessageLength = BitConverter.GetBytes((Int16)apnMessage.Length);         Array.Reverse ( apnMessageLength );         // message length         memoryStream.Write(apnMessageLength, 0, 2);          // Write the message         memoryStream.Write(System.Text.ASCIIEncoding.ASCII.GetBytes(apnMessage), 0, apnMessage.Length);          return memoryStream.ToArray();     } // End of GeneratePayload 
What's the difference between using obj-c accessors and using dot syntax?UIWebView scrollBy replacement


Hide the tab bar when displaying the ABPeoplePickerNavigationController?
From Zenox's comment: use a different version of AuthenticateAsClient.
sslStream.AuthenticateAsClient("gateway.sandbox.push.apple.com", clientCertificateCollection, SslProtocols.Default, false);


Other way is just to use X509Certificate2 and X509CertificateCollection2 classes..


I recently used Growl For Windows to push messages to the Prowl client on the IPhone from .Net code. So you might receive your functionatlity without writing a push server yourself..


The "The message received was unexpected or badly formatted." error usually comes when you did not register the p12 certificate in Windows. (Under Vista, just double click on the p12 file and the import wizard will open).


In my case I had to delete all the certificate from my windows 8 and then re-install them in rule to send push notifications to apple device. . I did not know why my certificates stop working, I am searching for the correct reason and will update here soon..

76 out of 100 based on 71 user ratings 586 reviews