11

मैंने एफसीएम के लिए रिसीवर तैयार किया और सभी उपकरणों को एक अधिसूचना भेज सकता है।एफसीएम के साथ विशिष्ट उपयोगकर्ताओं को अधिसूचना कैसे भेजें?

इस लिंक के साथ gcm-http.googleapis.com/gcm/send उपयोगकर्ताओं को, जो पंजीकृत है लक्षित करते हैं और json नीचे की तरह लक्ष्य उपकरणों के लिए पोस्ट करने के लिए भेज सकते हैं:

{ 
    "notification": { 
       "title": "sample Title", 
       "text": "sample text" }, 
     "to" : "[registration id]" 
     } 

हालांकि, मैं करने की जरूरत है ईमेल या नाम ... आदि के माध्यम से चुने गए उपयोगकर्ताओं को लक्षित करने के लिए नोटिफिकेशन भेजें, । उदाहरण के लिए:

{ 
    "notification": { 
       "title": "sample Title", 
       "text": "sample text" }, 
     "to" : "[email or name or sex ...]" 
     } 

मैं ऐसा कैसे कर सकता है? क्या मुझे कोई वेब सर्वर या कुछ और बनाने की आवश्यकता है?

उत्तर

14

मैं एक वेब सर्वर

हाँ बनाने की जरूरत क्या। आपको ऐसी जगह चाहिए जहां आप पंजीकरण आईडी में नाम/ईमेल मैप कर सकते हैं। ये पंजीयन आईडी, FCM के लिए अनुरोध में शामिल किया जाना चाहिए उदाहरण

के लिए
{ 
    'registration_ids': ['qrgqry34562456', '245346236ef'], 
    'notification': { 
     'body': '', 
     'title': '' 
    }, 
    'data': { 

    } 
} 

'qrgqry34562456' और '245346236ef' के लिए धक्का भेज देंगे।

कॉल में उपयोग की जाने वाली पंजीकरण आईडी वह है जिसे ऐप में इस कॉलबैक में 'टोकन' कहा जाता है।

public class MyService extends FirebaseInstanceIdService { 
    @Override 
    public void onTokenRefresh() { 
    } 
} 
+0

आपकी प्रतिक्रिया के लिए धन्यवाद। यह मेरे लिए सहायक है। मैंने एफसीएम से लगभग सभी दस्तावेज पढ़े हैं। वहाँ आपके उत्तर की तरह एक ही चीज wirte। मैं निश्चित होना चाहता हूं। क्योंकि मुझे लगता है कि अधिसूचना के लिए एक सर्वर है। –

+1

पंजीकरण_आईडी और पंजीकरण टोकन एक ही चीज़ है? –

+1

@AnggaAriWijaya yes –

0

आप इस कोड का उपयोग कर अन्य डिवाइस को संदेश भेज सकते हैं। इस कोड में सर्वर की कोई ज़रूरत नहीं है।

public String send(String to, String body) { 
      try { 

       final String apiKey = "AIzaSyBsY_tfCQjUSWEWuNNwQdC1Vtb0szzz"; 
       URL url = new URL("https://fcm.googleapis.com/fcm/send"); 
       HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 
       conn.setDoOutput(true); 
       conn.setRequestMethod("POST"); 
       conn.setRequestProperty("Content-Type", "application/json"); 
       conn.setRequestProperty("Authorization", "key=" + apiKey); 
       conn.setDoOutput(true); 
       JSONObject message = new JSONObject(); 
       message.put("to", to); 
       message.put("priority", "high"); 

       JSONObject notification = new JSONObject(); 
       // notification.put("title", title); 
       notification.put("body", body); 
       message.put("data", notification); 
       OutputStream os = conn.getOutputStream(); 
       os.write(message.toString().getBytes()); 
       os.flush(); 
       os.close(); 

       int responseCode = conn.getResponseCode(); 
       System.out.println("\nSending 'POST' request to URL : " + url); 
       System.out.println("Post parameters : " + message.toString()); 
       System.out.println("Response Code : " + responseCode); 
       System.out.println("Response Code : " + conn.getResponseMessage()); 

       BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream())); 
       String inputLine; 
       StringBuffer response = new StringBuffer(); 

       while ((inputLine = in.readLine()) != null) { 
        response.append(inputLine); 
       } 
       in.close(); 

       // print result 
       System.out.println(response.toString()); 
       return response.toString(); 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
      return "error"; 
     } 
+0

यह अनुशंसित तरीका नहीं है क्योंकि कोई भी Smali2Java जैसे टूल का उपयोग करके अपनी एपीआई कुंजी प्राप्त कर सकता है और अधिसूचना भेज सकता है किसी को। – kunwar97

+0

जो हैकिंग का हिस्सा है, और हाँ मैं भी इसकी अनुशंसा नहीं करता लेकिन मैं जवाब दे रहा था कि हम इसे यहां से भी कर सकते हैं, यदि आवश्यक हो तो हम कुंजी को एन्क्रिप्ट करके सुरक्षित कर सकते हैं। और हाँ मुझे यह बताने के लिए धन्यवाद। –

+0

हम इसका उपयोग कैसे करेंगे? –

संबंधित मुद्दे