Cara menggunakan firebase support php

Saya mulai dengan layanan Google baru untuk notifikasi, Firebase Cloud Messaging.

Berkat kode ini https://github.com/firebase/quickstart-Android/tree/master/messaging Saya dapat mengirim pemberitahuan dari Firebase User Console ke perangkat Android saya.

Apakah ada API atau cara untuk mengirim pemberitahuan tanpa menggunakan Firebase console? Maksud saya, misalnya, PHP API atau semacamnya, untuk membuat pemberitahuan dari server saya sendiri secara langsung.

Ini berfungsi menggunakan 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 adalah pesan Anda untuk dikirim ke perangkat

$id adalah token pendaftaran perangkat

YOUR_KEY_HERE adalah Kunci API Server Anda (atau Kunci API Server Legacy)

Gunakan api layanan.

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

Jenis Metode: POST

Tajuk:

Content-Type: application/json
Authorization: key=your api key

Tubuh/Muatan:

{ "notification": {
    "title": "Your Title",
    "text": "Your Text",
     "click_action": "OPEN_ACTIVITY_1" // should match to your intent filter
  },
    "data": {
    "keyname": "any value " //you can get this data as extras in your activity and this data is optional
    },
  "to" : "to_id(firebase refreshedToken)"
} 

Dan dengan ini di aplikasi Anda, Anda dapat menambahkan kode di bawah ini dalam aktivitas Anda untuk dipanggil:

<intent-filter>
    <action Android:name="OPEN_ACTIVITY_1" />
    <category Android:name="Android.intent.category.DEFAULT" />
</intent-filter>

Juga periksa jawabannya di Firebase onMessageReceived tidak dipanggil saat aplikasi di latar belakang

Contoh menggunakan curl

Kirim pesan ke perangkat tertentu

Untuk mengirim pesan ke perangkat tertentu, atur token registrasi untuk instance aplikasi tertentu

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

Kirim pesan ke topik

di sini topiknya adalah:/topik/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

Kirim pesan ke grup perangkat

Mengirim pesan ke grup perangkat sangat mirip dengan mengirim pesan ke perangkat individual. Setel parameter to ke kunci notifikasi unik untuk grup perangkat

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

Contoh menggunakan API Layanan

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

Tajuk

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

Metode Permintaan: POST

Badan Permintaan

Pesan ke perangkat tertentu

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

Pesan ke topik

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

Pesan ke grup perangkat

{
  "to": "<aUniqueKey>",
  "data": {
    "hello": "This is a Firebase Cloud Messaging Device Group Message!"
  }
}

Seperti yang disebutkan oleh Frank, Anda dapat menggunakan API HTTP Firebase Cloud Messaging (FCM) untuk memicu pemberitahuan Push dari back-end Anda sendiri. Tapi kamu tidak akan bisa

  1. mengirim pemberitahuan ke Firebase User Identifier (UID) dan
  2. mengirim pemberitahuan ke segmen pengguna (menargetkan properti & acara seperti yang Anda bisa di konsol pengguna).

Artinya: Anda harus menyimpan id pendaftaran FCM/GCM (Push token) sendiri atau menggunakan topik FCM untuk berlangganan pengguna. Ingat juga bahwa FCM bukan API untuk Firebase Notification , ini adalah API level rendah tanpa penjadwalan atau analitik tarif terbuka. Firebase Notification dibuat di atas FCM.

Pertama, Anda perlu mendapatkan token dari Android dan kemudian Anda dapat memanggil kode php ini dan Anda bahkan dapat mengirim data untuk tindakan lebih lanjut di aplikasi Anda.

 <?php

// Call .php?Action=M&t=title&m=message&r=token
$action=$_GET["Action"];


switch ($action) {
    Case "M":
         $r=$_GET["r"];
        $t=$_GET["t"];
        $m=$_GET["m"];

        $j=json_decode(notify($r, $t, $m));

        $succ=0;
        $fail=0;

        $succ=$j->{'success'};
        $fail=$j->{'failure'};

        print "Success: " . $succ . "<br>";
        print "Fail   : " . $fail . "<br>";

        break;


default:
        print json_encode ("Error: Function not defined ->" . $action);
}

