2016-05-11 8 views
1

Ich bin ein wenig verwirrt darüber, was ich praktisch mit GCM tun kann.Google Cloud Messaging ANDROID, was kann ich übertragen

Abgesehen von einfachen Benachrichtigungen, wäre es möglich, meine App zu konfigurieren, um Informationen von GCM (in regelmäßigen Abständen) zu erhalten und in einer Datenbank zu speichern?

Mit anderen Worten, nicht nur Benachrichtigung, sondern echte Informationen, die von der App selbst, nach meinen Bedürfnissen implementiert werden.

Thank

Antwort

1

Sie es tun könnte, aber Sie sollten nicht.

Es ist wichtig, dass Sie richtig bei der Verwendung des GCM aussehen schiebt - sie sind nicht zur Übertragung von Daten soll, sondern das Gerät mitzuteilen, dass etwas passiert ist oder sollte erfolgen.

Also, wenn Sie einige Daten erhalten möchten, verwenden Sie das GCM, um Ihre App darüber zu benachrichtigen und dann von der App eine normale HTTP-Anfrage zum Herunterladen der Daten und speichern Sie es in Ihrer DB.

1

GCM sollte verwendet werden, wie es genannt wird, für Benachrichtigungen. Sie können Daten über GCM übergeben, jedoch mehr Zeichenfolgen oder einfache Objekte als serialisierte Objekte oder Daten.

Vielleicht sind WebSockets das, wonach Sie suchen!

+0

Sie Würde berate GCM für einen JSON-String? Es wäre meine Notwendigkeit, und dann diese Daten in der internen DB der App zu speichern – Thomas

+1

Wie planen Sie, Ihre GCM-Benachrichtigungen zu senden? Worauf läuft der Server? node.js? – FrenchFalcon

+0

Ich würde einen Server auf Digital Ocean verwenden: Ubuntu 14.04 und Python 2.7. Ich muss es noch bauen, es wird das erste Mal sein, dass ich GCM in meiner App benutze, deshalb habe ich viele Zweifel. – Thomas

1

Der GCM-Push wird oft als Tickle verwendet, damit Ihre Anwendung einen Abruf auf dem Server ausführt.

Sie können die Nachricht jedoch mit einer Nutzlast codieren.

Google App Engine

Message message = new Message.Builder().collapseKey(MsgType).addData("payload", Msg).build(); 

Android Nachricht empfangen

protected void onMessage(Context context, Intent intent) { 
     startcontext = context; 
     String regId = GCMRegistrar.getRegistrationId(context); 
     if (regId.equals("")) return; //Get out of here because we are not registered 

     String payload = intent.getStringExtra("payload"); 
     CNMessage msg = new CNMessage(); 
     msg.fromJSONString(payload); 
1

Sie können so lange Daten über GCM senden, da sie nicht größer ist als 4KB

Set Daten mit Ihrem benutzerdefinierte Schlüssel/Wert-Paare zum Senden einer Datennutzlast an die Client-App. Datennachrichten können eine maximale Nutzlast von 4 KB haben.

https://developers.google.com/cloud-messaging/concept-options#notifications_and_data_messages

GCM soll für das Gerät nur warnen, dass es neue Daten dann zu erhalten, wenn die Nachricht von dem Gerät geht das Gerät empfangen wird, und erhält die Daten vom Server

+0

BTW: 'kb' steht für ** k ** ilo (1000) ** b ** es und ist weit niedriger als ** K ** ilo (1024) ** B ** ytes wie Sie wahrscheinlich wollten schreiben.Es sollte daher 'KB' (oder' KiB' sein, wenn wir bei 'Kibi' bleiben wollen) –

Verwandte Themen