7

cron ジョブを使用して通知を送信しようとしています。GCM から FCM に移行しました。私のサーバー側では、変更し、データを に変更するhttps://android.googleapis.com/gcm/send to https://fcm.googleapis.com/fcm/sendように要求する方法も更新しました。渡されたjsonを確認すると、有効なjsonですが、エラーが発生しています。とにかくこれを解決する方法はありますか?registration_idstoField "to" must be a JSON string

これが私のコードです

function sendNotificationFCM($apiKey, $registrationIDs, $messageText,$id) {


    $headers = array(
            'Content-Type:application/json',
            'Authorization:key=' . $apiKey
    );

    $message = array(
            'to' => $registrationIDs,
            'data' => array(
                    "message" => $messageText,
                    "id" => $id,
            ),
    );


    $ch = curl_init();

    curl_setopt_array($ch, array(
            CURLOPT_URL => 'https://fcm.googleapis.com/fcm/send',
            CURLOPT_HTTPHEADER => $headers,
            CURLOPT_POST => true,
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_POSTFIELDS => json_encode($message)
    ));

    $response = curl_exec($ch);
    curl_close($ch);

    return $response;
}
4

4 に答える 4

10

に明示的に変換$registrationIDsしてみてくださいstring

$message = array(
        'to' => (string)$registrationIDs,
        'data' => array(
                "message" => $messageText,
                "id" => $id,
        ),
);

編集された回答

'to'パラメータstringには、メッセージの受信者である - が 必要です。

別の$registrationIDsパラメータを (文字列配列として) に渡すことができます'registration_ids'

コードを次のように編集します。

$recipient = "YOUR_MESSAGE_RECIPIENT";

$message = array(
        'to' => $recipient,
        'registration_ids' => $registrationIDs,
        'data' => array(
                "message" => $messageText,
                "id" => $id,
        ),
);

どこ$recipientですか

登録トークン、通知キー、またはトピック。

これを参照してください: Firebase Cloud Messaging HTTP Protocol

于 2016-06-01T06:24:11.833 に答える
2

を文字列にしてみてください:

Content-Type:application/json
Authorization:key=AIzaSyZ-1u...0GBYzPu7Udno5aA

{
  "to" : "bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
  "data" : {
   ...
 },
}
于 2016-06-01T06:23:35.620 に答える