C# iPhone push server?

前端 未结 6 891
一生所求
一生所求 2020-12-22 18:16

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 clie         


        
相关标签:
6条回答
  • 2020-12-22 18:39

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

    0 讨论(0)
  • 2020-12-22 18:40

    Figured it out. 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.

    Edit: Here is the code for creating a payload as requested:

        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
    
    0 讨论(0)
  • 2020-12-22 18:40

    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)

    0 讨论(0)
  • 2020-12-22 18:50

    From Zenox's comment: use a different version of AuthenticateAsClient

    sslStream.AuthenticateAsClient("gateway.sandbox.push.apple.com", clientCertificateCollection, SslProtocols.Default, false);
    0 讨论(0)
  • 2020-12-22 18:51

    Other way is just to use X509Certificate2 and X509CertificateCollection2 classes.

    0 讨论(0)
  • 2020-12-22 18:52

    In my case I had to delete all the certificate from my windows 8 and then re-install them in order to send push notifications to apple device.

    I do not know why my certificates stop working, I am searching for the correct reason and will update here soon.

    0 讨论(0)
提交回复
热议问题