Android: prova la notifica push online (Google Cloud Messaging) [chiuso]


99

Aggiornamento: GCM è obsoleto, utilizza FCM

Sto implementando Google Cloud Messaging nella mia applicazione. Il codice del server non è ancora pronto e nel mio ambiente a causa di alcune limitazioni del firewall non posso distribuire un server di prova per la notifica push. Quello che sto cercando è un server online che invii alcune notifiche di prova al mio dispositivo per testare l'implementazione del mio client.


Hai eliminato altri post, ecco perché sto scrivendo qui :-) NotificationListenerService è stato aggiunto in api 18 ... Memorizza gli id ​​in SharedPreferences come int array e fai un po 'di logica per controllare la dimensione dell'array se dopo aver aggiunto un nuovo id è più grande di quanto ti serve primo elemento e annulla ...
Selvin

1
puoi provare usando pushtry.com
Arvind

Risposte:


167

Ho trovato un modo molto semplice per farlo.

aperto http://phpfiddle.org/

Incolla il seguente script php nella casella. Nel set di script php API_ACCESS_KEY, imposta gli ID del dispositivo separati da virgola.

Premi F9 o fai clic su Esegui.

Divertiti ;)

<?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;
?>

Per FCM, l'URL di Google sarebbe: https://fcm.googleapis.com/fcm/send

Per FCM v1 l'URL di Google sarebbe: https://fcm.googleapis.com/v1/projects/YOUR_GOOGLE_CONSOLE_PROJECT_ID/messages:send

Nota: durante la creazione della chiave di accesso API sulla console per sviluppatori Google, è necessario utilizzare 0.0.0.0/0 come indirizzo IP. (A scopo di test).

In caso di ricezione di una risposta di registrazione non valida dal server GCM, verifica la validità del token del tuo dispositivo. Puoi verificare la validità del token del tuo dispositivo utilizzando il seguente URL:

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

Alcuni codici di risposta:

Di seguito è riportata la descrizione di alcuni codici di risposta che potresti ricevere dal server.

{ "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
Non proprio :) A scopo di test, puoi usare 0.0.0.0/0 ip. funzionerebbe.
Adnan

4
Ricevo ogni volta (con chiave API e ID dispositivo: errore ":" InvalidRegistration
Leandro

4
Si prega di rigenerarsi API KEYdopo, poiché non è troppo sicuro dare loro la chiave.
Flash Thunder

6
continuo a ricevere l'errore non autorizzato 401. qualche idea del perché?
Razel Soco

2
{"error": "invalid_token", "error_description": "Invalid Value"} ho trovato questo. e ottenere un ID registro non valido.
Anand

159

POSTINO: un'estensione di Google Chrome

Usa il postino per inviare il messaggio invece del server. Le impostazioni di Postman sono le seguenti:

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"
  } 
}

in caso di successo otterrai

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

3
Penso che questa sia la soluzione più pulita e sicura per testare il GCM. Grazie!
Bianca Daniciuc

12
Ha lavorato con un POST per me! Inoltre, non dimenticare di inserire "key =" nell'intestazione di autorizzazione e non solo in API_KEY
Raphael Royer-Rivard

3
@Raphael Royer-Rivard, tu salvavita, mi mancava "key =" nell'intestazione dell'autorizzazione
Khurram Shehzad,

3
Ci sono alcune chiavi che puoi creare con la Google Developer Console. Nel caso in cui non sia chiaro, per usarlo con il postino, è necessario creare una "chiave server".
Liangjun

3
Cosa sono i "registration_ids" qui? dove trovarli?
Himel Nag Rana

19

Pushwatch è un tester di notifiche push GCM e APNS online gratuito sviluppato da me stesso in Django / Python poiché mi sono trovato in una situazione simile mentre lavoravo su più progetti. E 'possibile inviare sia GCMe APNSnotifiche e anche il supporto dei messaggi JSON per argomenti extra. Di seguito sono riportati i collegamenti ai tester.

Per favore fatemi sapere se avete domande o affrontate problemi nell'utilizzo.


1
Per favore, spiega il tuo voto negativo.
Amyth

1
Proprio quello di cui avevo bisogno, funziona perfettamente (ho provato quello del postino, che in qualche modo ha funzionato, ma non ha fatto apparire il messaggio sul mio dispositivo quando la mia app non era aperta ..)
Greywire

Ciao Amyth, ricevo questo errore sul tuo sito: "Errore HTTP 401: chiave del server non valida (precedente) consegnata o il mittente non è autorizzato a eseguire la richiesta." Non sai cosa fare? Ho appena creato un progetto Google e ho provato a utilizzare l'ID progetto e il numero progetto per SenderID e ho aggiunto il tuo sito a "Accetta richieste da questi referrer HTTP (siti web)" nelle impostazioni dell'API di Google. Cordiali saluti Rasmus
Thylle

Tieni presente che questo URL non è più supportato: a partire dal 10 aprile 2018, Google ha ritirato GCM. Il server GCM e le API client sono obsoleti e verranno rimossi l'11 aprile 2019. Informazioni su GCM
Asciugamano

7

Postman è una buona soluzione, così come php fiddle. Tuttavia, per evitare di inserire ogni volta l'URL GCM e le informazioni di intestazione, puoi anche utilizzare questo ingegnoso strumento di test delle notifiche GCM


2
Puoi utilizzare questo tester online che supporta sia Android che iOS. Sito web semplice da usare pushtry.com 1. Selezionare il file .p12 2. Immettere il token del dispositivo3 3. Selezionare l'ambiente Sandbox o la produzione 4. Immettere il messaggio 5. Inviare
Arvind
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.