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 для дополнительных аргументов. Ниже приведены ссылки на тестеров.

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


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. Отправить
— Арвинд
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.