Android: prueba de notificaciones push en línea (mensajería en la nube de Google) [cerrado]


99

Actualización: GCM está obsoleto, use FCM

Estoy implementando Google Cloud Messaging en mi aplicación. El código del servidor aún no está listo y en mi entorno debido a algunas restricciones de firewall no puedo implementar un servidor de prueba para notificaciones push. Lo que estoy buscando es un servidor en línea que envíe algunas notificaciones de prueba a mi dispositivo para probar la implementación de mi cliente.


Eliminó otra publicación, por eso estoy escribiendo aquí :-) NotificationListenerService se agregó en la api 18 ... Simplemente almacene los identificadores en SharedPreferences como una matriz int y haga algo de lógica para verificar el tamaño de la matriz si después de agregar una nueva identificación es más grande de lo que necesita tomar primer elemento y cancelar ...
Selvin

1
puede probar usando pushtry.com
Arvind

Respuestas:


167

Encontré una forma muy fácil de hacer esto.

Abra http://phpfiddle.org/

Pegue el siguiente script php en el cuadro. En el conjunto de secuencias de comandos php API_ACCESS_KEY, configure los identificadores de dispositivo separados por coma.

Presione F9 o haga clic en Ejecutar.

Que te diviertas ;)

<?php


// API access key from Google API's Console
define( 'API_ACCESS_KEY', 'YOUR-API-ACCESS-KEY-GOES-HERE' );


$registrationIds = array("YOUR DEVICE IDS WILL GO HERE" );

// prep the bundle
$msg = array
(
    'message'       => 'here is a message. message',
    'title'         => 'This is a title. title',
    'subtitle'      => 'This is a subtitle. subtitle',
    'tickerText'    => 'Ticker text here...Ticker text here...Ticker text here',
    'vibrate'   => 1,
    'sound'     => 1
);

$fields = array
(
    'registration_ids'  => $registrationIds,
    'data'              => $msg
);

$headers = array
(
    'Authorization: key=' . API_ACCESS_KEY,
    'Content-Type: application/json'
);

$ch = curl_init();
curl_setopt( $ch,CURLOPT_URL, 'https://android.googleapis.com/gcm/send' );
curl_setopt( $ch,CURLOPT_POST, true );
curl_setopt( $ch,CURLOPT_HTTPHEADER, $headers );
curl_setopt( $ch,CURLOPT_RETURNTRANSFER, true );
curl_setopt( $ch,CURLOPT_SSL_VERIFYPEER, false );
curl_setopt( $ch,CURLOPT_POSTFIELDS, json_encode( $fields ) );
$result = curl_exec($ch );
curl_close( $ch );

echo $result;
?>

Para FCM, la URL de Google sería: https://fcm.googleapis.com/fcm/send

Para FCM v1, la URL de Google sería: https://fcm.googleapis.com/v1/projects/YOUR_GOOGLE_CONSOLE_PROJECT_ID/messages:send

Nota: al crear la clave de acceso API en la consola de desarrollador de Google, debe usar 0.0.0.0/0 como dirección IP. (Con fines de prueba).

En caso de recibir una respuesta de registro no válida del servidor de GCM, verifique la validez del token de su dispositivo. Puede verificar la validez del token de su dispositivo usando la siguiente URL:

https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=YOUR_DEVICE_TOKEN

Algunos códigos de respuesta:

A continuación se muestra la descripción de algunos códigos de respuesta que puede recibir del servidor.

{ "message_id": "XXXX" } - success
{ "message_id": "XXXX", "registration_id": "XXXX" } - success, device registration id has been changed mainly due to app re-install
{ "error": "Unavailable" } - Server not available, resend the message
{ "error": "InvalidRegistration" } - Invalid device registration Id 
{ "error": "NotRegistered"} - Application was uninstalled from the device

1
Realmente no :) Para propósitos de prueba, puede usar 0.0.0.0/0 ip. funcionaría.
Adnan

