специальные символы pu sh ios уведомление (APNS) c# - PullRequest
0 голосов
/ 08 апреля 2020

Я из Мексики, поэтому мы используем много специальных символов в сообщениях, таких как 'ñ', 'á', 'é', et c. поэтому, когда я отправляю эти сообщения, pu sh никогда не отображается. я могу видеть pu sh в устройствах, когда я использую кодировку ascii, но это меняет символ на '?'.

Может кто-нибудь мне помочь?

var iosPayload = new {
        aps = new {
            alert = new { title = response.SourceUserName, body = response.Message},
            sound = "default",
            badge = 1
        },
        groupId = response.GroupId
    };

    string certificatePath = @"C:////files////ApplePushCertificate.p12";
    // X509Certificate2 clientCertificate = new X509Certificate2(File.ReadAllBytes(certificatePath), "1234");
    X509Certificate2 clientCertificate = GetMyX509Certificate(certificatePath,"root");
    X509Certificate2Collection certificatesCollection = new X509Certificate2Collection(clientCertificate);
    TcpClient tcpClient = new TcpClient(hostname, port);
    SslStream sslStream = new SslStream(tcpClient.GetStream(), false, new RemoteCertificateValidationCallback(ValidateServerCertificate), null);
    try
    {

        sslStream.AuthenticateAsClient(hostname, certificatesCollection, SslProtocols.Tls, false);
        MemoryStream memoryStream = new MemoryStream();
        BinaryWriter writer = new BinaryWriter(memoryStream);
        writer.Write((byte)0);
        writer.Write((byte)0);
        writer.Write((byte)32);
        writer.Write(StringToByteArray(pushkey.ToUpper()));
        var payload = JsonConvert.SerializeObject(iosPayload);
        writer.Write((byte)0);
        byte[] payloadBytes = System.Text.Encoding.UTF8.GetBytes(payload);
        writer.Write((byte)payload.Length);
        writer.Write(payloadBytes);
        writer.Flush();
        byte[] memoryStreamAsBytes = memoryStream.ToArray();
        sslStream.Write(memoryStreamAsBytes);
        sslStream.Flush();

    }

    catch (Exception ex)
    {
        Console.WriteLine(ex.Message);
        tcpClient.Close();
    }
...