19

Wie viele andere Unternehmen ist auch der, für den ich arbeite, nicht komfortabel mit APNS von Apple: Keine offizielle Bibliothek, Streams, die zufällig abgeschnitten werden usw ... Das gleiche gilt für das Push-System von Android: Begrenzt auf kleine Chargen, ganz anders als Apples APNS ... Deshalb suchen wir nach einer Alternative und als Amazon behauptete, wir könnten Millionen von Push-Benachrichtigungen fast kostenlos senden dachte, dass SNS die perfekte Lösung wäre.So senden Sie eine Charge von Millionen Push-Benachrichtigungen mit dem Amazon Simple Notification Service (SNS)

Das Problem ist, dass wir häufig mehr als eine Million Geräte ansprechen müssen, und offensichtlich zielen unsere Push-Kampagnen selten auf dieselben Geräte ab. Soweit wir gegraben haben, ist die einzige Lösung, die AWS-API zu verwenden, die nur eine Methode zur Verfügung stellt, um die Endpunkte nacheinander zu erstellen! Das ist eine große Sache für uns, denn nach einigen Tests haben wir festgestellt, dass es für die Erstellung von 1 000 000 Endpunkten etwa 15 Stunden (~ 17 Aufrufe/Sek.) Dauern würde.

Auch nachdem alle Endpunkte erstellt wurden, müssen die Endpunkte zu einem Thema hinzugefügt werden, um alle Pushs gleichzeitig zu senden, und dies wiederum muss jeweils Endpunkt für Endpunkt erfolgen (also 15 weitere Stunden)). Ereignis, wenn wir unsere Anrufe multithreaded, sagen wir 30 Threads, würde es noch eine Stunde dauern!

Also, könnte uns jemand sagen, ob wir etwas übersehen haben? Erwartet Amazon wirklich, dass wir seine Webdienste während 30 Stunden überfluten, um eine Push-Kampagne zu erstellen? Wie können sie vorgeben, eine Million Pushs in einer Sekunde zu senden, wenn es Stunden dauert, sie vorzubereiten? Arbeiten sie an einer Batch-API für SNS? Ist es möglich, eine Amazon DB mit den Tokens zu verbinden, um ein SNS-Thema zu füttern?

+0

Darf ich fragen, Sie waren synchron all diese Arbeit zu tun? Warten auf die Erstellung eines EndpointArn vor dem Erstellen des nächsten? Ich werde Ihnen ähnlich sein, aber planen Sie alle Anrufe asynchron. Ich versuche nur zu antizipieren, was ich erfahren könnte basierend auf was du erlebt hast. Vielen Dank. –

+1

Das gleiche Problem hier. Amazon hat mein Konto zu der Feature-Anfrage hinzugefügt, aber wir wissen, dass dies wenig bedeutet. Anstatt unsere Nutzer zu Themen zu abonnieren, senden wir die Nachrichten direkt an die Publish API, da es sich um dieselbe Sache handelt. Es dauert immer noch eine Ewigkeit, wir müssen in der Lage sein, 10.000 pro Minute fallen zu lassen. Crazy Amazon unterstützt keine Massenanforderung –

+0

Es gibt eine bestimmte Anforderungsgrenze, die Sie von einer EC2-Instanz aus ausführen können. Aber Amazon sagt dir nicht, wie viel es ist ... Also solltest du ungefähr 15x t2.micro-Instanzen starten, so dass jeder EC2 sein eigenes Anforderungslimit hat. Mit diesem Ansatz würde Ihr Prozess 15x schneller enden –

Antwort

4

Es sieht so aus, als ob Amazon ein paar Methoden zum Hinzufügen von Endpunkten/Tokens bietet, einschließlich eines CSV-Importers (aber begrenzt auf 2MB CSV-Dateien gleichzeitig). Sie bieten auch eine API und Beispiel-Java-Anwendung für Bulk-Upload-Token (link).

Der Thema-Subskriptionspunkt wird von einem Amazon SNS-Mitarbeiter here angesprochen, was im Wesentlichen erklärt, dass dafür leider keine Batch-API verfügbar ist.

Es gibt ein paar anderen 3rd-Party-Push-Benachrichtigung-Anbieter, die Ihre Anforderungen besser gerecht werden können, wenn sie benutzerdefinierte Segmente kommen häufig zu schaffen/Themen:

  1. OneSignal (Disclosure: Ich betreiben dieses Unternehmen)
  2. MixPanel
  3. Parse
+0

Heute unterstützt Mixpanel nicht Amazon Messaging System (ADM). Nicht sicher, ob Parse ADM unterstützt. – Tobliug

+0

Hallo Gdeglin, ich habe auch ein ähnliches Problem und wir denken über die Verwendung von Onesignal. Wir möchten personalisierte Benachrichtigungen an jeden Benutzer senden. Wie kann ich mit einem Signal eine personalisierte Benachrichtigung an mehr als eine Million Benutzer senden? – pankaj

+0

@pankaj Hallo! Bitte öffnen Sie einen neuen Stack-Overflow-Thread für diese Frage oder wenden Sie sich an das OneSignal-Team unter [email protected] – Gdeglin