4
Recibo cada vez (con clave api e id de dispositivo: error ":" InvalidRegistration
Leandro

4
Regenere API KEYdespués, ya que no es demasiado seguro darles su clave.
Flash Thunder

6
Sigo recibiendo el Error 401. no autorizado. ¿Alguna idea de por qué?
Razel Soco

2
{"error": "invalid_token", "error_description": "Valor no válido"} encontré esto. y obteniendo una identificación de registro no válida.
Anand

159

CARTERO: una extensión de Google Chrome

Utilice cartero para enviar mensajes en lugar de servidor. La configuración del cartero es la siguiente:

Request Type: POST

URL: https://android.googleapis.com/gcm/send

Header
  Authorization  : key=your key //Google API KEY
  Content-Type : application/json

JSON (raw) :
{       
  "registration_ids":["yours"],
  "data": {
    "Hello" : "World"
  } 
}

en el éxito obtendrás

Response :
{
  "multicast_id": 6506103988515583000,
  "success": 1,
  "failure": 0,
  "canonical_ids": 0,
  "results": [
    {
      "message_id": "0:1432811719975865%54f79db3f9fd7ecd"
    }
  ]
}

3
Creo que esta es la solución más limpia y segura para probar el GCM. ¡Gracias!
Bianca Daniciuc

12
¡Trabajó con un POST para mí! Además, no olvide tener "key =" en el encabezado de Autorización y no solo API_KEY
Raphael Royer-Rivard

3
@Raphael Royer-Rivard, tu salvavidas, me faltaba "key =" en el encabezado de Autorización
Khurram Shehzad

3
Hay algunas claves que puede crear con Google Developer Console. En caso de que no lo tenga claro, para usar con cartero, debe crear una "Clave de servidor".
Liangjun

3
¿Qué son los "registration_ids" aquí? donde encontrarlos?
Himel Nag Rana

19

Pushwatch es un probador de notificaciones push de GCM y APNS en línea de uso gratuito desarrollado por mí mismo en Django / Python, ya que me encontré en una situación similar mientras trabajaba en varios proyectos. Se puede enviar tanto GCMy APNSnotificaciones y también el apoyo de los mensajes JSON para los argumentos adicionales. A continuación se muestran los enlaces a los probadores.

Por favor, avíseme si tiene alguna pregunta o tiene problemas para usarlo.


1
Explique su voto negativo.
Amyth

1
Justo lo que necesitaba, funciona perfectamente (probé el del cartero, que funcionó, pero no hizo que el mensaje apareciera en mi dispositivo cuando mi aplicación no estaba abierta ...)
Greywire

Hola Amyth, recibo este error en su sitio: "Error HTTP 401: Se entregó la clave de servidor no válida (heredada) o el remitente no está autorizado para realizar la solicitud". ¿No estás seguro de qué hacer? Acabo de crear un proyecto de Google e intenté usar el ID del proyecto y el número del proyecto para el SenderID y agregué su sitio a "Aceptar solicitudes de estos referentes HTTP (sitios web)" en la configuración de la API de Google. Saludos cordiales Rasmus
Thylle

Tenga en cuenta que esta URL ya no es compatible: a partir del 10 de abril de 2018, Google dejó de utilizar GCM. Las API de cliente y servidor de GCM están obsoletas y se eliminarán el 11 de abril de 2019. Información de GCM
toalla

7

Postman es una buena solución y también lo es php fiddle. Sin embargo, para evitar ingresar la URL de GCM y la información del encabezado cada vez, también puede usar esta ingeniosa herramienta de prueba de notificaciones de GCM


2
Puede utilizar este comprobador en línea que es compatible con Android e iOS. Sitio web simple y fácil de usar pushtry.com 1. Seleccione su archivo .p12 2. Ingrese el token del dispositivo3 3. Seleccione el entorno Sandbox o producción 4. Ingrese el mensaje 5. Enviar
Arvind
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.