Https android googleapis com gcm send

GCM – новый сервис Push-уведомлений от Google


Ранее в Android использовался C2DM (Cloud to Device Messaging), как сервис доставки Push-уведомлений на устройство. Но 26 июня он был официально отменен гуглом. На его место пришел новый GCM (Google Cloud Messaging).

Похожие названия. Одинаковая роль. В чем же разница ?
  • Для использования GCM, необходимо получить Simple API Key в консоли Google APIs.
  • Для GCM нужно получить Sender ID. Он является эквивалентом электронной почты в C2DM. Получить его можно опять-таки из консоли Google APIs, а точнее из URL:
    code.google.com/apis/console/#project:
  • Уведомления в GCM имеют формат JSON вместе с простым текстом.
  • GCM может отправлять уведомления сразу на несколько устройств.
  • Теперь одно устройство с одним идентификатором регистрации может получать уведомления сразу с нескольких серверов.
  • Теперь уведомления могут иметь время жизни до 4-х недель. GCM будет хранить их до истечения срока.
  • Теперь можно отправлять уведомления до 4Кб с полезной нагрузкой. Это будет очень выгодно для реал-тайма различных чатов. Однако данный метод будет сильней кушать батарейку устройства.
  • Теперь нет необходимости передавать идентификатор устройства на сервер, чтобы избежать повторных регистраций одного устройства. Канонический идентификатор регистрации определяется GCM по последней регистрации устройства. И если сервер отправит уведомление со старым идентификатором, то GCM вернет канонический (последний) идентификатор, на который надо будет заменить старый.

Настройка GCM

Начнем с Android Manifest

Сначала нужно прописать разрешения:

Затем ресивер и сервис:

* заменить на ваш пакет (у меня com.habrahabr.gcm)

Затем в корневом каталоге пакета создаем класс GCMIntentService, наследуемый от GCMBaseIntentService:
И уже после этого в главном активити прописываем:

Теперь все готово, за исключением отправки самих уведомлений с сервера, но думаю, что для одной статьи этого пока достаточно.

Источник

GoogleCloudMessaging

java.lang.Object
com.google.android.gms.gcm.GoogleCloudMessaging

Class Overview

The class you use to write a GCM-enabled client application that runs on an Android device. Client applications can receive and send messages to the server.

This class requires Google Play services version 3.1 or higher. For a detailed discussion of how to write a GCM client app, see Implementing GCM Client.

To send or receive messages, your application first needs to get a registration ID. The registration ID identifies the device and application, and also determines which 3rd-party application servers are allowed to send messages to this application instance.

To get a registration ID, you must supply one or more sender IDs. A sender ID is a project number you acquire from the API console, as described in Getting Started. The sender ID is used in the registration process to identify a 3rd-party application server that is permitted to send messages to the device. The following snippet shows you how to call the register() method. For a more comprehensive example, see Implementing GCM Client.

In order to receive GCM messages, you need to declare a permission and a BroadcastReceiver in your manifest. This is a backward-compatible subset of what was required in previous versions of GCM.

Читайте также:  Кубики шарики для андроид

To allow the application to use GCM, add this permission to the manifest:

GCM delivers messages as a broadcast. The receivers must be registered in the manifest in order to wake up the application.

The com.google.android.c2dm.permission.SEND permission is held by Google Play services. This prevents other code from invoking the broadcast receiver. Here is an excerpt from a sample manifest:

When a GCM connection server delivers the message to your client app, the BroadcastReceiver receives the message as an intent. You can either process the intent in the BroadcastReceiver , or you can pass off the work of processing the intent to a service (typically, an IntentService ). If you use a service, your broadcast receiver should be an instance of WakefulBroadcastReceiver , to hold a wake lock while the service is doing its work.

When processing the intent GCM passes into your app’s broadcast receiver, you can determine the message type by calling getMessageType(intent) . For example:

If you are using the XMPP-based Cloud Connection Server, your client app can send upstream messages back to the server. For example: For a more details, see Implementing GCM Client.

Источник

Отправить PUSH-уведомление с помощью Google FCM и PHP

Как часто вы получаете уведомления «ваш друг отметил вас в сообщении», «ваш друг здесь»? Это гарантирует, что вы никогда не пропустите ничего, независимо от того, насколько вы заняты, и как разработчик, как часто вы хотите, чтобы у вашего приложения была одна и та же возможность вовлекать пользователей обратно в ваше приложение?

