php - मैं फायरबेस कंसोल के उपयोग के बिना फायरबेस क्लाउड मैसेजिंग अधिसूचना कैसे भेज सकता हूं?




android api (8)

कर्ल का उपयोग करने वाले उदाहरण

विशिष्ट उपकरणों को संदेश भेजें

विशिष्ट उपकरणों को संदेश भेजने के लिए, पंजीकरण ऐप को विशिष्ट ऐप इंस्टेंस के लिए सेट करें

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

विषयों को संदेश भेजें

यहाँ विषय है: / विषयों / फू-बार

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

उपकरण समूहों को संदेश भेजें

एक उपकरण समूह में संदेश भेजना एक व्यक्तिगत डिवाइस पर संदेश भेजने के समान है। डिवाइस समूह के लिए अद्वितीय अधिसूचना कुंजी के पैरामीटर के लिए सेट करें

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 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!"
  }
}

मैं सूचनाओं के लिए नई Google सेवा, Firebase Cloud Messaging साथ शुरू कर रहा हूं।

इस कोड के लिए धन्यवाद https://github.com/firebase/quickstart-android/tree/master/messaging मैं अपने एंड्रॉइड डिवाइस पर अपने फायरबेस यूजर कंसोल से सूचनाएं भेजने में सक्षम था।

क्या फायरबेस कंसोल का उपयोग किए बिना एक अधिसूचना भेजने का कोई एपीआई या तरीका है? मेरा मतलब है, उदाहरण के लिए, एक PHP एपीआई या ऐसा कुछ, सीधे अपने स्वयं के सर्वर से सूचनाएं बनाने के लिए।


FCM HTTP v1 API समापन बिंदु का उपयोग कर आधार क्लाउड मैसेजिंग सर्वर को सूचना या डेटा संदेश भेजा जा सकता है। https://fcm.googleapis.com/v1/projects/zoftino-stores/messages:send

आपको फायरबेस कंसोल का उपयोग करके सेवा खाते की निजी कुंजी को उत्पन्न करने और डाउनलोड करने की आवश्यकता है और Google एपीआई क्लाइंट लाइब्रेरी का उपयोग करके एक्सेस कुंजी उत्पन्न करना है। संदेश को पोस्ट करने के लिए किसी भी http लाइब्रेरी का उपयोग करें ऊपर के बिंदु पर, नीचे कोड ओकेएचटीपी का उपयोग करके संदेश पोस्ट करता है। आप फायरबस क्लाउड मैसेजिंग पर पूरा सर्वर साइड और क्लाइंट साइड कोड पा सकते हैं और कई क्लाइंट्स को मेसेज भेज सकते हैं जो fcm विषय उदाहरण का उपयोग कर रहे हैं

यदि किसी विशिष्ट क्लाइंट संदेश को भेजने की आवश्यकता है, तो आपको क्लाइंट की फायरबेस पंजीकरण कुंजी प्राप्त करने की आवश्यकता है, एफसीए सर्वर के उदाहरण के लिए क्लाइंट या डिवाइस विशिष्ट संदेश भेजना देखें।

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");
}

अगर आप android से पुश नोटिफिकेशन भेजना चाहते हैं तो मेरे ब्लॉग पोस्ट को देखें

बाहर सर्वर के साथ एक Android फोन से दूसरे के लिए पुश सूचनाएं भेजें।

पुश सूचना भेजना कुछ और नहीं बल्कि fcm.googleapis.com/fcm/send पोस्ट अनुरोध है

वॉली का उपयोग करके कोड स्निपेट:

    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);

मैं आप सभी को सुझाव देता हूं कि पूरी जानकारी के लिए मेरे ब्लॉग पोस्ट को देखें।


आप Google क्लाउड मैसेजिंग (GCM) के लिए उदाहरण के लिए PHP स्क्रिप्ट का उपयोग कर सकते हैं। Firebase, और इसका कंसोल, GCM के ठीक ऊपर है।

मुझे यह गितुब पर मिला: https://gist.github.com/prime31/5675017

संकेत: यह PHP स्क्रिप्ट एक Android अधिसूचना में परिणाम है।

इसलिए: यदि आप Android में सूचना प्राप्त करना चाहते हैं और दिखाना चाहते हैं, तो Koot का यह उत्तर पढ़ें।


जैसा कि फ्रैंक ने उल्लेख किया है, आप अपने स्वयं के बैक-एंड से पुश सूचना को ट्रिगर करने के लिए फायरबेस क्लाउड मैसेजिंग (एफसीएम) एचटीटीपी एपीआई का उपयोग कर सकते हैं। लेकिन आप नहीं कर पाएंगे

  1. फायरबेस उपयोगकर्ता पहचानकर्ता (यूआईडी) को सूचनाएं भेजें और
  2. उपयोगकर्ता खंडों को सूचनाएं भेजें (उपयोगकर्ता कंसोल पर आपके जैसे गुणों और घटनाओं को लक्षित कर सकते हैं)।

अर्थ: आपको अपने आप को FCM / GCM पंजीकरण आईडी (पुश टोकन) स्टोर करना होगा या उपयोगकर्ताओं की सदस्यता के लिए FCM विषयों का उपयोग करना होगा। यह भी ध्यान रखें कि एफसीएम फायरबेस नोटिफिकेशन के लिए एपीआई नहीं है , यह शेड्यूलिंग या ओपन-रेट एनालिटिक्स के बिना निचले स्तर का एपीआई है। फायरबेस नोटिफिकेशन का निर्माण एफसीएम में शीर्ष पर किया जाता है।


फायरबेस क्लाउड मैसेजिंग में एक सर्वर-साइड एपीआई है जिसे आप संदेश भेजने के लिए कॉल कर सकते हैं। https://firebase.google.com/docs/cloud-messaging/server देखें।

HTTP एंड-पॉइंट पर कॉल करने के लिए curl का उपयोग करना एक संदेश भेजना जितना सरल हो सकता है। https://firebase.google.com/docs/cloud-messaging/server#implementing-http-connection-server-protocol देखें

curl -X POST --header "Authorization: key=<API_ACCESS_KEY>" \
    --Header "Content-Type: application/json" \
    https://fcm.googleapis.com/fcm/send \
    -d "{\"to\":\"<YOUR_DEVICE_ID_TOKEN>\",\"notification\":{\"body\":\"Yellow\"},\"priority\":10}"

या आप फायरबेस क्लाउड फ़ंक्शंस का उपयोग कर सकते हैं, जो आपके पुश नोटिफिकेशन को लागू करने का आसान तरीका है। firebase/functions-samples


सबसे पहले आपको एंड्रॉइड से एक टोकन प्राप्त करने की आवश्यकता है और फिर आप इस php कोड को कॉल कर सकते हैं और आप अपने ऐप में आगे की कार्रवाई के लिए डेटा भी भेज सकते हैं।

 <?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;
    }


?>





firebase-cloud-messaging