С 2018 года стандартный проект PhoneGap Push Notification больше не работает.
Я пытаюсь найти функциональный способ отправки push-уведомлений в приложение.
До сих пор я сделал следующее:
- Настройка примера проекта push-уведомления Adobe Phonegap
- Настройте учетную запись Firebase Cloud, создайте проект и добавьте
Android приложение к нему.
- Скачал google-services.json
- Установил phonegap-plugin-push (1.8.0, так как, по-видимому, все, что выше 2.0 имеет проблемы), и включил мой идентификатор отправителя
- Установленный релиз кордова-android-support-gradle-релиз, релиз-кордова-android-play-services-gradle-релиз и релиз кордова-android-firebase-gradle-выпуск
- Исправлен файл index.js, чтобы идентификатор отправителя больше не отправлялся в объекте Android PushNotification.init (по-видимому, больше не требуется)
- Изменен index.js, чтобы pushServiceURL был включен в объект Browser PushNotification.init (очевидно, это требуется для тестирования в браузере)
- Настройка и публикация кампании push-сообщений в облаке Firebase для запуска при открытии приложения
Я использую Android 8.1.0. Я установил приложение Adobe Phonegap Developer
Результат:
Я использую PhoneGap в CLI.
В моем CLI я вижу следующее:
Updating manifest.json with push properties…
[phonegap] starting app server...
[phonegap] listening on 192.168.1.57:3000
[phonegap]
[phonegap] ctrl-c to stop the server
[phonegap]
Updating manifest.json with push properties…
Manifest updated with push sender ID
Manifest updated with push sender ID
[phonegap] 200 /socket.io/?EIO=3&transport=polling&t=MbsZP-M
[phonegap] 200 /socket.io/?
EIO=3&transport=polling&t=MbsZSMw&sid=Wyc9htsKdIkXHCtKAAAA
[phonegap] 200 /__api__/update
[phonegap] 200 /__api__/update
[phonegap] 200 /__api__/update
[phonegap] 200 /socket.io/socket.io.js
... пока все выглядит хорошо. Я загружаю приложение Phonegap Developer на свое устройство Android и подключаюсь, и вижу:
[phonegap] [console.warn] Content Security Policy has been modified to be:
<meta http-equiv="Content-Security-Policy" content="default-src * 'unsafe-inline' gap: ws: https://ssl.gstatic.com;style-src 'self' 'unsafe-inline' data: blob:;media-src *;img-src * 'self' data: content:;script-src * 'unsafe-inline' 'unsafe-eval' data: blob:;">
[phonegap] [console.warn] Content Security Policy has been added: <meta http-equiv="Content-Security-Policy" content="default-src * gap: ws: https://ssl.gstatic.com;img-src * 'self' data: content:;style-src 'self' 'unsafe-inline' data: blob:;script-src * 'unsafe-inline' 'unsafe-eval' data: blob:;">
[phonegap] 200 /__api__/appzip
[phonegap] 200 /socket.io/socket.io.js
[phonegap] 200 /socket.io/?EIO=3&transport=polling&t=MbsaRlk
[phonegap] 200 /socket.io/?EIO=3&transport=polling&t=MbsaRmS&sid=R8RzNxpm8Z-XkKNtAAAD
[phonegap] [console.log] Received Device Ready Event
[phonegap] [console.log] calling setup push
[phonegap] [console.log] calling push init
[phonegap] [console.log] after init
[phonegap] [console.log] Device Push ID:
[phonegap] dijoTzuKUVd:APA91dERSwx0ZeKAg2nqeOCTJnXkeuBqQQQrJgGi4c0m5I_G30IjF6IiHex8Muazj-QlNVmemqPf0dQQgvF0u5eJPMQ-VTTagpGVnQvgqZUEUSlzKnAabrw4kz0W45RnrsbJNKAbFZbh
[phonegap] [console.log] registration event: dijoTzuKUVd:APA91dERSwx0ZeKAg2nqeOCTJnXkeuBqQQQrJgGi4c0m5I_G30IjF6IiHex8Muazj-QlNVmemqPf0dQQgvF0u5eJPMQ-VTTagpGVnQvgqZUEUSlzKnAabrw4kz0W45RnrsbJNKAbFZbh
... опять все выглядит хорошо, и на экране появляется сообщение «зарегистрировано». так что все выглядит нормально, кроме сообщений не получено. И нет журнала консоли, чтобы сообщить мне о любой попытке сообщения.
Я также попытался добавить тестовое устройство, используя идентификатор экземпляра Firebase. Из моего кода я предполагаю: Поэтому я добавляю это, но Firebase говорит, что это «недопустимый формат». Затем я попробовал только код перед двоеточием ("dijoTzuKUVd"), который принял Firebase (но не знаю, верно ли это), и попытался снова отправить сообщение. Но все равно ничего.
Кто-нибудь знает, чего мне не хватает?
ДОПОЛНИТЕЛЬНО к этому, когда я запускаю приложение в любом браузере, я получаю ошибку JS:
Uncaught Error: Service Workers are not supported on your browser.
at new PushNotification (push.js:89)
at Object.init (push.js:366)
at Object.setupPush (index.js:42)
at Channel.onDeviceReady (index.js:38)
at Channel.fire (cordova.js:798)
at cordova.js:229
... так что я не могу проверить это и в браузере.
Любая помощь приветствуется.