2016-06-11 2 views
0

Я разрабатываю приложение, использующее C#, которому необходимо отправлять уведомления как на iOS, так и на Android. В уведомлении по электронной почте Android отправляются на тамильский. Но отправьте уведомление на iOS на английском языке, он работает хорошо. Но как я могу отправить другие языки, такие как хинди, французский, немецкий и т. Д.Как отправить уведомление IOS на тамильский язык с помощью C#

Ниже приведен код, который я использовал:

string devicetocken = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";// iphone device token 
int port = 2195; 
String hostname = "gateway.sandbox.push.apple.com"; 
string certificatePath = @"Certificates.pfx"; 
string certificatePassword = ""; 
X509Certificate2 clientCertificate = new X509Certificate2(certificatePath, certificatePassword, X509KeyStorageFlags.MachineKeySet); 
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.Default, false); 
} 
catch (AuthenticationException ex) 
{ 
    Console.WriteLine("Authentication failed"); 
    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) 
int len = devicetocken.Length; 
int len_half = len/2; 
byte[] bs = new byte[len_half]; 
for (int i = 0; i != len_half; i++) 
{ 
    bs[i] = (byte)Int32.Parse(devicetocken.Substring(i * 2, 2), System.Globalization.NumberStyles.HexNumber); 
} 
byte[] b0 = bs; 
writer.Write(b0); 
String payload; 
string strmsgbody = ""; 
strmsgbody = "சென்னை"; 
//strmsgbody = "Chennai"; 
Debug.WriteLine("during testing via device!"); 
payload = "{\"aps\":{\"alert\":\"" + strmsgbody + "\",\"sound\":\"mailsent.wav\"},\"acme1\":\"bar\",\"acme2\":42}"; 
writer.Write((byte)0); //First byte of payload length; (big-endian first byte) 
writer.Write((byte)payload.Length);  //payload length (big-endian second byte) 
byte[] b1 = System.Text.Encoding.UTF8.GetBytes(payload); 
writer.Write(b1); 
writer.Flush(); 
byte[] array = memoryStream.ToArray(); 
Debug.WriteLine("This is being sent...\n\n"); 
Debug.WriteLine(array); 
try 
{ 
    sslStream.Write(array); 
    sslStream.Flush(); 
} 
catch 
{ 
    Debug.WriteLine("Write failed buddy!!"); 
} 

client.Close(); 
Debug.WriteLine("Client closed."); 
+0

Наконец-то найдено решение с помощью PushSharp. –

+0

Пожалуйста, разместите его как ответ – SibiCoder

ответ

0

Вы не говорите, что проблема - вы не говорите, что происходит, когда вы посылаете сообщение. Поскольку вы не задали вопрос, никто не сможет вам помочь.

Однако быстрый взгляд на коде показывает:

  1. Вы полагаете, что полезная нагрузка никогда не будет длиной более 255 символов (вы настраиваете старшие байты длины 0).
  2. Вы делаете длину полезной нагрузки числом символов Юникода, а не количеством символов в представлении UTF-8 полезной нагрузки. Это верно? Звучит маловероятно. Я не знаю ответа, но ты должен.
+0

Привет, nugae, Am спросил мой вопрос, как отправить push-уведомление на мобильный телефон IOS. Вышеприведенный код работает на английском языке, но я хочу отправить его на другие языки. –

Смежные вопросы