firebase — FCM отправляет уведомление через консоль fcm на мое устройство ios, но из службы php не отправляет уведомление

FCM отправляет уведомление через консоль fcm на мое устройство ios, но из службы php оно не отправляет уведомление. Я хочу отправить уведомление в свое приложение с помощью FCM. Я реализовал веб-сервисы в php для отправки сообщения в приложение на моем сервере приложений. Для этого я создал 4 сервиса.

  1. group_create.php
  2. device_add.php
  3. device_remove.php
  4. send_comments.php

После создания группы я успешно получил ключ уведомления и зарегистрировал регистрационный идентификатор с помощью fcm. когда я вызываю send_comments.php с ключом уведомления, он возвращает данные json с {«success»: 1, «fail»: 0}. Но я не получил никакого уведомления о моем IOS. Я реализовал все методы правильно. Он хорошо работает с консолью fcm, но не с php-сервисом. Может кто-нибудь знает об этом. Я прилагаю все 4 PHP-файлы с ним. Пожалуйста, помогите мне.

group_create.php

<?php
$url = 'https://android.googleapis.com/gcm/notification';

$notification_key_name = $_REQUEST['notification_key_name'];
$regid = $_REQUEST['regid'];
$fields = array(
"operation"=>"create",
"notification_key_name"=>$notification_key_name,
"registration_ids"=> array($regid)
);
$fields = json_encode( $fields );

$headers = array (
"Authorization:key=A************************",
"Content-Type:application/json",
"project_id:78508******");

$ch = curl_init ();
curl_setopt ( $ch, CURLOPT_URL, $url );
curl_setopt ( $ch, CURLOPT_POST, true );
curl_setopt ( $ch, CURLOPT_HTTPHEADER, $headers );
curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, true );
curl_setopt ( $ch, CURLOPT_POSTFIELDS, $fields );

$result = curl_exec ( $ch );

//echo $result;
$res_notification_key = json_decode($result,true);

if(array_key_exists('notification_key', $res_notification_key)){

$notification_key = $res_notification_key['notification_key'];

echo $notification_key;

}

else{

echo $result;

}
curl_close ( $ch );
?>

device_add.php

<?php

$senderId = "785********";
$notification_key_name= $_REQUEST['notification_key_name'];
$reg_id = $_REQUEST['regid'];
$notification_key = $_REQUEST['not_key'];
$apiKey =

$url = 'https://android.googleapis.com/gcm/notification';

$headers = array (
"Accept:application/json",
"Authorization:key=A******************",
"Content-Type:application/json",
"project_id:78508*****");$fields = array(
"operation"=>"add",
"notification_key_name"=> $notification_key_name,
"registration_ids"=> array($reg_id),
"notification_key"=>$notification_key
);
$fields = json_encode( $fields );

$ch = curl_init ();
curl_setopt ( $ch, CURLOPT_URL, $url );
curl_setopt ( $ch, CURLOPT_POST, true );
curl_setopt ( $ch, CURLOPT_HTTPHEADER, $headers );
curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, true );
curl_setopt ( $ch, CURLOPT_POSTFIELDS, $fields );$result = curl_exec ( $ch );

echo $result;
$res_notification_key = json_decode($result,true);

if(array_key_exists('notification_key', $res_notification_key)){$notification_key = $res_notification_key['notification_key'];

echo $notification_key;

}

else{

echo $result;

}
curl_close ( $ch );
?>

device_remove.php

<?php

$senderId = "78508*****";
$notification_key_name= $_REQUEST['notification_key_name'];
$reg_id = $_REQUEST['regid'];
$notification_key = $_REQUEST['not_key'];
$apiKey =

$url = 'https://android.googleapis.com/gcm/notification';

$headers = array (
"Accept:application/json",
"Authorization:key=A***********",
"Content-Type:application/json",
"project_id:78508*****");$fields = array(
"operation"=>"remove",
"notification_key_name"=> $notification_key_name,
"registration_ids"=> array($reg_id),
"notification_key"=>$notification_key
);
$fields = json_encode( $fields );

$ch = curl_init ();
curl_setopt ( $ch, CURLOPT_URL, $url );
curl_setopt ( $ch, CURLOPT_POST, true );
curl_setopt ( $ch, CURLOPT_HTTPHEADER, $headers );
curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, true );
curl_setopt ( $ch, CURLOPT_POSTFIELDS, $fields );$result = curl_exec ( $ch );

echo $result;
$res_notification_key = json_decode($result,true);if(array_key_exists('notification_key', $res_notification_key)){$notification_key = $res_notification_key['notification_key'];

echo $notification_key;

}

else{

echo $result;

}
curl_close ( $ch );
?>

send_comments.php

<?php

$senderId = "78508*****";
$notification_key = $_REQUEST['not_key'];

$url = 'https://fcm.googleapis.com/fcm/send';

$headers = array (
"Authorization:key=A*****************",
"Content-Type:application/json",);

$msg = array("hello"=>"This is a Firebase Cloud Messaging Device Group Message!");

$msg_dict = json_encode($msg);

//echo $msg_dict;

$fields = array(
"to"=>$notification_key,
"data"=>array(
"message" => "hell",

),
);
$fields = json_encode( $fields );

$ch = curl_init ();
curl_setopt ( $ch, CURLOPT_URL, $url );
curl_setopt ( $ch, CURLOPT_POST, true );
curl_setopt ( $ch, CURLOPT_HTTPHEADER, $headers );
curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, true );
curl_setopt ( $ch, CURLOPT_POSTFIELDS, $fields );

$result = curl_exec ( $ch );

echo $result;
$res_notification_key = json_decode($result,true);

curl_close ( $ch );
?>

0

Решение

APNs следует формату

{"aps":{"alert":"Testing.. (0)","badge":1,"sound":"default"}}

т.е.

{
"aps":{
"alert":"message here"}
}

если формат отправки со стороны сервера такой, то только iPhone будет отображать уведомления, другие мудрые данные уведомлений будут печататься только в консоли через

- (void)applicationReceivedRemoteMessage:(FIRMessagingRemoteMessage         *)remoteMessage {
// Print full message
NSLog(@"Notification :%@", remoteMessage.appData);
}

но не отображается в списке уведомлений.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]