Подключение пушей Huawei к новому приложению

Эта инструкция описывает подключение пушей Huawei и регистрацию нового приложения.

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

На странице Настройки > Каналы выберите существующий или создайте новый канал, в котором хотите разместить приложение. Вы можете объединить в одном канале приложения, пользователям которых хотите отправлять пуши в рамках одной рассылки.

Перед тем как продолжить, убедитесь, что располагаете всем необходимым. Вам нужны:

Проект приложения Андроид с minSdk не ранее 21 (Андроид 5) и targetSdk не позже 31 (Андроид 12)
Параметры Sender ID и Server Key из Firebase
Параметры Client Id и Client Secret из Huawei AppGallery
Файл google-services.json из Firebase
Файл agconnect-services.json из Huawei AppGallery
Устройство с Андроид 5.0 и новее
Актуальная версия Android Studio

Описанные далее процессы предполагают, что вы завершили шаги, описанные в статье Создание канала пуш-уведомлений.

Шаг 1. Введите данные из Firebase и Huawei

Подключите Firebase Cloud Messaging к приложению, даже если планируете распространять его только через Huawei AppGallery — это повысит процент доставки пушей.

  1. Зарегистрируйте своё приложение в Firebase (если ещё не сделали этого).
  2. Получите параметры Sender ID и Server Key из Firebase.
  3. На странице Настройки > Каналы > Настройка приложения Android в Платформе edna введите имя приложения, а также параметры Sender ID и Server Key для своего приложения в поля Firebase Sender ID и Firebase API Key соответственно.

  4. Поставьте флажок Добавить приложение HUAWEI.
  5. Зарегистрируйте своё приложение в Huawei AppGallery (если оно ещё не зарегистрировано), получите параметры Client Id и Client Secret из консоли для вашего приложения и ведите их в поля Huawei App Id и Huawei App Secret соответственно.

  6. Нажмите Сохранить и продолжить.

Шаг 2. Добавьте зависимости в файл build.gradle

  1. Добавьте зависимости в файл build.gradle проекта — укажите адрес репозитория edna и добавьте в список зависимостей сервисы Google и Huawei:
  buildscript {  
    repositories {
        //...
        maven { url 'http://developer.huawei.com/repo/' }
    }
      //...
    dependencies {
        //...
        classpath "com.google.gms:google-services:4.3.10"
        classpath "com.huawei.agconnect:agcp:1.6.0.300"
    }
    //...
  allprojects {
    repositories {
       //...
        maven { url 'https://maven-pub.edna.ru/repository/maven-releases'}
        maven { url 'http://developer.huawei.com/repo/' }
    }
}
  1. В файл build.gradle приложения подключите плагин, укажите уникальный ключ приложения для доступа к пуш-сервису edna и добавьте библиотеку edna в список зависимостей:
      apply plugin: 'com.google.gms.google-services'
      apply plugin: 'com.huawei.agconnect'
      defaultConfig {
          //...
          // Уникальный ключ приложения
          manifestPlaceholders = [edna_app_id:
          "ваш ключ доступа к пуш-сервису edna"]
      }

      dependencies {
         //...
         implementation "com.edna.android:push-x:1.2.1"
         implementation "com.edna.android:push-x-huawei:1.2.1"
      }
  1. В файл правил proguard-rules.pro добавьте следующие правила:
    
    -keep class com.edna.android.push_lite.**{*;}
    -keep class com.hianalytics.android.**{*;}
    -keep class com.huawei.updatesdk.**{*;}
    -keep class com.huawei.hms.**{*;}
  1. В корневую папку приложения добавьте файл google-services.json, полученный в консоли Firebase для вашего приложения, а также файл agconnect-services.json, полученный в Huawei AppGallery.

Шаг 3. Добавьте код обработки нажатий на уведомление

Если пользователь нажмёт на уведомление или кнопки действий, то попадёт в приложение.

Библиотека edna обработает информацию о переходе пользователя и направит Intent в стартовое Activity приложения. Обработайте полученную от библиотеки edna информацию в методах onCreate и onNewIntent приложения.

Библиотека edna передаст в Intent строку действия, указанную вами в рассылке. Пример кода для обработки перехода клиента по уведомлению:

class MainActivity : AppCompatActivity() {

	override fun onCreate(savedInstanceState: Bundle?) {
		super.onCreate(savedInstanceState)
		//...
		intent?.extras?.getParcelable<PushAction>(ACTION_EXTRA)?.let {
		// Hавигация клиента с учётом переданной строки (параметр action) 
			redirectUser(it.action)
		}
		//...
	}

	override fun onNewIntent(intent: Intent?) {
		super.onNewIntent(intent)
		//...
		intent?.extras?.getParcelable<PushAction>(ACTION_EXTRA)?.let {
			// Hавигация клиента с учётом переданной строки (параметр action) 
			redirectUser(it.action)
		}
		//...
	}
}
public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        PushAction extraAction = getIntent().getExtras().getParcelable(ACTION_EXTRA);
        redirectUser(extraAction);
    }

    @Override
    protected void onNewIntent(Intent intent) {
        super.onNewIntent(intent);
        PushAction extraAction = getIntent().getExtras().getParcelable(ACTION_EXTRA);
        redirectUser(extraAction);
    }
}

