首頁  >  問答  >  主體

使用核心PHP發送影像的Firebase雲通知教學

這是我的 fcm_test.php 程式碼

foreach ($allTokens as $token) {
    echo $token . "<br>";

    // 
    // 发送 Firebase 通知到 FCM 令牌的代码开始
    //



    // 通知的数据有效负载
    $notification = [
        'title' => '通知的标题',
        'body' => '这是通知的正文。',
        'android' => [

            'imageUrl' => 'https://blog.pushwoosh.com/blog/content/images/2021/09/Android-12-Updates-for-Push-Notification-Senders---Pushwoosh.png'

        ],
    ];

    // 创建 HTTP 请求的头部
    $headers = [
        'Authorization: key=' . $serverKey,
        'Content-Type: application/json'
    ];

    // 创建 HTTP 请求的有效负载
    $payload = [
        'to' => $token,
        'notification' => $notification
    ];

    // 将有效负载转换为 JSON
    $jsonPayload = json_encode($payload);

    try {
        // 初始化 cURL 会话
        $ch = curl_init('https://fcm.googleapis.com/fcm/send');

        // 设置 cURL 选项
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonPayload);

        // 执行 cURL 会话
        $response = curl_exec($ch);

        // 检查 cURL 错误
        if ($response === false) {
            throw new Exception('cURL 错误: ' . curl_error($ch));
        }

        // 打印响应(用于调试目的)
        echo '响应: ' . $response . PHP_EOL;


        // 关闭 cURL 会话
        curl_close($ch);

        // 处理响应
        if ($response === false) {
            throw new Exception('发送通知失败。');
        } else {
            echo '通知发送成功。' . "<br><br>";
        }
    } catch (Exception $e) {
        echo '错误: ' . $e->getMessage();
    }
    // 发送 FCM 令牌的代码结束
}

我在 Android 通知中能夠取得標題和正文,但無法取得圖片。 我嘗試了多種 JSON 語法,但都無效,只能取得文字。

當我使用 Firebase GUI 時,我可以取得圖片。

在 Flutter UI 上存取圖片時,我使用以下程式碼:

print("${widget.message?.notification?.android?.imageUrl}");

如果我錯了,請隨意回答。這將非常有幫助。

P粉788571316P粉788571316422 天前642

全部回覆(1)我來回復

  • P粉541565322

    P粉5415653222023-09-17 09:05:22

    這是一個你可以嘗試的檢查清單。

    1. 確保你提交圖片的表單具有 enctype="multipart/form-data" 屬性。

    2. 如果你正在使用 API 發送圖片,它應該是
      base64_encode($image_path);

    回覆
    0
  • 取消回覆