Тестирование плагина Cordova Firebase: работает на Android; iOS, нет такой удачи ...
Я создал необходимые идентификаторы, сертификаты и закрытые ключи в своей учетной записи разработчика и на моем Mac и настроил приложение «iOS» в консоли Firebase.
К сведению: в конфигурации Cloud Messaging в Firebase я использую метод APN Auth Key, а не сертификат dev, поскольку Firebase указывает предпочтение метода Auth Key.
Итак, я создал новое приложение Cordova - образно называемое «pushnotificationsdemo», вот шаги, которые я использовал для создания приложения, настройки FCM и его тестирования:
Создание приложения Cordova с помощью плагина Firebase:
cordova —version
8.1.2 (cordova-lib@8.1.1)
cordova pushnotificationsdemo com.XXX.pushnotifications.com “Push Notifications Demo”
cd push*
cordova plugin add cordova-plugin-firebase
[скопировать «GoogleService-Info.plist», загруженный с консоли Firebase, в корневую папку нового проекта Cordova]
cordova platform add ios
* Использование cordova-fetch для cordova-ios@~4.5.4
Добавление проекта ios ...
Создание проекта Cordova для платформы iOS:
Путь: платформы / IOS
Пакет: com.foliagos.pushnotificationsdemo
Название: Демонстрация push-уведомлений
iOS проект создан с помощью cordova-ios@4.5.5
Установка "cordova-plugin-firebase" для ios
Обнаружен плагин "cordova-plugin-whitelist" в config.xml. Добавление его в проект
Установка "cordova-plugin-whitelist" для ios
Добавление cordova-plugin-whitelist в package.json
Сохранена информация о плагине для "cordova-plugin-whitelist" в config.xml
Подготовка Firebase на iOS
- обнаружение флага сохранения или автосохранения
Сохранение ios@~4.5.5 в файл config.xml ... *
Открыть проект iOS в Xcode ( версия 10.1 ):
- Установите команду подписи в «Общие» (чтобы прекратить ошибку Code 65 при попытке создать приложение с помощью командной строки Cordova)
Я использую Xcode10, поэтому, пока я там, я также установил тип сборки на «устаревшую» систему (поскольку Cordova 8.1.2 не совместима с новой системой сборки):
И так как я хочу увидеть много отладочной информации, я также установил это в Xcode:
- Продукт | Схема | Редактировать схему | вкладка: Аргументы -> Аргументы переданы при запуске, добавьте следующее: «-FIRAnalyticsDebugEnabled»
И добавил следующее в файл «Push-уведомления Demo-Info.plist» в папке проекта «Ресурсы»:
Я также добавил следующие настройки в config.xml Cordova, чтобы отключить резервное копирование в облаке:
<preferencename="BackupWebStorage"value="none"/>
Теперь я собираю новое приложение Cordova из командной строки (используя устаревшую систему сборки):
cordova build ios --buildFlag='-UseModernBuildSystem=0'
Архив успешно построен!
Вернувшись в Xcode, я создаю приложение, и в консоль записывается следующее:
8 нояб. 17:50:54 Демонстрация push-уведомлений [414]: - [I-ACS036002] Отчеты об экранах аналитики включены. Вызовите + [FIRAnalytics setScreenName: setScreenClass:], чтобы установить имя экрана или переопределить имя класса экрана по умолчанию. Чтобы отключить экранную отчетность, установите для флага FirebaseScreenReportingEnabled значение NO (булево) в Info.plist
2018-11-08 17: 50: 54.312 Демонстрация push-уведомлений [414: 66091] DiskCookieStorage меняет политику с 2 на 0, файл cookie: файл: /// private / var / mobile / Containers / Data / Application / 8AC0457B -0792-4A8F-8FFA-25655DB5DD8A / Библиотека / Печенье / Cookies.binarycookies
2018-11-08 17: 50: 54.558 Демонстрация push-уведомлений [414: 66091] Начиная с версии 4.5.5 собственной платформы Apache Cordova.
2018-11-08 17: 50: 54.558 Демонстрация push-уведомлений [414: 66091] Многозадачность -> Устройство: YES, Приложение: YES
2018-11-08 17: 50: 54,691 Push Nдемонстрация уведомлений [414: 66091] Использование UIWebView
2018-11-08 17: 50: 54.697 Демонстрация push-уведомлений [414: 66091] [CDVTimer] [console] 0.401020ms
2018-11-08 17: 50: 54.698 Демонстрация push-уведомлений [414: 66091] [CDVTimer] [handleopenurl] 0,479937ms
2018-11-08 17: 50: 54.707 Демонстрация push-уведомлений [414: 66091] [CDVTimer] [intetandnavigationfilter] 8.823991ms
2018-11-08 17: 50: 54.708 Демонстрация push-уведомлений [414: 66091] [CDVTimer] [жестовый обработчик] 0,429988ms
2018-11-08 17: 50: 54.708 Демонстрация push-уведомлений [414: 66091] Запуск плагина Firebase
2018-11-08 17: 50: 54.709 Демонстрация push-уведомлений [414: 66091] [CDVTimer] [firebaseplugin] 0.813961ms
2018-11-08 17: 50: 54.709 Демонстрация push-уведомлений [414: 66091] [CDVTimer] [TotalPluginStartup] 13.291001ms
2018-11-08 17: 50: 54.739 Демонстрация push-уведомлений [414: 66091] Найдено GoogleService-Info.plist, настройка: [FIRApp configureWithOptions]
2018-11-08 17: 50: 54.802 Демонстрация push-уведомлений [414: 66091] [Crashlytics] Версия 3.10.7 (130)
8 ноября 17:50:55 Демонстрация push-уведомлений [414]: 5.7.0 - [Firebase / Analytics] [I-ACS023007] Аналитика v.50101000 запущена
8 нояб. 17:50:55 Демонстрация push-уведомлений [414]: 5.7.0 - [Firebase / Messaging] [I-FCM001000] Включен прокси-сервер удаленных уведомлений FIRMessaging, что приведет к перегрузке обработчиков получателей удаленных уведомлений. Если вы предпочитаете вручную интегрировать Firebase Messaging, добавьте «FirebaseAppDelegateProxyEnabled» в ваш Info.plist и установите для него значение NO. Следуйте инструкциям по адресу:
https://firebase.google.com/docs/cloud-messaging/ios/client#method_swizzling_in_firebase_messaging
для обеспечения правильной интеграции.
8 ноября 17:50:55 Демонстрация push-уведомлений [414]: 5.7.0 - [Firebase / Messaging] [I-FCM002023] Объект не отвечает на -messaging: didReceiveRegistrationToken :. Пожалуйста, внедрите -messaging: didReceiveRegistrationToken: для предоставления токена FCM.
8 ноября 17:50:55 Демонстрация push-уведомлений [414]: 5.7.0 - [Firebase / Analytics] [I-ACS023008] Чтобы включить ведение журнала отладки, установите следующий аргумент приложения: -FIRAnalyticsDebugEnabled
2018-11-08 17: 50: 56.008 Демонстрация push-уведомлений [414: 66091] Сброс плагинов из-за загрузки страницы.
2018-11-08 17: 50: 56.165 Демонстрация push-уведомлений [414: 66091], подключенная к FCM.
2018-11-08 17: 50: 56.169 Демонстрация push-уведомлений [414: 66091] Токен InstanceID: e2Ds2K2cQbI: APA91bE… MqU
2018-11-08 17: 50: 56.358 Демонстрация push-уведомлений [414: 66091] Закончена загрузка: file: /// var / Containers / Bundle / Application / 39065AA6-1AEA-4EF5-A4D9-009185D6BE6D / Push% 20Notifications% 20Demo.app / WWW / index.html
2018-11-08 17: 50: 56.373 Демонстрация push-уведомлений [414: 66153] [Fabric] не удалось загрузить настройки Ошибка Domain = FABNetworkError Code = -5 "(null)" UserInfo = {type = 2, request_id = 7f2cefa10b4df773f0466752024ec30a, content_type = application / json; charset = utf-8, код_состояния = 403}
2018-11-08 17: 50: 56.537 Демонстрация push-уведомлений [414: 66091] Полученное событие: deviceready
Приложение работает на подключенном iPhone ( iOS версия 9.3.5 ) и отображает заставку демонстрационного приложения Cordova «Device Ready».
Теперь я смогу отправить Push-уведомление на iPhone с приложением Cordova? Для этого я захожу в консоль Firebase и отправляю Облачное сообщение (я использую ключ аутентификации APN), отправляю его с указанием токена экземпляра (показанного в предыдущем выводе консоли) в опции «Тест на устройстве» и получить следующий вывод в консоли Xcode:
2018-11-08 18:03:31.091 Push Notifications Demo[414:66091] {
"collapse_key" = "com.XXX.pushnotificationsdemo";
from = 293106682585;
notification = {
body = "Test notification to iOS device";
e = 1;
};
tap = 0;
}
Отлично! Устройство получило уведомление. НО я не получаю всплывающих уведомлений на самом устройстве.
ПРИМЕЧАНИЕ: приложение не запрашивало разрешение на использование Push-уведомлений (я получил этот запрос, когда тестировал с помощью плагина «fcm»)
Ладно, это может быть потому, что приложение находится на переднем плане? Поэтому я нажимаю кнопку «Домой» на iPhone, чтобы поместить его на задний план, и получаю это в консоли Xcode:
2018-11-08 18: 07: 05.856 Демонстрация push-уведомлений [414: 66091] Отключено от FCM
Не так здорово, теперь устройство отключено от FCM!
Я возвращаю приложение на передний план и вуаля! Консоль теперь сообщает:
2018-11-08 18: 08: 26.581 Демонстрация push-уведомлений [414: 66091], подключенная к FCM.
2018-11-08 18: 08: 26.586 Демонстрация push-уведомлений [414: 66091] Токен InstanceID: e2Ds2K2cQbI: APA91bE… MqU
Так что дела идут не очень хорошо! Похоже, что мое приложение Cordova не использует APN для отправки уведомлений на устройство, а вместо этого использует Firebase напрямую (предположим: Firebase не может обрабатывать, когда приложение находится в фоновом режиме, а APN может, следовательно, APN не используется)
Это мой второй день, когда я пытался заставить APN работать через cordova-plugin-firebase (я также попробовал плагин “fcm”, и он также оказался пустым), разумеется, версия Cordova для Android сработала коробки.
У кого-нибудь есть мысли о том, что я делаю неправильно?
Инструкции, которые я использовал для настройки Firebase для использования с iOS:
https://medium.com/@felipepucinelli/how-to-add-push-notifications-in-your-cordova-application-using-firebase-69fac067e821