Шаг 4. Поддержите регистрацию устройств пользователей в сервисе edna

  1. Выберите тип регистрации устройства на платформе.

    Устройство пользователя появится в сервисе edna после регистрации. Сейчас доступен только автоматический способ регистрации. Скоро к нему будет добавлен ручной способ.
    • При автоматической регистрации библиотека edna самостоятельно регистрирует устройство в сервисе edna. Этот способ проще, не требует от вас управлять регистрацией, но не рекомендуется для отправки конфиденциальных данных.
    • После появления ручного способа ваш бэкенд сможет самостоятельно регистрировать устройство в сервисе edna через специальный метод API.
  2. Для регистрации пользователя в сервисе вызовите метод login библиотеки, укажите идентификатор пользователя и тип идентификатора SubscriberIdType.

Следует вызывать метод только после успешной авторизации пользователя в вашем приложении:

PushX.login("79000000000", SubscriberIdType.PHONE_NUMBER)
PushX.login("79000000000", SubscriberIdType.PHONE_NUMBER.INSTANCE)

Доступны следующие виды SubscriberIdType:

  • Номер телефона (PhoneNumber)
  • Адрес электронной почты (Email)
  • Идентификаторы Facebook*, Телеграм, Гугл, Эпл, Яндекс (FacebookId*, TelegramId, GoogleId, AppleId, YandexId)
  • Внутренние идентификаторы пользователя (ExtUserId, CookieId)
  • UTM-метка (UTM)
  1. В момент деавторизации пользователя в приложении вызовите метод logout библиотеки, чтобы отключить устройство пользователя в сервисе edna:
PushX.logout()

* Деятельность сети запрещена на территории РФ

Шаг 5. Скомпилируйте и запустите приложение

  1. Подключите к интернету устройство для проверки интеграции.
  2. Скомпилируйте и запустите приложение.
  3. На странице Настройки > Каналы > Настройка приложения Android в Платформе edna после запуска приложения нажмите Далее — откроется экран ожидания регистрации устройства (Шаг 6 на экране).

Шаг 6. Проверьте подключение устройства и протестируйте получение пуша

На данном шаге сервис edna поможет проверить корректность интеграции. Если всё сделано правильно, вы увидите название своего тестового устройства и кнопку отправки тестового пуша. Если вы запустили приложение на нескольких устройствах, на данном шаге сможете увидеть только последнее подключенное.

  1. Нажмите Протестировать пуши.

  2. Проверьте, что пуш приходит и отображается на тестовом устройстве.
  3. Если пуш пришёл и отображается как следует, подтвердите доставку пуша, нажав Да.

Готово! Теперь можете настроить каскад и запустить рассылку.

Подключение пушей Андроид
Cледующая статья Подключение пушей Huawei к зарегистрированному приложению