PHP实现FCM推送

参数 用法 说明
目标
to 可选,字符串 此参数用于指定消息的接收者
registration_ids 可选,数组 此参数用于指定多播消息(发送到多个注册令牌的消息)的接收者。该数组必须包含至少 1 个、最多 1000 个注册令牌。
condition 可选,字符串 此参数指定用于确定消息目标的逻辑条件表达式。支持的条件:主题,格式为“'yourTopic' in topics”。此值不区分大小写。支持的运算符:&&、||。每个主题消息最多支持两个运算符。
选项
collapse_key 可选,字符串 此参数用于指定一组可折叠的消息(例如含有 collapse_key: "Updates Available"),以便当恢复传送时只发送最后一条消息。这是为了避免当设备恢复在线状态或变为活动状态时重复发送过多相同的消息。请注意,消息发送顺序并不固定。注意:在任意给定时间最多允许 4 个不同的折叠键。这意味着 FCM 连接服务器可以为每个客户端应用同时存储 4 条不同的消息。如果超出此数量,FCM 连接服务器将无法保证会保留哪 4 个折叠键。
priority 可选,字符串 设置消息的优先级。有效值包括“normal”(普通)和“high”(高)。在 iOS 中,这些值相当于 APNs 优先级中的 5 级和 10 级。默认情况下,通知消息以高优先级发送,数据消息以普通优先级发送。普通优先级可优化客户端应用的耗电量,因此除非需要立即传送,否则应使用普通优先级。对于普通优先级消息,应用可能会在一定延迟后收到消息。当以高优先级发送消息时,消息会立即发送,并且应用可显示通知。

更多参数看官方开发文档,至于官方开发文档链接嘛,不能填,会被锁文章,你懂的,自己搜索吧

    public static function sendMessages() {
        try {
            //准备配置
            $url = 'https://fcm.googleapis.com/fcm/send';
            $api_key = config('FCM_SERVER_KEY');
            //准备消息内容
            $data = [
                'message'    => 'hello',
                'noticeType' => 'news',
            ];
            $ids=['fzKUsrtVIkoPuLDQ9z-pVD:APA91bHJjEeesWUvuzhdwVSFhEl1Xlyihzw3r9AXNosnQkF-7R4HqrGDBR25HSa0YsJgCSeXPzfeED64j6dYmms4a0PtptUO0FIxWj11e67RV1-dz1IbvS-k5mbJUqWu9XU14fdb-8e_'.
            'f-5ZT3h1TtCsybWZEwbcp9:APA91bHmYmubbClgXHiF-lpbAq9l9JIPVDknUBff0N0EibzBoz371D8iQbKYOPs-fN3zVEgJhivj5mbBkEv_k1KlzSgFriX6KM2bA2EBjmuz6-LILTkctT2h3JvL2V1pUAqymJQ0KQgH'
            ];
            $fields = array(
                //群发使用registration_ids[为数组]  单个用户使用to
                //'to'             => 'f-5ZT3h1TtCsybWZEwbcp9:APA91bHmYmubbClgXHiF-lpbAq9l9JIPVDknUBff0N0EibzBoz371D8iQbKYOPs-fN3zVEgJhivj5mbBkEv_k1KlzSgFriX6KM2bA2EBjmuz6-LILTkctT2h3JvL2V1pUAqymJQ0KQgH',
                'registration_ids' => $ids,
                'data'             => $data,
                'time_to_live'     => 60,
            );
            $headers = array(
                'Authorization:key'.$api_key,
                'Content-Type:application/json'
            );
            // Open connection
            $ch = curl_init();
            // Set the url, number of POST vars, POST data
            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_TIMEOUT, 5);    //请求超时时间这里设置为5s
            // Disabling SSL Certificate support temporarly
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
            curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($fields));
            // Execute post
            $result = curl_exec($ch);
            // Close connection
            curl_close($ch);
            return $result;
        } catch (Exception $e) {
            return false;
        }
    }

返回的json格式

{"multicast_id":4818908994630396118,"success":1,"failure":1,"canonical_ids":0,"results":[{"error":"NotRegistered"}

succeee:1,"failure":0才是推送成功,

你可能感兴趣的:(PHP实现FCM推送)