为了账号安全,请及时绑定邮箱和手机立即绑定

使用 php 发送 fcm 通知和消息

使用 php 发送 fcm 通知和消息

PHP
慕勒3428872 2022-11-04 16:40:28
我正在努力使用 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 );}
查看完整描述

1 回答

?
杨魅力

TA贡献1811条经验 获得超6个赞

您应该在 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();

    }

}


查看完整回答
反对 回复 2022-11-04
  • 1 回答
  • 0 关注
  • 109 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信