Я пытаюсь отправить push-сообщения всем пользователям приложения для Android, созданного из Windows cordova версии 8.1.2 (cordova-lib@8.1.1),
Я могу отправить тестовое сообщение с консоли Firebase Google, что означает, что я все настроил правильно. На заблокированном экране моего телефона с Android обычно выводилось push-сообщение в виде уведомления.
Когда я пытаюсь отправить push-сообщение из php-скрипта, я не получаю push-уведомление. Этот php-скрипт раньше работал с предыдущей версией приложения, но почему-то он перестал работать.
Ниже приведены мой код и скрипт:
config.xml
xml version='1.0' encoding='utf-8'?>
<widget id="com.testapp" version="1.20" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.20">
<name>App name</name>
<description>
My first app
</description>
<author email="myemail" href="http://somewebsite">
Larry
</author>
<content src="index.html" />
<plugin name="cordova-plugin-whitelist" spec="1" />
<access origin="*" />
<allow-intent href="http://*/*" />
<allow-intent href="https://*/*" />
<allow-intent href="tel:*" />
<allow-intent href="sms:*" />
<allow-intent href="mailto:*" />
<allow-intent href="geo:*" />
<platform name="android">
<allow-intent href="market:*" />
</platform>
<icon src="www/img/icon.png" />
<platform name="ios">
<allow-intent href="itms:*" />
<allow-intent href="itms-apps:*" />
</platform>
<plugin name="phonegap-plugin-push" spec="https://github.com/phonegap/phonegap-plugin-push">
<variable name="ANDROID_SUPPORT_V13_VERSION" value="27.+" />
<variable name="FCM_VERSION" value="17.0.+" />
<variable name="SENDER_ID" value="123456789" />
</plugin>
<engine name="android" spec="^7.1.1" />
</widget>
index.js
var app = {
// Application Constructor
initialize: function() {
document.addEventListener('deviceready', this.onDeviceReady.bind(this), false);
},
onDeviceReady: function() {
this.receivedEvent('deviceready');
PushNotification;
},
// Update DOM on a Received Event
receivedEvent: function(id) {
var parentElement = document.getElementById(id);
var listeningElement = parentElement.querySelector('.listening');
var receivedElement = parentElement.querySelector('.received');
listeningElement.setAttribute('style', 'display:none;');
receivedElement.setAttribute('style', 'display:block;');
console.log('Received Event: ' + id);
},
var push = PushNotification.init({
android: {
"senderID": "123456789"
},
browser: {
pushServiceURL: 'http://push.api.phonegap.com/v1/push'
},
ios: {
alert: "true",
badge: "true",
sound: "true"
},
windows: {}
});
push.on('registration', function(data) {
// data.registrationId
//store this in your server for future use
});
push.on('notification', function(data) {
data.message,
data.title,
data.count,
data.sound,
// data.image,
// data.additionalData
});
push.on('error', function(e) {
// e.message
});
};
app.initialize();
php script
<?php
define( 'API_ACCESS_KEY', 'AAAAAAAAAAAAAAAAAAA');
$fields = array (
'to' => '/topics/alert',
'data'=> array( 'title' => 'Just a test', 'message' => 'Hello world', 'content-available' => '1' ),
);
$headers = array (
'Authorization: key=' . API_ACCESS_KEY,
'Content-Type: application/json'
);
$ch = curl_init();
curl_setopt( $ch,CURLOPT_URL, 'https://fcm.googleapis.com/fcm/send' );
curl_setopt( $ch,CURLOPT_POST, true );
curl_setopt( $ch,CURLOPT_HTTPHEADER, $headers );
curl_setopt( $ch,CURLOPT_RETURNTRANSFER, true );
curl_setopt( $ch,CURLOPT_SSL_VERIFYPEER, false );
curl_setopt( $ch,CURLOPT_POSTFIELDS, json_encode( $fields ) );
$result = curl_exec($ch );
curl_close( $ch );
echo $result;
?>
Что мне не хватает? Я должен добавить следующее в файл index.js? Пробовал, но это не сработало.
android: {
"senderID": "123456789",
"topics" : ['alert'] // add this line
},