Сегодня я расскажу о том, как отправлять кросс-платформенные (Android / iOS) push-уведомления с помощью облачных сообщений Firebase (Google FCM) в PHP .

Что такое Push-уведомление?

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

Google Cloud Messaging

Некоторое время назад Google объявил о (Google Cloud Messaging) бесплатная услуга, которая позволяет разработчикам отправлять сообщения между серверами и клиентскими приложениями, которые состояли из передачи сообщений от серверов к клиентским приложениям и передачи сообщений от клиентских приложений на серверы (согласно Документации Google). Что помогло издателям отправлять уведомления множеству пользователей или массовой аудитории.

Вот как работал GCM:

  1. Устройство Android отправляет идентификатор отправителя, идентификатор приложения на сервер GCM для регистрации.
  2. После успешной регистрации сервер GCM выдает регистрационный идентификатор на устройство.
  3. После получения регистрационного идентификатора устройство отправит регистрационный идентификатор на наш сервер.
  4. Наш сервер будет хранить регистрационный идентификатор в базе данных для дальнейшего использования.
  5. Всякий раз, когда требуется push-уведомление, наш сервер отправляет сообщение на сервер GCM вместе с идентификатором регистрации устройства (который хранится ранее в базе данных).
  6. Сервер GCM доставляет это сообщение соответствующему мобильному устройству, используя идентификатор регистрации устройства.

Google FCM

Но не так давно, после приобретения Firebase в 2014 году, Google анонсировала Firebase Cloud Messaging (FCM) для отправки различных уведомлений и сообщений через различные мобильные ОС (даже iOS) и Интернет. Так зачем обновляться до FCM?

Несмотря на то, что FCM использует базовую инфраструктуру GCM, существуют различные причины для перехода на FCM.

  • СООБЩЕНИЕ НА ОСНОВЕ ТЕМЫ: В отличие от GCM, не было необходимости запускать логику публикации уведомлений под массивным циклом токенов устройств, которые мы ранее хранили для отправки уведомлений. Теперь устройства были зарегистрированы под определенной темой, например, (ESPN_SPORTS), и нам просто нужно было упомянуть эту тему, а остальное она делала от маршрутизации до доставки сообщений на все устройства, хранящиеся в этой теме.
  • Не было необходимости писать собственную логику повторных попыток регистрации или подписки.
Читайте также:  Камера панорама для андроид

Чтобы перейти с GCM SDK на FCM SDK, см. Руководства по миграции приложений Android и iOS .

Таким образом, после краткого обзора GCM и нового FCM, мы можем использовать API FCM с PHP для отправки push-уведомлений на наши устройства.

Кодируем

Перед кодированием нам понадобится ключ сервера, который мы можем получить, выполнив следующие действия:

  1. Войдите / зарегистрируйтесь в своей учетной записи в firebase.
  2. Затем нажмите на значок шестеренки слева вверху, а затем нажмите «Настройки проекта».
  3. Кроме того, зарегистрируйте сертификаты APN в «конфигурации приложения ios», чтобы отправлять уведомления на устройства iOS.

Мы разработаем веб-интерфейс для отправки push-уведомлений на устройства Android и iOS. Перед этим нам нужно будет установить стабильное приложение на телефоне.

Таким образом, в основном у нас будет 2 PHP-файла, которые подписывают устройства на заданную тему:

  1. Файл, который подписывается на устройства. SDK должны быть настроены для вызова URL-адреса, указывающего файл при открытии приложения, предоставляющего стиль DEVICE_TOKEN в стиле Firebase. Устройства будут зарегистрированы с их токенами устройства.
  2. Еще один файл для отправки уведомления.

Пример файла подписки на устройство (device_registration.php).

POST-запрос рекомендуется при настройке SDK по этому URL. Убедитесь, что у вас установлена ​​нужная тема, так как она должна соответствовать теме, которую вы определили на странице, где вы отправляете уведомления.

Настройка SDK

IOS

Прежде всего, нам нужно определить URL-адрес регистра устройства следующим образом:

Пример настройки SDK.

Android

Аналогично настройке iOS, нам нужно определить URL регистрации для Android следующим образом:

Пример настройки SDK.

Приложения теперь начнут регистрироваться или подписываться на темы, определенные при каждом открытии. Хорошо,
теперь давайте перейдем к отправке детали. у нас есть простая форма для настройки, куда мы можем отправить уведомление.

На сервере эта форма запускает следующий код при отправке.

