237

通知用の新しい Google サービスから始めFirebase Cloud Messagingます。

このコードhttps://github.com/firebase/quickstart-android/tree/master/messagingのおかげで、 Firebase ユーザー コンソールから Android デバイスに通知を送信できました。

Firebase コンソールを使用せずに通知を送信する API または方法はありますか? たとえば、PHP API などを使用して、自分のサーバーから直接通知を作成します。

4

17 に答える 17

65

これはCURLを使用して機能します

function sendGCM($message, $id) {


    $url = 'https://fcm.googleapis.com/fcm/send';

    $fields = array (
            'registration_ids' => array (
                    $id
            ),
            'data' => array (
                    "message" => $message
            )
    );
    $fields = json_encode ( $fields );

    $headers = array (
            'Authorization: key=' . "YOUR_KEY_HERE",
            '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 );
}

?>

$messageデバイスに送信するメッセージです

$idデバイス登録トークンです

YOUR_KEY_HEREサーバー API キー (またはレガシー サーバー API キー) です。

于 2016-08-20T20:28:29.567 に答える
48

curl を使用した例

特定のデバイスにメッセージを送信する

特定のデバイスにメッセージを送信するには、 を特定のアプリ インスタンスの登録トークンに設定します。

curl -H "Content-type: application/json" -H "Authorization:key=<Your Api key>"  -X POST -d '{ "data": { "score": "5x1","time": "15:10"},"to" : "<registration token>"}' https://fcm.googleapis.com/fcm/send

トピックにメッセージを送信

トピックは次のとおりです: /topics/foo-bar

curl -H "Content-type: application/json" -H "Authorization:key=<Your Api key>"  -X POST -d '{ "to": "/topics/foo-bar","data": { "message": "This is a Firebase Cloud Messaging Topic Message!"}}' https://fcm.googleapis.com/fcm/send

デバイス グループにメッセージを送信する

デバイス グループへのメッセージの送信は、個々のデバイスへのメッセージの送信と非常によく似ています。to パラメータをデバイス グループの一意の通知キーに設定します。

curl -H "Content-type: application/json" -H "Authorization:key=<Your Api key>"  -X POST -d '{"to": "<aUniqueKey>","data": {"hello": "This is a Firebase Cloud Messaging Device Group Message!"}}' https://fcm.googleapis.com/fcm/send

サービス API を使用した例

API URL :https://fcm.googleapis.com/fcm/send

ヘッダー

Content-type: application/json
Authorization:key=<Your Api key>

リクエスト方法:POST

リクエスト本文

特定のデバイスへのメッセージ

{
  "data": {
    "score": "5x1",
    "time": "15:10"
  },
  "to": "<registration token>"
}

トピックスへのメッセージ

{
  "to": "/topics/foo-bar",
  "data": {
    "message": "This is a Firebase Cloud Messaging Topic Message!"
  }
}

デバイス グループへのメッセージ

{
  "to": "<aUniqueKey>",
  "data": {
    "hello": "This is a Firebase Cloud Messaging Device Group Message!"
  }
}
于 2016-08-12T10:22:01.673 に答える
25

Frank が述べたように、Firebase Cloud Messaging (FCM) HTTP API を使用して、独自のバックエンドからプッシュ通知をトリガーできます。しかし、あなたはできないでしょう

  1. Firebase ユーザー識別子 (UID) に通知を送信し、
  2. ユーザー セグメントに通知を送信します (ユーザー コンソールでできるように、プロパティとイベントをターゲットにします)。

つまり、FCM/GCM 登録 ID (プッシュ トークン) を自分で保存するか、FCM トピックを使用してユーザーをサブスクライブする必要があります。また、 FCM は Firebase Notifications の API ではないことにも注意してください。これは、スケジューリングや開封率分析を行わない下位レベルの API です。Firebase Notifications は FCM の上に構築されています。

于 2016-05-23T14:20:25.653 に答える
1

これは、CURL を使用した私のプロジェクトの作業コードです。

<?PHP

// API access key from Google API's Console
( 'API_ACCESS_KEY', 'YOUR-API-ACCESS-KEY-GOES-HERE' );


 $registrationIds = array( $_GET['id'] );

  // prep the bundle
 $msg = array
 (
   'message'    => 'here is a message. message',
    'title'     => 'This is a title. title',
    'subtitle'  => 'This is a subtitle. subtitle',
    'tickerText'    => 'Ticker text here...Ticker text here...Ticker text here',
    'vibrate'   => 1,
    'sound'     => 1,
    'largeIcon' => 'large_icon',
    'smallIcon' => 'small_icon'
 );

 $fields = array
 (
    // use this to method if want to send to topics
    // 'to' => 'topics/all'
    'registration_ids'  => $registrationIds,
     'data'         => $msg
 );

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

 $ch = curl_init();
 curl_setopt( $ch,CURLOPT_URL, 'https://android.googleapis.com/gcm/send' );
 curl_setopt( $ch,CURLOPT_POST, true );
 curl_setopt( $ch,CURLOPT_HTTPHEADER, $headers );
 curl_setopt( $ch,CURLOPT_RETURNTRANSFER, true );
 curl_setopt( $ch,CURLOPT_SSL_VERIFYPEER, false );
 curl_setopt( $ch,CURLOPT_POSTFIELDS, json_encode( $fields ) );
 $result = curl_exec($ch );
 curl_close( $ch );

 echo $result;
于 2020-09-21T07:44:43.757 に答える
1

または、Firebase クラウド関数を使用することもできます。これは、プッシュ通知を実装するためのより簡単な方法です。 firebase/関数サンプル

于 2018-01-19T13:36:17.067 に答える