Hi,

When using Google GCM, we have to be sure that the message is properly encoded, in case of non-latin characters, when reaching to the devices to avoid weird characters when is show.gcm-logo-e1357123459595

To achieve this, the first approach could be to do an URL-Encode the message and decode it when get from the notification but in case of iOS, if the application is not in foreground, the notification goes directly to the system and there we can not do a URL-Decode so, the correct way, when using GCM through HTTP, is to encode properly the JSON GCM request in UTF-8 before making the POST to GCM. As a brief, with Apache HTTP:

  • Add “http.protocol.content-charset” with the value “UTF-8” to the POST request.
  • Set the JSON data through an StringEntity with “UTF-8” character encoding set.

Here i put an example of GCM JSON for a HTTP POST:

{
	"collapse_key":"collapse_key_value",
	"delay_while_idle":false,
	"data":{
		"title":"Notification title",
		"message":"Hi iOS and Android",
		"url":"url_address",
		"sound":"default"	
		},
	"notification":{
		"title":"Notification title",
		"body":"Hi iOS and Android",
		"sound":"default",
		"url":"url_adress"
	},
	"registration_ids":["registration_id"]
}

and here the request, POST, with Apache HTTP client of the GCM JSON:

//Create the HttpClient and Configure
DefaultHttpClient httpclient = new DefaultHttpClient();
 
// The time it takes to open TCP connection.
httpclient.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, CONNECTION_DEFAULT_TIMEOUT);
// Timeout when server does not send data.
httpclient.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT, CONNECTION_DEFAULT_DATA_RECEIVAL_TIMEOUT);
// Some tuning that is not required for bit tests.
//httpclient.getParams().setParameter(CoreConnectionPNames.STALE_CONNECTION_CHECK, false);
httpclient.getParams().setParameter(CoreConnectionPNames.TCP_NODELAY, true);
 
//Set the header of the content to UTF-8
httpMethod.setHeader(CoreProtocolPNames.HTTP_CONTENT_CHARSET, "UTF-8");//Set the content through an StringEntity specifying the "UTF-8".
StringEntity se = new StringEntity(jsonData, "UTF-8");((HttpPost)httpMethod).setEntity(se); 
HttpResponse response = httpclient.execute(httpMethod);

 

 

Give it a try if you are with such character issues.

 

bye!

Hace tiempo que pusimos en el store una aplicación llamada “AppVigilant” para poder conocer el detalle de un número corto que pudiera aparecernos en la factura o que necesitásemos consultar su información. La aplicación también permitía darse de baja de un servicio de suscripción si se recibía un mensaje de este tipo. Toda la información fiable dado que se consultaba a la CMT junto con otros servicios como Axesor.

Dicha funcionalidad quedaba reducida a la aplicación “AppVigilant” tan solo. Por ello, decidimos portar esta información, al considerarla útil, de una manera más general y quizás, más accesible. En el sidebar de este blog podeis ahora ver una nueva sección (widget) llamado “Consulta de número corto / PREMIUM“. A partir de ahí ó a través de este enlace podréis consultar la información de un número corto para conocer si se trata de un número de tarificación especial PREMIUM y/ó si es un servicio de suscripción PREMIUM.

El servicio, la web, usa una API sencilla que hemos creado, Shortnumbers API, y que esta accesible para su uso general también.

Para consultar la información de un número corto a través de la API bastaría con realizar un GET a la dirección http://api.shortnumbers.javocsoft.es/api/v1/info/short_number en donde “short_number” deberá ser sustituído por el número corto.

El formato de respuesta es un JSON tal que:

{
  "responseCode": 0,
  "responseText": "Success",
  "data": {
    "shortNumber": "XXXXXX",
    "company": "COMAPNY NAME",
    "tarificationName": "PREMIUM",
    "pricing": "1,2 euros mas IVA",
    "isSubscriptionService": true/false,
    "location": "HTTP MAPS ADDRESS",
    "rznSoc": "COMPANY LEGAL NAME",
    "address": "ADDRESS",
    "city": "CITY",
    "province": "PROVINCE"
  }
}

Como siempre, esperamos que os sea útil el servicio y que os animeis a usar la aplicación si aún no la habeis instalado.

 

Un saludo,

 

1 estrella2 estrellas3 estrellas4 estrellas (No Ratings Yet)
Loading...