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:
- Google Cloud Messaging no funciona en dispositivos 4.1.2 en una red corporativa
- El dispositivo deja de recibir emisiones de GCM hasta que la red se conmuta
- Cómo obtener el ID de Canonical de GCM
- El anular el registro y el nuevo registro de mensajes GCM hace que dos regId sean válidos. ¿Es esto como se pretende?
- Hacer dispositivo Android como servidor para enviar mensajes a GCM directamente
@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.
- Asíntate un comportamiento extraño
- ¿Por qué la aplicación de mensajería recibe mensajes cuando se detiene la aplicación?
- El servidor GCM de Google devuelve Error no autorizado 401
- Enviar notificaciones en Android mediante Google App Engine
- ¿Cómo enviar notificaciones a la aplicación de Android desde el servidor de Java mediante GCM?
- El GCM de Android no funciona
- ¿Qué puerto y protocolo utiliza Google Cloud Messaging (GCM)?
- ¿Qué es el ID de registro de GCM?
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 .
- ¿Cómo puedes evitar las explotaciones de reloj en los juegos de Android?
- Lista de infracciones de modo estricto