Точно так же я получил уведомление с желаемым заголовком и резюме. Заголовок и тело определяют, что пользователи видят в реальных уведомлениях. Вы можете отправить массив данных соответственно для глубокой ссылки приложения на определенную страницу. Например, здесь я отправляю идентификатор модели, поэтому, когда пользователь нажимает на уведомление, он перенаправляет вас на страницу моделей.

Кроме того, вы можете отфильтровать свою аудиторию уведомлений, например, по устройству, географически и т.д., Просто зарегистрировав свое устройство в соответствии с соответствующей темой. Воспользуйтесь гибкостью темы, вы сможете получить желаемый результат. Как вы можете видеть, с помощью Google FCM стало действительно легко отправлять push-уведомления на различные платформы.

Источник

Migrate a GCM Client App for Android to Firebase Cloud Messaging

You can migrate an existing GCM client app on Android to Firebase Cloud Messaging (FCM) using the instructions in this guide. Before getting started, keep in mind:

  • GCM and FCM SDKs cannot co-exist within an application.
  • GCM tokens retrieved via GoogleCloudMessaging.register() or InstanceID.getToken() will continue to work in FCM without any modification or renewal.

To prepare for migration, you can review a video tutorial that walks through the same basic steps described in this guide. See also the GCM and FCM FAQ.

Import your GCM project as a Firebase project

The instructions in this section assume that you are adding Firebase to an existing Google Cloud project for GCM. If you already have an existing Firebase project into which you would like to migrate a GCM app and its users, see Migrate GCM to an existing Firebase project for important alternative instructions.

Читайте также:  Вернуть стандартную тему для андроид

In the Firebase console, select Add Project.

Select your GCM project from the list of existing Google Cloud projects, and select Add Firebase.

In the Firebase welcome screen, select Add Firebase to your Android App.

Provide your package name and SHA-1, and select Add App. A new google-services.json file for your Firebase app is downloaded. Copy this into your project’s module folder, typically app/ .

Select Continue and follow the detailed instructions for adding the Google Services plugin in Android Studio.

Switch to FCM in the app-level build.gradle

Before

After

Edit your app’s manifest

The FCM SDK automatically adds all required permissions as well as the required receiver functionality. Make sure to remove the following obsolete (and potentially harmful, as they may cause message duplication) elements from your app’s manifest:

Remove from AndroidManifest.xml

Update server endpoints

Update your server code to use new FCM endpoints for sending messages via HTTP and XMPP. Note that the new FCM version of gcm-http.googleapis.com/gcm/ is fcm.googleapis.com/fcm/ (without «http»):

GCM endpoint FCM endpoint
gcm-http.googleapis.com/gcm/ fcm.googleapis.com/fcm/
gcm-xmpp.googleapis.com fcm-xmpp.googleapis.com
android.clients.google.com/gcm/send fcm.googleapis.com/fcm/send
android.apis.google.com/*/send fcm.googleapis.com/fcm/send
android.googleapis.com/gcm/send fcm.googleapis.com/fcm/send

FCM supports HTTP and XMPP protocols that are virtually identical to the GCM server protocols, so you don’t need to update your sending logic for the migration. Optionally, you may want to evaluate the FCM HTTP v1 API, which offers an improved security model and new capabilities for customizing messages across platforms.

Next steps and optional migration tasks

Depending on which GCM features your app uses, you may have additional migration tasks to perform. Most apps are likely to need to migrate an InstanceIDListenerService to work with FCM.

Usually required: migrate your InstanceIDListenerService

Perform this step if you need to access the device registration token because:

  • You send messages to specific devices
  • You send messages to device groups
  • You subscribe devices to topics with the subscription management API.

Optional: migrate your GcmListenerService

Perform this step if you need to handle incoming messages, such as when:

  • Your app receives data-only messages
  • your app receives notification payloads while the application is in foreground
  • Your app receives errors in case of upstream message failures.

Optional: update your usage of GcmPubSub

Perform this step if:

  • If you need to subscribe new devices to topics. Devices already subscribed to a topic prior to migration will continue to receive messages. For example, a device subscribed to /topics/news in GCM will continue to receive messages sent to /news after migration to FCM (note that the prefix «topics» is not required in FCM).

Special case: Migrate GCM to an existing Firebase project

Perform this step if:

  • You already have an existing Firebase project into which you would like to migrate a GCM app and its users. This situation requires additional tasks.

Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.

Источник

Оцените статью