使用 php 发送 fcm 通知和消息
send fcm notification and message using php
我正在努力使用 react-native-firebase 实现通知
根本没有调用onNotification函数,我快疯了。
不过我觉得可能是服务器的问题。
所以我请我们的 php 后端开发人员给我与 fcm 通知相关的服务器代码。
我认为他似乎只发送消息而不发送通知。
如果是对的,我怎么告诉他修复这个功能。如果不是,我不知道该怎么办了..
请帮助我了解这方面的知识!
谢谢大家!
function sendFCM($notif_array, $id) {
$API_KEY = "api_key";
$url = 'https://fcm.googleapis.com/fcm/send';
$fields = array (
'registration_ids' => array (
$id
),
// 'data' => array (
// "message" => $message,
// "type" => $notif_type
// )
'content_available'=>true,
'priority'=>'high',
'data' => $notif_array
);
$fields = json_encode ( $fields );
$headers = array (
'Authorization: key=' . $API_KEY,
'Content-Type: application/json'
);
$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;
curl_close ( $ch );
}
您应该在 php 端添加此代码:
function sendFCM($notif_array, $id) {
$API_KEY = "api_key";
$url = 'https://fcm.googleapis.com/fcm/send';
$message = [
'body' => 'Hello, This is a notification.',
'title' => 'Your Title',
'notification_type' => 'Test'
];
$notification = [
'body' => 'Hello, This is a notification.',
'title' => 'Your Title',
];
$fields = array (
'registration_ids' => array (
$id
),
'notification' => $notification,
'data' => $message,
'priority' => 'high',
);
$fields = json_encode ( $fields );
$headers = array (
'Authorization: key=' . $API_KEY,
'Content-Type: application/json'
);
$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 );
curl_close ( $ch );
return 'success';
}
对于IOS:
function iospush( $id ) {
$msg = 'Test notification';
$host = 'gateway.push.apple.com'; /Here is ecample */
$passphrase = YourIOSpassphrase;
$ios_notifiaction_certificate = '/add full path where ios certiticate stay';
try {
$streamContext = stream_context_create();
stream_context_set_option( $streamContext, 'ssl', 'local_cert', $ios_notifiaction_certificate );
stream_context_set_option( $streamContext, 'ssl', 'passphrase', $passphrase);
$apns = stream_socket_client( 'ssl://'.$host, $error, $errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $streamContext );
$payload[ 'aps' ] = array( 'alert' => $msg, 'badge' => '0', 'sound' => 'default', 'notification_type' => 'Test' );
$payload = json_encode( $payload );
$apnsMessage = chr(0) . pack( 'n', 32 ) . pack( 'H*', $id ) . pack( 'n', strlen( $payload ) ) . $payload;
$fwriteRes = fwrite( $apns, $apnsMessage, strlen( $apnsMessage ) );
fclose( $apns );
return 'Success';
} catch( Exception $e ) {
return true;
// return $e->getMessage();
}
}
我正在努力使用 react-native-firebase 实现通知
根本没有调用onNotification函数,我快疯了。
不过我觉得可能是服务器的问题。
所以我请我们的 php 后端开发人员给我与 fcm 通知相关的服务器代码。
我认为他似乎只发送消息而不发送通知。
如果是对的,我怎么告诉他修复这个功能。如果不是,我不知道该怎么办了..
请帮助我了解这方面的知识!
谢谢大家!
function sendFCM($notif_array, $id) {
$API_KEY = "api_key";
$url = 'https://fcm.googleapis.com/fcm/send';
$fields = array (
'registration_ids' => array (
$id
),
// 'data' => array (
// "message" => $message,
// "type" => $notif_type
// )
'content_available'=>true,
'priority'=>'high',
'data' => $notif_array
);
$fields = json_encode ( $fields );
$headers = array (
'Authorization: key=' . $API_KEY,
'Content-Type: application/json'
);
$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;
curl_close ( $ch );
}
您应该在 php 端添加此代码:
function sendFCM($notif_array, $id) {
$API_KEY = "api_key";
$url = 'https://fcm.googleapis.com/fcm/send';
$message = [
'body' => 'Hello, This is a notification.',
'title' => 'Your Title',
'notification_type' => 'Test'
];
$notification = [
'body' => 'Hello, This is a notification.',
'title' => 'Your Title',
];
$fields = array (
'registration_ids' => array (
$id
),
'notification' => $notification,
'data' => $message,
'priority' => 'high',
);
$fields = json_encode ( $fields );
$headers = array (
'Authorization: key=' . $API_KEY,
'Content-Type: application/json'
);
$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 );
curl_close ( $ch );
return 'success';
}
对于IOS:
function iospush( $id ) {
$msg = 'Test notification';
$host = 'gateway.push.apple.com'; /Here is ecample */
$passphrase = YourIOSpassphrase;
$ios_notifiaction_certificate = '/add full path where ios certiticate stay';
try {
$streamContext = stream_context_create();
stream_context_set_option( $streamContext, 'ssl', 'local_cert', $ios_notifiaction_certificate );
stream_context_set_option( $streamContext, 'ssl', 'passphrase', $passphrase);
$apns = stream_socket_client( 'ssl://'.$host, $error, $errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $streamContext );
$payload[ 'aps' ] = array( 'alert' => $msg, 'badge' => '0', 'sound' => 'default', 'notification_type' => 'Test' );
$payload = json_encode( $payload );
$apnsMessage = chr(0) . pack( 'n', 32 ) . pack( 'H*', $id ) . pack( 'n', strlen( $payload ) ) . $payload;
$fwriteRes = fwrite( $apns, $apnsMessage, strlen( $apnsMessage ) );
fclose( $apns );
return 'Success';
} catch( Exception $e ) {
return true;
// return $e->getMessage();
}
}