У меня есть приложение для Android / ios, и я использую свой браузер с php для вставки статей в базу данных, а затем приложение выталкивает данные из базы данных с помощью ajax.
Что мне нужно, так этокогда я публикую статью на php (на стороне сервера), и он получает вставку, он отправляет уведомление на телефоны.
У меня есть это в моем приложении js:
const push = PushNotification.init({
android: {
vibrate: "true",
alert: "true",
badge: "true",
sound: "true"
},
browser: {
},
ios: {
vibrate: "true",
alert: "true",
badge: "true",
sound: "true"
},
windows: {}
});
push.on('registration', function(data) {
//alert(data.registrationId);
var registrationId=data.registrationId;
var dataString ="id_usuario="+registrationId;
if($.trim(registrationId).length>0){
$.ajax({
type: "POST",
url: "https://pizzarte.com/app/registarid.php",
data: dataString,
crossDomain: true,
cache: false,
})
}
});
push.on('notification', function(data) {
//alert(data.title+" Message: grgregregerg" +data.message);
});
push.on('error', function(e) {
alert(e);
});
Таккогда пользователь запускает приложение, оно сохраняет регистрационный идентификатор этого устройства и хранится в базе данных.Это работает просто отлично.Теперь на стороне сервера я извлекаю все зарегистрированные ID и пытаюсь отправить уведомление:
<?php
// API access key from Google API's Console - server key here https://console.developers.google.com/apis/credentials?authuser=2&project=project_name
define( 'API_ACCESS_KEY', 'this is my api access key, im using the server key');
$registrationIds = array("device_ids");
var_dump ($registrationIds);
// prep the bundle
$msg = array
(
'message' => 'here is a message. message',
'title' => 'This is a title. title',
'subtitle' => 'This is a subtitle. subtitle',
'tickerText' => 'Ticker text here...Ticker text here...Ticker text here',
'vibrate' => 1,
'sound' => 1
);
$fields = array
(
'registration_ids' => $registrationIds,
'data' => $msg
);
$headers = array
(
'Authorization: key=' . API_ACCESS_KEY,
'Content-Type: application/json'
);
var_dump ($headers);
$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;
Но я всегда получаю сообщение об ошибке «Несанкционированная ошибка 401»
В моем config.xmlу меня это тоже:
<plugin name="phonegap-plugin-push" spec="2.0.0" />
<variable name="SENDER_ID" value="xxxxxxxxxxxxx" />
</plugin>
<platform name="android">
<preference name="android-minSdkVersion" value="14" />
<allow-intent href="market:*" />
<resource-file src="google-services.json" target="google-services.json" />
</platform>
Что я здесь не так делаю?