2016-05-15 5 views
0

Zuvor Registrierung mit mehreren SenderId war ziemlich beschrieben und einfach Ansatz.GCM: Registrieren mit mehreren Absendern mit InstanceId

 final GoogleCloudMessaging instance = GoogleCloudMessaging.getInstance(context); 
     final String registrationId = instance.register(senderId1, senderId2); 

Ich konnte nicht finden, wie man dasselbe mit dem InstanceId-Ablauf erreicht. Ich habe versucht,

   String token = instanceID.getToken("SENDER_ID1,SENDER_ID2,SENDER_ID3", GoogleCloudMessaging.INSTANCE_ID_SCOPE, null); 

aber scheint, wie es funktioniert nicht. Ich weiß, dass die Registrierung von getToken() für jede senderId (authorizedEntity) funktionieren würde, was mir 3 verschiedene Token zur Verfügung stellt, aber das Ziel ist 1 und nur 1 registrationId zu haben.

Auch wenn wir von sample und Google-Dienste-Plugin in AS gehen, scheint es eine
'google-services.json' Datei, die nur ein Google-Projekt/Client-Informationen bestehen zu sein.

Hat es irgendeine Beziehung damit.

Antwort

0

Nach Überprüfung des Internet für die Lösung in Ihrem Problem, fand ich hier in Multiple GCM senders in the same app, dass Google mehrere GCM-Absender in einer einzigen App zu unterstützen, aber Sie müssen dafür verantwortlich sein. Wenn dies nicht der Fall ist, können ein oder mehrere GCM-Sender keine GCM-Intents senden, und GCM-Intents, die reinkommen, können möglicherweise nicht zufällig GCM-Empfänger in Ihrem Manifest erreichen.

Der beste Weg, dies zu tun, ist die GCM-Registrierung selbst zu handhaben, anstatt einzelne Bibliotheken die Registrierung durchführen zu lassen. Beachten Sie, dass Sie gcm_defaultSenderId oder googleCloudMessagingSenderId auf dem Layer-Client verwenden würden. Stattdessen müssen Sie die Absender-IDs jeder Bibliothek mit einem Komma verbinden.

Dies ist ein Beispielcode zur Registrierung mehrerer senderID mit instanceID.

public class RegistrationIntentService extends IntentService { 
    @Override 
    public void onHandleIntent(Intent intent) { 
     InstanceID instanceID = InstanceID.getInstance(this); 
     // Comma-concatenated sender IDs 
     String senderIDs = "SENDER_ID_1,SENDER_ID_2"; 
     String token = instanceID.getToken(senderIDs, GoogleCloudMessaging.INSTANCE_ID_SCOPE, null); 
     // ... 
    } 
} 

Um dies zu ermöglichen, müssen Sie nur jedem Absender eine eigene Projektnummer geben. Wenn Sie eine Registrierung anfordern, fügen Sie diese IDs im Absenderfeld getrennt durch Kommas ein. Teilen Sie schließlich die Registrierungs-ID mit Ihren Partnern, und sie können Nachrichten mit ihren eigenen Authentifizierungsschlüsseln an Ihre Anwendung senden.

Weitere Informationen zu instanceID finden Sie unter page.

Verwandte Themen