Android: Testowanie powiadomień push online (Google Cloud Messaging) [zamknięte]

99

Aktualizacja: GCM jest przestarzałe, użyj FCM

Wdrażam Google Cloud Messaging w mojej aplikacji. Kod serwera nie jest jeszcze gotowy iw moim środowisku z powodu pewnych ograniczeń zapory nie mogę wdrożyć serwera testowego do powiadamiania push. To, czego szukam, to serwer online, który wysyłałby powiadomienia testowe do mojego urządzenia w celu przetestowania implementacji klienta.

Adnan
źródło
Usunąłeś inny post, dlatego piszę tutaj :-) NotificationListenerService został dodany w api 18 ... Po prostu zapisz identyfikatory w SharedPreferences jako tablicę int i zrób trochę logiki, aby sprawdzić rozmiar tablicy, jeśli po dodaniu nowego identyfikatora jest większy niż potrzebujesz pierwszy element i anuluj ...
Selvin
1
możesz przetestować za pomocą pushtry.com
Arvind

Odpowiedzi:

167

Znalazłem bardzo łatwy sposób, aby to zrobić.

Otwórz http://phpfiddle.org/

Wklej następujący skrypt php w polu. W skrypcie php ustaw API_ACCESS_KEY, ustaw identyfikatory urządzeń oddzielone przecinkami.

Naciśnij klawisz F9 lub kliknij Uruchom.

Baw się dobrze ;)

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

W przypadku FCM adres URL Google to: https://fcm.googleapis.com/fcm/send

W przypadku FCM v1 adres URL Google to: https://fcm.googleapis.com/v1/projects/YOUR_GOOGLE_CONSOLE_PROJECT_ID/messages:send

Uwaga: podczas tworzenia klucza dostępu API w konsoli programisty Google musisz użyć 0.0.0.0/0 jako adresu IP. (Do celów testowych).

W przypadku otrzymania nieprawidłowej odpowiedzi rejestracyjnej z serwera GCM, sprawdź krzyżowo ważność tokena urządzenia. Możesz sprawdzić ważność tokena urządzenia, korzystając z następującego adresu URL:

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

Niektóre kody odpowiedzi:

Poniżej znajduje się opis niektórych kodów odpowiedzi, które możesz otrzymać z serwera.

{ "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
Adnan
źródło
1
Niezupełnie :) Do celów testowych możesz użyć adresu IP 0.0.0.0/0. to zadziała.
Adnan
4
Otrzymuję za każdym razem (z kluczem API i identyfikatorem urządzenia: błąd ":" InvalidRegistration
Leandro
4
Zregeneruj się API KEYpóźniej, ponieważ oddanie klucza nie jest zbyt bezpieczne.
Flash Thunder
6
Ciągle otrzymuję Nieautoryzowany błąd 401. Masz jakiś pomysł, dlaczego?
Razel Soco,
2
{"error": "invalid_token", "error_description": "Nieprawidłowa wartość"} znalazłem to. i uzyskanie nieprawidłowego identyfikatora rejestracji.
Anand
159

POSTMAN: rozszerzenie Google Chrome

Użyj listonosza, aby wysłać wiadomość zamiast serwera. Ustawienia listonosza są następujące:

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

na sukces otrzymasz

Response :
{
  "multicast_id": 6506103988515583000,
  "success": 1,
  "failure": 0,
  "canonical_ids": 0,
  "results": [
    {
      "message_id": "0:1432811719975865%54f79db3f9fd7ecd"
    }
  ]
}
Michael
źródło
3
Myślę, że jest to najbardziej czyste i bezpieczne rozwiązanie do testowania GCM. Dzięki!
Bianca Daniciuc
12
Pracował z POST dla mnie! Nie zapomnij również umieścić „key =” w nagłówku Authorization, a nie tylko API_KEY
Raphael Royer-Rivard
3
@Raphael Royer-Rivard, ratowniku życia, brakowało mi „key =” w nagłówku autoryzacji
Khurram Shehzad
3
Istnieje kilka kluczy, które możesz utworzyć za pomocą Google Developer Console. Na wypadek, gdybyś nie był jasny, aby używać go z listonoszem, musisz utworzyć „klucz serwera”.
Liangjun
3
Co to jest „identyfikatory rejestracji” tutaj? gdzie je znaleźć?
Himel Nag Rana
19

Pushwatch to darmowy tester powiadomień push online GCM i APNS opracowany przeze mnie w Django / Python, ponieważ znalazłem się w podobnej sytuacji podczas pracy nad wieloma projektami. Można wysyłać zarówno GCMi APNSpowiadomienia, a także wspierać wiadomości JSON na dodatkowych argumentów. Poniżej znajdują się linki do testerów.

Daj mi znać, jeśli masz jakieś pytania lub napotkasz problemy z jego używaniem.

Mit
źródło
1
Proszę wyjaśnij swój głos przeciw.
Amyth
1
To, czego potrzebowałem, działa idealnie (wypróbowałem listonosza, który trochę działał, ale nie spowodował pojawienia się komunikatu na moim urządzeniu, gdy moja aplikacja nie została otwarta ...)
Greywire
Cześć Amyth, pojawia się ten błąd w Twojej witrynie: „Błąd HTTP 401: dostarczono nieprawidłowy (starszy) klucz serwera lub nadawca nie ma uprawnień do wykonywania żądania”. Nie wiesz, co zrobić? Właśnie utworzyłem projekt Google i próbowałem użyć identyfikatora projektu i numeru projektu dla SenderID oraz dodałem Twoją witrynę do „Akceptuj żądania od tych stron odsyłających HTTP (witryn)” w ustawieniach Google API. Pozdrawiam Rasmus
Thylle
Pamiętaj, że ten adres URL nie jest już obsługiwany: 10 kwietnia 2018 r. Firma Google wycofała GCM. Serwer GCM i interfejsy API klienta zostały wycofane i zostaną usunięte już 11 kwietnia 2019 r. Informacje o GCM
Stinky Towel
7

Postman to dobre rozwiązanie, podobnie jak skrzypce php. Aby jednak uniknąć umieszczania adresu URL GCM i informacji z nagłówka za każdym razem, możesz również użyć tego sprytnego narzędzia do testowania powiadomień GCM

Varun
źródło
2
Możesz użyć tego testera online, który obsługuje zarówno Androida, jak i iOS. Łatwa w użyciu prosta strona internetowa pushtry.com 1. Wybierz plik .p12 2. Wprowadź token urządzenia3 3. Wybierz środowisko Piaskownica lub produkcja 4. Wpisz wiadomość 5. Wyślij
Arvind