2013-02-22 11 views

Antwort

80

Nachdem Google C2DM durch GCM ersetzt hatte, wurden alle Beschränkungen aufgehoben.

QUELLE: http://developer.android.com/google/gcm/c2dm.html#history

Vor GCM (als es noch C2DM genannt wurde): https://developers.google.com/android/c2dm/#limitations)

Die einzigen Grenzen Sie in die GCM Dokumentation führen dies: http://developer.android.com/google/gcm/adv.html#lifetime von

Zitat Der obige Link:

Hinweis: Die Anzahl der Nachrichten ist begrenzt kann ohne kollabiert gespeichert werden. Dieses Limit ist derzeit 100. Wenn das Limit erreicht ist, werden alle gespeicherten Nachrichten verworfen. Wenn das Gerät dann wieder online ist, erhält es eine spezielle Nachricht, die angibt, dass das Limit erreicht wurde. Die Anwendung kann dann die Situation ordnungsgemäß behandeln, in der Regel von Anforderung einer vollständigen Synchronisierung.

Ich bin mir nicht sicher, ob dies für Ihre Frage relevant ist.

+0

Hinweis: 'Es gibt eine Grenze für wie viele Nachrichten gespeichert werden können, ohne zu kollabieren. Dieses Limit ist derzeit 100. Wenn das Limit erreicht ist, werden alle gespeicherten Nachrichten verworfen .... ', das ist nur für einen bestimmten Benutzer, richtig? dh. ein Benutzer kann sein Gerät für eine lange Zeit abgeschaltet haben, so häufen sich GCM-Nachrichten an, und wenn kein Endpunkt zusammenbricht? oder ist das 100 über ALLE Benutzer? – Sauron

+4

@Sauron: Das ist pro Gerät. –

+0

Wenn dies nicht richtig ist, hält der Server die letzten 100, ältere Nachrichten werden verworfen. Wenn das Gerät online geht, werden die frischesten 100 Nachrichten zusammen mit einer Limit-Erreichbarkeits-Nachricht gesendet? – ir2pid

1

Laut dem offiziellen Dokument, NO-Limit.

7

es kein Tageslimit für Push-Benachrichtigungen (GCM), sondern über offizielle Quelle GCM Advanced Topics es heißt, dass

Es gibt eine Grenze, wie viele Nachrichten ohne kollabieren gespeichert werden. Dieses Limit ist derzeit 100. Wenn das Limit erreicht ist, werden alle gespeicherten Nachrichten verworfen. Wenn das Gerät dann wieder online ist, erhält es eine spezielle Nachricht, dass das Limit erreicht wurde. Die Anwendung kann dann die Situation ordnungsgemäß behandeln, indem sie normalerweise eine vollständige Synchronisierung anfordert.

Hoffe, es wird helfen.

+0

können Sie mir helfen ?, siehe http://stackoverflow.com/questions/34826165/google-cloud-messaging-limit – ghanbari

+0

@Bhavesh Link ist nicht –

2

Sie können maximal 1.000 Geräte per SEND_ID senden!

Here ist Originalquelle.

+1

gefunden Das ist nicht, was diese Quelle überhaupt sagt. –

+0

ROTFL ... die Auswirkung dieser Quelle ist ein Maximum von 1000 auf einmal – humblerookie

+0

** Quelle ** nicht gefunden, Change Link. –

9

Scheint nicht, dass es ein festgelegtes numerisches Limit gibt, aber es gibt Drosselungsmaßnahmen.

Um Missbrauch (wie zB das Senden einer Flut von Nachrichten an ein Gerät) und zu verhindern für die gesamte Netzwerkeffizienz und Lebensdauer der Batterie von Geräte zu optimieren, setzt GCM Drosselung von Nachrichten ein Token-Bucket Schema verwendet.

Wenn ein Anwendungszusammenbruchschlüssel seine Verfügbarkeit verfügbarer Tokens ausschöpft, werden neue Nachrichten in einer ausstehenden Warteschlange gepuffert, bis neue Token zum Zeitpunkt der periodischen Erteilung verfügbar werden.

Via: https://developers.google.com/cloud-messaging/server#throttling

Bearbeiten/Update:

einfach zu aktualisieren, kann das Dokument für die Drosselung jetzt in den GCM Advanced Topics zu finden: http://www.androiddocs.com/google/gcm/adv.html#throttling

+1

Ich bemerkte gerade, als ich mehr auf die Seite schaute, die ich hinzufügte. Ich bin mir nicht ganz sicher, ob androiddocs.com eine offizielle Dokumentation von Google ist. @boltup_im_coding - Ich würde mich freuen, wenn Sie eine Notiz hinzufügen können, die das sagt. :) –

14

Es ist ein limit von 1000notifications auf einen Schlag.

Angenommen, Sie haben 50000 regids. Sie können nicht alle 50000 zusammen senden. Nach der ersten 1000 müssen Sie separat die nächste 1000 und so weiter auswählen.

+1

Haben Sie eine offizielle Quelle dafür? – pleshy

+1

@plashy offizielle Dokumente [hier] (https://developers.google.com/cloud-messaging/http-server-ref), schau unter * registration_ids * – rion18

+0

Bitte schau hier um zu verstehen, was @doylefermi zu sagen versucht. https://github.com/ToothlessGear/node-gcm/issues/42 –

4

Versucht, über 1000 Pushs von Java-Code zu senden com.google.android.gcm.server.Sender "senden" -Methode, versucht fehlgeschlagen.

https://developers.google.com/cloud-messaging/http-server-ref für Downstream-HTTP-Nachrichten (JSON):

param name - registration_ids - String-Array

Dieser Parameter gibt eine Liste von Geräten (registration Token oder IDs) eine Multicast-Nachricht zu empfangen. Es muss mindestens 1 und höchstens 1000 Registrierungstoken enthalten.

Verwenden Sie diesen Parameter nur für Multicast-Messaging, nicht für einzelne Empfänger. Multicast-Nachrichten (Senden an mehr als 1 Registrierungstoken) sind nur im HTTP-JSON-Format zulässig.

+1

Zunächst einmal, willkommen in der Community :) Es gibt bereits mehrere qualitativ hochwertige Antworten auf diese Frage, von denen die meisten vor drei Jahren veröffentlicht wurden, als die Frage war fragte. Während es eine lohnenswerte Übung sein kann, um einfache Fragen wie diese zu beantworten, um Ihre Programmierfähigkeiten zu fördern, fügt das Posten dieser Antwort in ihrem aktuellen Zustand der Frage nichts hinzu. – MTCoster

0

registration_ids
Dieser Parameter gibt eine Liste von Geräten (Registrierungstoken oder IDs) an, die eine Multicast-Nachricht empfangen. Es muss mindestens 1 und höchstens 1000 Registrierungstoken enthalten.