Jump to content

Firebase Push-уведомления на iOS с 1.15.2.0


Yaroslav Brovin

1,135 views

Добрый день, уважаемые разработчики.

В этой статье мы рассмотрим настройку и использование сервиса Firebase Messaging (FCM)для приема push-уведомлений на платформе iOS.

Начиная с версии FGX Native 1.15.2.0, вы можете использовать Firebase не только на Android, но теперь и на iOS. Тем самым не нужно выполнять дополнительные действия для конвертации токенов устройств из Apple Push Service (APS) в токен Firebase (FCM), сделав ваш код полностью кроссплатформенным.

Перед тем, как приступить к работе с уведомлениями, необходимо выполнить регистрацию аккаунта Google.

Регистрация приложения в Firebase для iOS

1. Откройте Firebase Console и выполните вход в учетную запись Google. 

2. Нажмите кнопку "Создать проект"

image.png

3. Укажите название вашего проекта и нажмите кнопку "Continue". Вы можете использовать любое название. Например: "FGX Native project". 

image.png

4. На текущей странице вы можете отключить поддержку Google Analytics. Вы можете ее отключить. Однако, рекомендуем ее оставить. Так в будущем вы сможете использовать аналитику для данного проекта. Нажмите кнопку "Continue".

image.png

5. Выберите или создайте аккаунт Google Analytics. Я взял созданные раннее, в который будет добавлена аналитика для нового проекта. Нажмите кнопку "Create Project".

image.png

6. Ожидаем окончания процесса создания проекта в Firebase. По окончании нажимаем "Continue". Когда проект будет создан, вы увидите главную страницу:

image.png

7. Теперь необходимо зарегистрировать ваше FGX Native iOS приложение для этого нажимаете на кнопку с логотипом iOS.

8. Указываете имя пакета вашего iOS приложения, такое же, как у вашего приложения (если оно есть), или такое, какое оно будет (его можно будет указать)

  • Если у вас уже есть приложение, то узнать название пакета можно в настройках проекта: Project -> Options... -> Version Info > CFBundleIdentifier".
  • Если у вас еще нет приложения, то придумайте название пакета. Например: "ru.fgx.pushnotificationdemo".

image.png

9. Нажмите кнопку "Register app".

10. Скачиваем конфигурационный файл "GoogleService-Info.plist", нажав на кнопку "Download" и сохраняем файл в папку FGX Native проекта (можно сохранить в любое другое место). Этот файл содержит настройки для инициализации FGX Native приложения на iOS.

14. Заканчиваем добавление вашего приложения путем нажатия кнопок "Next" -> "Next" -> "Continue to console"

15. Теперь вы увидите ваше iOS приложение на главной странице.

image.png

Теперь необходимо выполнить настройку FGX Native приложения в IDE.

Настройка приложения

1. Откройте существующий проект или создайте новый.

  • Если вы создаете новый проект, то в мастере создания проекта обязательно укажите (на основании шага 8 регистрации приложения в Firebase):
    • Идентификатор организации. Например: "ru.fgx".
    • Имя проекта. Например: "pushnotificationdemo".
  • Если открываете существующий, то убедитесь, что название пакета в Project -> Options... -> Version Info > CFBundleIdentifier" соответствует названию из шага 8.

2. Откройте: "Главное меню" -> "Project ->  Deployment".

2.1. В выпадающем списке конфигурации выберите "All Configurations -> iOS-Device 64-bit platform".

Примечание: Если вы хотите разделять настройки для разных конфигураций, выберете соответствующую конфигурацию.    

2.2. Добавьте ранее скаченный файл настроек "GoogleService-Info.plist" (на основании шага 10 регистрации приложения в Firebase).

image.png

Примечание: Если этого не сделать, то при старте приложение упадет.

3. Откройте настройки проекта: "Project -> Options... -> Application > Services".

4. Перейдите к странице "Application -> Entitlment list". И поставьте галку напротив: "Receive push notification". 

3. Сохраните изменения.

4. Откройте главную форму вашего приложения и подключите модуль FGX.PushNotification.FCM

