2017-01-30 2 views
6

ich möchte benachrichtigung an mehrere geräte in einzelnen fcm anfrage. meine Benachrichtigung Text ist für alle Geräte gleich.Ich muss mehr als 10000 Benachrichtigung gleichzeitig an alle Benutzer senden und Text ist gleich, so dass ich alle Benachrichtigungen in mindestens fcm Anfrage senden möchte. Ich benutze C# asmx Service. hören ist mein Code.wie fcm notification an mehrere geräte in einzelnen fcm reqest senden

string regid = "fcm_reg_id1, fcm_reg_id2" gefällt das.

string applicationID = "abcd";

Zeichenfolge SENDER_ID = "123456";

  string regid="c_Z5yRoj4TY:APA91bGry2g_CIA1xaRy_LscxOvFX6YHqasKA96TjpG6yi1yytNyM5rtGL6DgxjGMSE5c74d7VdSL6W8zxO1ixVMlpVMwdgcrsGUWV0VfdbddC2XD","c_Z5yRoj4TY:APA91bGry2g_CIA1xaRy_LscxOvFX6YHqasKA96TjpG6yi1yytNyM5rtGL6DgxjGMSE5c74d7"; 

      HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create("https://fcm.googleapis.com/fcm/send"); 

      httpWebRequest.ContentType = "application/x-www-form-urlencoded;charset=UTF-8"; 

      httpWebRequest.Method = "POST"; 

      String collaps_key = "Score_update"; 

      string json = "collapse_key=abcd" + "&data.header=cricket&registration_id=" + regId + "&data.notificationId=" + notificationId + "&data.message=" + msg; 

      httpWebRequest.Headers.Add(string.Format("Authorization: key={0}", applicationID)); 
      httpWebRequest.Headers.Add(string.Format("Sender: key={0}", SENDER_ID)); 

      using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream())) 
      { 
       //Console.WriteLine(json); 
       streamWriter.Write(json); 
       streamWriter.Flush(); 
       streamWriter.Close(); 
       using (HttpWebResponse httpResponse = (HttpWebResponse)httpWebRequest.GetResponse()) 
       { 
        using (var streamReader = new StreamReader(httpResponse.GetResponseStream())) 
        { 
         var result = streamReader.ReadToEnd(); 
         Console.WriteLine(result); 
         retmsgid = result.ToString(); 
         if (retmsgid.Trim() != "") 
         { 
          ResponceString = result.ToString(); 
          string[] msgsplits = retmsgid.Split(','); 
          string[] msg1 = msgsplits[0].ToString().Split(':'); 
          ReturnMessageId = msg1[1].ToString(); 
         } 
         else 
         { 
          ReturnMessageId = "0"; 
         } 
        } 
        httpResponse.Close(); 
        httpResponse.Dispose(); 
        httpWebRequest = null; 
       } 
      } 
+0

Sie können dies aus dem Internet mit IMEI-Nummern durchführen (müssen IMEI-Nummern in Ihrem Back-End registrieren). Also müssen Sie Ihre Nachricht mit Webservices von Ihrem mobilen Gerät aus posten. Jetzt können Sie Ihre Nachrichten aus dem Internet mit IMEI-Nummer registrierten Geräten übertragen. –

+0

Ich möchte mehrere Benachrichtigungen in einer einzigen Anfrage im obigen Code senden Ich möchte mehrere Registrierungs-ID hinzufügen und senden. – user3599175

Antwort

7

FCM does not allow Seit mehr als 1000 Registrierungs-IDs angeben, wenn eine Nachricht gesendet: spezifiziert eine Multicast-Nachricht eine Liste von Geräten (registration Token oder IDs)

Dieser Parameter empfängt. Es muss mindestens 1 und bei die meisten 1000 Registrierungstoken enthalten.

Sie nur Möglichkeit, eine Nachricht an einen topic

+0

Ich möchte eine Nachricht an ungefähr 100 Registrierungs-IDs (nur mobile Geräte) gleichzeitig senden. Wie erstelle ich die Anfrage? –

+0

Nun, das ist eine andere [Frage] (http://stackoverflow.com/a/13650308/3942452) –

+0

Eigentlich meine Frage war das nur. Vielleicht war ich nicht in der Lage, es richtig zu gestalten. –

0

Senden ist es mögliche Lösung für alle für einen Ansatz suchen Benachrichtigung beschränkt registrierten Geräte zu senden. (Weniger als 1000 Geräte). den Eingang für die Geräte-IDs als Zeichenkette Berücksichtigung

device_ids_input="code1,code2,code3,.."; 

Verwenden dieser Code-Schnipsel zum Senden von Benachrichtigungsbefehl auszuführen.

string[] deviceIds = device_ids_input.Split(','); 
    string hasSound = "1"; 
    string applicationID = "AIz------------------"; 
    string senderId = "73-------"; 


    WebRequest tRequest = WebRequest.Create("https://fcm.googleapis.com/fcm/send"); 
    tRequest.Method = "post"; 
    tRequest.ContentType = "application/json"; 
    var data = new 
    { 
     registration_ids = deviceIds, 
     data = new 
     { 
      title = messageTitle, 
      full_text = messageBody, 
      Sound = hasSound 

     } 
    }; 
    var serializer = new JavaScriptSerializer(); 
    var json = serializer.Serialize(data); 
    Byte[] byteArray = Encoding.UTF8.GetBytes(json); 
    tRequest.Headers.Add(string.Format("Authorization: key={0}", applicationID)); 
    tRequest.Headers.Add(string.Format("Sender: id={0}", senderId)); 
    tRequest.ContentLength = byteArray.Length; 
    using (Stream dataStream = tRequest.GetRequestStream()) 
    { 
     dataStream.Write(byteArray, 0, byteArray.Length); 
     using (WebResponse tResponse = tRequest.GetResponse()) 
     { 
      using (Stream dataStreamResponse = tResponse.GetResponseStream()) 
      { 
       using (StreamReader tReader = new StreamReader(dataStreamResponse)) 
       { 
        String sResponseFromServer = tReader.ReadToEnd(); 


       } 
      } 
     } 
    } 
Verwandte Themen