function notify ($r, $t, $m)
    {
    // API access key from Google API's Console
        if (!defined('API_ACCESS_KEY')) define( 'API_ACCESS_KEY', 'Insert here' );
        $tokenarray = array($r);
        // prep the bundle
        $msg = array
        (
            'title'     => $t,
            'message'     => $m,
           'MyKey1'       => 'MyData1',
            'MyKey2'       => 'MyData2', 

        );
        $fields = array
        (
            'registration_ids'     => $tokenarray,
            'data'            => $msg
        );

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

        $ch = curl_init();
        curl_setopt( $ch,CURLOPT_URL, 'fcm.googleapis.com/fcm/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 );
        return $result;
    }


?>

Pemberitahuan atau pesan data dapat dikirim ke server perpesanan cloud berbasis firebase menggunakan titik akhir API FCM HTTP v1. https://fcm.googleapis.com/v1/projects/zoftino-stores/messages:send .

Anda perlu membuat dan mengunduh kunci pribadi akun layanan menggunakan Firebase console dan menghasilkan kunci akses menggunakan pustaka klien google api. Gunakan pustaka http apa pun untuk mengirim pesan ke titik akhir di atas, kode di bawah ini menunjukkan pengiriman pesan menggunakan OkHTTP. Anda dapat menemukan kode sisi server dan sisi klien yang lengkap di firebase cloud messaging dan mengirim pesan ke banyak klien menggunakan contoh topik fcm

Jika pesan klien tertentu perlu dikirim, Anda perlu mendapatkan kunci registrasi firebase klien, lihat mengirim pesan khusus klien atau perangkat ke server FCM contoh

String SCOPE = "https://www.googleapis.com/auth/firebase.messaging";
String FCM_ENDPOINT
     = "https://fcm.googleapis.com/v1/projects/zoftino-stores/messages:send";

GoogleCredential googleCredential = GoogleCredential
    .fromStream(new FileInputStream("firebase-private-key.json"))
    .createScoped(Arrays.asList(SCOPE));
googleCredential.refreshToken();
String token = googleCredential.getAccessToken();



final MediaType mediaType = MediaType.parse("application/json");

OkHttpClient httpClient = new OkHttpClient();

Request request = new Request.Builder()
    .url(FCM_ENDPOINT)
    .addHeader("Content-Type", "application/json; UTF-8")
    .addHeader("Authorization", "Bearer " + token)
    .post(RequestBody.create(mediaType, jsonMessage))
    .build();


Response response = httpClient.newCall(request).execute();
if (response.isSuccessful()) {
    log.info("Message sent to FCM server");
}

Atau Anda dapat menggunakan fungsi cloud Firebase, yang bagi saya cara yang lebih mudah untuk mengimplementasikan pemberitahuan Push Anda. firebase/fungsi-sampel

Menggunakan Firebase Console Anda dapat mengirim pesan ke semua pengguna berdasarkan paket aplikasi. Tetapi dengan CURL atau PHP API itu tidak mungkin.

Melalui API Anda dapat mengirim pemberitahuan ke ID perangkat tertentu atau pengguna yang berlangganan ke topik yang dipilih atau pengguna topik yang berlangganan.

Get a view on following link. It will help you.
https://firebase.google.com/docs/cloud-messaging/send-message

Jika Anda ingin mengirim pemberitahuan Push dari Android, periksa posting blog saya

Kirim Pemberitahuan Push dari 1 ponsel Android ke yang lain tanpa server.

mengirim pemberitahuan Push tidak lain adalah permintaan pos ke https://fcm.googleapis.com/fcm/send

cuplikan kode menggunakan volley:

    JSONObject json = new JSONObject();
 try {
 JSONObject userData=new JSONObject();
 userData.put("title","your title");
 userData.put("body","your body");

json.put("data",userData);
json.put("to", receiverFirebaseToken);
 }
 catch (JSONException e) {
 e.printStackTrace();
 }

JsonObjectRequest jsonObjectRequest = new JsonObjectRequest("https://fcm.googleapis.com/fcm/send", json, new Response.Listener<JSONObject>() {
 @Override
 public void onResponse(JSONObject response) {

Log.i("onResponse", "" + response.toString());
 }
 }, new Response.ErrorListener() {
 @Override
 public void onErrorResponse(VolleyError error) {

}
 }) {
 @Override
 public Map<String, String> getHeaders() throws AuthFailureError {

Map<String, String> params = new HashMap<String, String>();
 params.put("Authorizationey=" + SERVER_API_KEY);
 params.put("Content-Typepplication/json");
 return params;
 }
 };
 MySingleton.getInstance(context).addToRequestQueue(jsonObjectRequest);

Saya sarankan Anda semua untuk melihat posting blog saya untuk rincian lengkap.