Примечание: FGX Native использует Firebase по умолчанию на Android. Однако, на iOS мы используем Apple Push Service по умолчанию. Поэтому Firebase библиотека не линкуется по умолчанию. По этому важно подключить данный модуль. 

5. Добавьте на форму компонент TfgPushNotificationService и укажите "ServiceNamne = FCM".

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

Получение токена устройства

При первом старте приложения, оно выполняет свою регистрацию в облаке Firebase. При этом облако выдает устройству уникальный токен DeviceToken. Перед тем, как отправить тестовое уведомление, необходимо узнать токен устройства. Для получения токена устройства нужно написать обработчик события "TfgPushNotificationService.OnDeviceTokenChanged". Данное событие вызывается каждый раз, когда выдается новый токен устройства. Токен устройства может меняться.

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

В данном примере, мы не будем его сохранять, а выведем в лог устройства.

procedure TFormMain.PushServiceDeviceTokenChanged(Sender: TObject; const ADeviceToken: string);
begin
  TfgLog.Info('Device token changed: deviceToken="%s"', [ADeviceToken]);
end;

Получение push-уведомления

Для получения токена устройства нужно написать обработчик события "TfgPushNotificationService.OnPushNotificationReceived". Данное событие вызывается, когда устройство принимает push-уведомление.

Примечание: В зависимости от реализации, событие может вызываться в разные моменты времени. Например, если приложение не в памяти или в фоне, то событие вызовется в момент нажатия пользователем на уведомление в Центре локальных уведомлений.

Пример вывода в лог полученного push-уведомления:

procedure TFormMain.PushServicePushNotificationReceived(Sender: TObject; const ANotification: TfgPushNotification);
begin
  TfgLog.Info('Notification received: notification="%s"', [ANotification.ToString]);
end;

Запустите приложение и запомните токен устройства из консоли. 

О том, как пользоваться Console для просмотра логов устройства, читайте в статье:

Отправка тестового сообщения

Чтобы отправить тестовое сообщение на конкретное устройство, можно воспользоваться Firebase консолью.  

1. Откройте консоль: https://console.firebase.google.com

2. Перейдите в меню навигации к разделу: "Engage -> Messaging"

3. Нажмите кнопку "Create your first campaign".

4. Выберите тип "Firebase Notification Messages".

4. Заполните данные уведомления. Например так:

image.png

5. Нажмите кнопку "Send test message". Консоль предложит указать на какие устройства необходимо отправить данное уведомление.

6. Укажите в поле токен устройства (раздел "Получение токена устройства") и нажмите кнопку "+".

7. Выполните отправку уведомления, путем нажатия на кнопку "Протестировать" и наблюдайте появление вашего уведомления в центре локального уведомления на устройстве:

image.png

Получение данных уведомления при старте приложения

Если пользователь нажимает на push-уведомление в центре уведомлений, то система запустит ваше приложение. В любой момент времени можно получить данные стартового уведомления напрямую из локального Firebase сервиса (Раздел "Получение Push-уведомлений").

var 
  Notifications: TArray<TfgPushNotification>; 
begin 
  Notifications := fgPushNotificationService1.StartupNotifications;
end;
  • Like 7

4 Comments


Recommended Comments

Текущая реализация с конвертацией продолжит работать?

Edited by Артем
Link to comment
  • Administrators
1 час назад, Артем сказал:

Текущая реализация с конвертацией продолжит работать?

Да, по умолчанию используется APS на iOS и FCM на Android.

  • Like 1
Link to comment

А правильно ли я понимаю, что с устройствами Huawei без Google Apps это не будет работать?

Link to comment
  • Administrators
20 часов назад, sebekin сказал:

А правильно ли я понимаю, что с устройствами Huawei без Google Apps это не будет работать?

Если я не ошибаюсь, то Firebase строится на основе GooglePlay. А Google Play не работает на Huawei OS, так что скорее всего нет, не будет.

P.S. Проверил зависимости, на Huawei работать не будет .

Link to comment
Guest
Add a comment...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...