6

Perdonami per non aver conosciuto il corretto termonologia Android. Vengo da un ambiente iOS, quindi sto cercando di imparare come fare correttamente due cose nel mondo Android.Messaggi Android - Sviluppo vs Distribuzione

  1. controllo "badge" per Android
  2. Invia "notifiche push" via Distribution (produzione) vs Development.

Fortunatamente ho trovato la risposta al n.1 che è utilizzare Status Bar Notifications grazie a this question.

Ora per # 2. Ho già una configurazione GCM e posso inviare notifiche a tutti i dispositivi registrati. Tuttavia, a volte voglio essere in grado di inviare notifiche a tutti i telefoni degli utenti, e talvolta solo ai dispositivi di "sviluppo". Con iOS questo si distingue per i dispositivi che sono stati scaricati dall'ambiente App Store/Ad-Hoc (Distribution) e dai dispositivi che sono stati fisicamente inseriti in un computer che soddisfa la sorgente sul loro dispositivo (Development). C'è qualcosa di simile a questo per Android?

risposta

7

Non c'è differenza tra lo sviluppo e la distribuzione in Google Cloud Messaging. Tutti i messaggi vengono inviati dal tuo server allo stesso endpoint GCM. Se si desidera distinguere tra dispositivi di sviluppo e dispositivi non di sviluppo, sarà necessario gestirlo sul DB del server (per ogni ID di registrazione archiviato nel server, aggiungere un flag che indica se si tratta di un dispositivo di sviluppo o meno) .

EDIT:

In realtà c'è un'altra cosa che si può fare, anche se non sono sicuro che sia una buona idea. Quando l'app si registra su GCM, fornisce uno sender ID (che è un Google API project ID). È possibile utilizzare due diversi project IDs per la versione di sviluppo e la versione di produzione. Il registration IDs restituito dal processo di registrazione sono legati allo project ID. Ora, quando invii un messaggio GCM dal tuo server, lo invii utilizzando uno API key legato a uno project ID. Se si utilizza lo API key legato allo sviluppo project ID, solo lo registration IDs collegato a quello project ID (ovvero, originato da dispositivi con la build di sviluppo) funzionerà. L'invio di messaggi con "produzione" registration IDs comporterà l'errore MismatchSenderId (che è simile a APNS nel modo in cui i token dispositivo sandbox non sono validi nell'ambiente di produzione e viceversa). Non sono sicuro che sia una buona idea, perché non vuoi fare affidamento sugli errori di Google per la tua logica. Se si desidera inviare messaggi solo a un sottoinsieme dei client, è necessario gestire questo sottoinsieme nel DB.