Enviar notificación en idioma árabe mediante GCM

Estoy usando GCM para enviar notificaciones a dispositivos Android.

El código que estoy usando para obtener el mensaje en GCMIntentService es el siguiente:

@Override protected void onMessage(Context ctx, Intent intent) { // TODO Auto-generated method stub String j =intent.getStringExtra("message"); generateNotification(ctx, j); } 

Y el código que estoy usando en el lado del servidor para empujar o enviar la notificación es como a continuación:

 Dim request As WebRequest = WebRequest.Create("https://android.googleapis.com/gcm/send") request.Method = "POST" request.ContentType = "application/x-www-form-urlencoded" request.Headers.Add("Authorization: key=AIzaSyA47-XMaePL1mmI0P1yQ9V4sntMVn9q-1o") request.Headers.Add("Sender: id=648406549877") Dim collapsKey = Guid.NewGuid.ToString("n") Dim postdata As String = "registration_id=" + regid_String_reveived_from_device_after_registering_with_GCM + "&data.message=" + TextBox1.Text + "&collapse_key=" + collapsKey Dim byteArray As Byte() = Encoding.UTF8.GetBytes(postdata) request.ContentLength = byteArray.Length Dim dataStream As Stream = request.GetRequestStream dataStream.Write(byteArray, 0, byteArray.Length) dataStream.Close() Dim resposne As WebResponse = request.GetResponse Dim dataresponse As Stream = resposne.GetResponseStream Dim reader As New StreamReader(dataresponse) Dim sResponseFromServer As String = reader.ReadToEnd Label2.Text = sResponseFromServer reader.Close() dataresponse.Close() resposne.Close 

Cuando envié una notificación en idioma inglés usando el código anterior lo recibí en mi dispositivo sin ningún problema en absoluto, pero cuando envié notificación en idioma árabe con el código anterior no tengo nada como mensaje que me parecen en blanco en ambos Logcat Y notificación. La API de Android que estoy usando para desarrollar esta aplicación es 16.

Entonces, ¿cómo puedo obtener el mensaje que escribió en árabe como notificación, de la misma manera que recibo esos mensajes cuando se envía por el inglés.

Es el problema de ASP.Net Side o Android Side.

Cualquier ayuda o redirección será completamente apreciada.

He resuelto el problema anterior que estaba enfrentando durante una semana haciendo lo siguiente:

El mensaje que envié desde el lado de ASP.net que se representa como TextBox1.Text colocado en el cuerpo de la solicitud y tiene que ser codificado URL, ya que acabo de codificar el valor TextBox1.Text que resolver mi problema y dejar que mi aplicación Android Notificación recibida en lengua árabe:

Sólo cambié mi código de asp.net de esto:

 Dim postdata As String = "registration_id=" + regid(i) + "&data.message=" + TextBox1.Text + "&collapse_key=" + collapsKey 

Ser como el siguiente:

 Dim postdata As String = "registration_id=" + regid(i) + "&data.message=" + HttpUtility.UrlEncode(TextBox1.Text) + "&collapse_key=" + collapsKey 

Y mantener mi código de Android como su.

Su problema parece ser que sus solicitudes no están correctamente codificadas. Google tiene un artículo en su API de Google Maps que describe cómo se deben crear las URL. En resumen, las solicitudes deben estar codificadas en UTF-8 (aunque los espacios pueden ser + ).

Un fragmento:

Todos los caracteres que se codifican con URL se codifican utilizando un carácter % y un valor hexadecimal de dos caracteres correspondiente a su carácter UTF-8. Por ejemplo, 上海 + 中國 en UTF-8 sería codificado por URL como %E4%B8%8A%E6%B5%B7%2B%E4%B8%AD%E5%9C%8B . ¿La cuerda ? and the Mysterians ? and the Mysterians serían codificados por URL como %3F+and+the+Mysterians .

El artículo señala este artículo de Wikipedia , donde se pueden encontrar detalles sobre la codificación porcentual.

El resumen de arquitectura de GCM no menciona ninguno de los anteriores, sino que especifica específicamente:

El encabezado HTTP debe contener los siguientes encabezados:

  • Authorization: key=YOUR_API_KEY
  • Content-Type: application/json para JSON; application/x-www-form-urlencoded;charset=UTF-8 para texto sin formato.

Es posible que desee considerar cambiar el encabezado Content-Type para especificar charset=UTF-8 y codificar su solicitud en consecuencia. De forma alternativa, podría intentar dejar sus solicitudes sin codificar y experimentar con otros conjuntos de caracteres, como ISO-8859-6 .

  • Haga clic en la notificación GCM para no abrir la actividad deseada en Android Kitkat
  • GcmNetworkManager manejo de tareas peródicas
  • GCM de mensajería en la nube de Google a través de proxy
  • Impresión de certificado SHA1
  • Android: ¿Es necesario incluir los servicios de Google Play para usar GCM?
  • Android GCM PushNotification - Añadir añadir archivo de sonido personalizado en la aplicación
  • Registro de GCM pero no recibe mensajes en pre 4.0.4. Dispositivos
  • Gcm canonical id debe ser actualizado o no
  • Google Cloud Messaging en Delphi XE5?
  • Registro de GCM con dos identificadores de registro de trabajo diferentes
  • ¿Dónde está com.google.android.gcm.GCMBaseIntentService?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.