Android: тестирование push-уведомлений онлайн (Google Cloud Messaging) [закрыто]

99

Обновление: GCM устарел, используйте FCM

Я использую Google Cloud Messaging в своем приложении. Код сервера еще не готов, и в моей среде из-за некоторых ограничений брандмауэра я не могу развернуть тестовый сервер для push-уведомлений. Я ищу онлайн-сервер, который будет отправлять на мое устройство несколько тестовых уведомлений для тестирования моей клиентской реализации.

Аднан
источник
Вы удалили другой пост, поэтому я пишу здесь :-) NotificationListenerService был добавлен в api 18 ... Просто сохраните идентификаторы в SharedPreferences как массив int и выполните некоторую логику, чтобы проверить размер массива, если после добавления нового идентификатора больше, чем вам нужно, первый элемент и отменить ...
Селвин
1
вы можете протестировать с помощью pushtry.com
Арвинд

Ответы:

167

Нашел очень простой способ сделать это.

Откройте http://phpfiddle.org/

Вставьте следующий скрипт php в поле. В php-скрипте установите API_ACCESS_KEY, установите идентификаторы устройств, разделенные запятой.

Нажмите F9 или щелкните Выполнить.

Радоваться, веселиться ;)

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

Для FCM URL-адрес Google будет: https://fcm.googleapis.com/fcm/send

Для FCM v1 URL-адрес Google будет следующим: https://fcm.googleapis.com/v1/projects/YOUR_GOOGLE_CONSOLE_PROJECT_ID/messages:send

Примечание. При создании ключа доступа к API в консоли разработчика Google вы должны использовать 0.0.0.0/0 в качестве IP-адреса. (Для тестирования).

В случае получения недопустимого ответа на регистрацию от сервера GCM, пожалуйста, перепроверьте действительность токена вашего устройства. Вы можете проверить действительность токена вашего устройства, используя следующий URL:

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

Некоторые коды ответов:

Ниже приводится описание некоторых кодов ответа, которые вы можете получить от сервера.

{ "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
Не совсем :) Для тестирования можно использовать 0.0.0.0/0 ip. это сработает.
Аднан
4
Я получаю каждый раз (с ключом api и идентификатором устройства: ошибка ":" InvalidRegistration
Леандро,
4
Пожалуйста, произведите регенерацию API KEYпозже, так как давать им свой ключ небезопасно.
Flash Thunder
6
Я продолжаю получать несанкционированную ошибку 401. Есть идеи, почему?
Razel Soco
2
{"error": "invalid_token", "error_description": "Invalid Value"} я нашел это. и получение недопустимого идентификатора регистрации.
Ананд
159

POSTMAN: расширение для Google Chrome.

Используйте почтальона для отправки сообщения вместо сервера. Настройки почтальона следующие:

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

при успехе вы получите

Response :
{
  "multicast_id": 6506103988515583000,
  "success": 1,
  "failure": 0,
  "canonical_ids": 0,
  "results": [
    {
      "message_id": "0:1432811719975865%54f79db3f9fd7ecd"
    }
  ]
}
Майкл
источник
3
Я считаю, что это наиболее чистое и безопасное решение для тестирования GCM. Спасибо!
Бьянка Даничук
12
Работал с ПОЧТОЙ у меня! Также не забудьте указать «key =» в заголовке авторизации, а не только API_KEY
Рафаэль Ройер-Ривард
3
@Raphael Royer-Rivard, вы спасатель, мне не хватало "key =" в заголовке авторизации
Хуррам Шехзад
3
Есть несколько ключей, которые вы можете создать с помощью консоли разработчика Google. На всякий случай, если вы не понимаете, для использования с почтальоном вам необходимо создать «Серверный ключ».
Лянцзюнь
3
Что здесь за "registration_ids"? где их найти?
Himel Nag Rana
19

Pushwatch - это бесплатный онлайн-тестер push-уведомлений GCM и APNS, разработанный мной в Django / Python, поскольку я оказался в аналогичной ситуации, работая над несколькими проектами. Он может отправлять как уведомления, так GCMи APNSуведомления, а также поддерживать сообщения JSON для дополнительных аргументов. Ниже приведены ссылки на тестеров.

Пожалуйста, дайте мне знать, если у вас возникнут вопросы или проблемы с его использованием.

Amyth
источник
1
Пожалуйста, объясните свой голос против.
Amyth 09
1
Как раз то, что мне было нужно, работает отлично (попробовал почтальон, который вроде работал, но не вызывал сообщение на моем устройстве, когда мое приложение не было открыто ..)
Greywire
Привет, Эмиф, я получаю эту ошибку на вашем сайте: «Ошибка HTTP 401: доставлен недействительный (устаревший) ключ сервера или отправитель не авторизован для выполнения запроса». Не знаете, что делать? Я только что создал проект Google и попытался использовать идентификатор проекта и номер проекта в качестве идентификатора отправителя и добавил ваш сайт в поле «Принимать запросы от этих HTTP-рефереров (веб-сайтов)» в настройках API Google. С уважением, Расмус
Тилль
Обратите внимание, что этот URL больше не поддерживается: с 10 апреля 2018 года Google не поддерживает GCM. Серверные и клиентские API GCM устарели и будут удалены 11 апреля 2019 г. Информация о GCM
Stinky Towel
7

Почтальон - хорошее решение, и скрипка php тоже. Однако, чтобы каждый раз не вводить URL-адрес GCM и информацию заголовка, вы также можете использовать этот отличный инструмент проверки уведомлений GCM.

Варун
источник
2
Вы можете использовать этот онлайн-тестер, который поддерживает Android и iOS. Простой в использовании простой веб-сайт pushtry.com 1. Выберите файл .p12 2. Введите токен устройства3 3. Выберите среду Sandbox или рабочую среду 4. Введите сообщение 5. Отправить
Арвинд