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.


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

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

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.


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


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.