2015-06-11 9 views
6

Ho affrontato 2 problemi in Android con l'ultimo aggiornamento a GCM. Come per GCM, visualizzerà automaticamente la notifica nella barra se il payload contiene l'attributo 'notifica'. Ma non hanno menzionato come gestire l'evento tap per quella notifica. Se il carico utile contiene solo l'attributo di dati, viene richiamato "onMessageReceived" di GCMListenerService. Ma se il carico utile contiene sia gli attributi di notifica che i dati, il metodo non viene invocato. Qualche idea su come risolvere? Devo controllare anche iOS per vedere come si comporta lì.Come gestire il tocco della notifica in Android se visualizzato automaticamente da GCM

+1

hai cercato di usare Parse.com? È abbastanza semplice per Android e iOS. Ma penso che tu voglia utilizzare solo GCM ... –

risposta

11

È necessario impostare un click_action nel carico utile della notifica. Quindi, quando l'utente apre/fa clic sulla notifica, verrà avviata un'attività nella tua app dichiarata con tale azione.

esempio click_action set: OPEN_ACTIVITY_1, e aggiungere il seguente filtro intento di l'attività desiderata:

<intent-filter> 
    <action android:name="OPEN_ACTIVITY_1" /> 
    <category android:name="android.intent.category.DEFAULT" /> 
</intent-filter> 

Quindi è possibile estrarre i dati dal messaggio in attività, utilizzando getIntent() e poi guardando gli intenti extra.

Vedi la voce qui: https://developers.google.com/cloud-messaging/server-ref#notification-payload-support

+0

Pensi che GcmListenerService non sia più utile in quanto non viene nemmeno chiamato quando l'attributo di notifica è presente nel carico utile? – Winster

+0

Non c'è modo di inviare un singolo messaggio che mostrerà una notifica e invocare GcmListenerService. È possibile ottenere lo stesso effetto inviando due messaggi, uno con payload di notifica e uno con solo payload di dati. – morepork

+0

Non hai bisogno di specificare un intento per andare all'attività in cui hai inserito il filtro intent? Inserisco il filtro intent all'interno di una delle mie visualizzazioni e non succede nulla quando clicco sulla notifica che ha "click_action": "OPEN_ACTIVITY_1" nella chiave di notifica nell'oggetto json. Sono nuovo di Android dev in modo che eventuali suggerimenti aiuteranno. – bxiong

0

Se hai inviato spinta con notification param, allora non è possibile gestire da onMessageReceived

Se si vuole gestire la notifica, inviare spinta con data opzione, ora è in grado di gestire con GCM e onMessageReceived.

Avviso: ios gestisce le notifiche con la chiave notifications.

Invia push per ios con chiave notification, per chiave android data.

Per android;

{"data":{"message":"hey"}},registration_ids":["device token"]

per iOS:

{"notification":{"title":"Hey title", "body":" Hey body"},"to":"device token"}

+0

registration_ids consegnerà il messaggio a un solo dispositivo oa più (poiché è un array). Come inviarlo a tutti i dispositivi (senza elencare effettivamente tutti gli ID) su cui è installata l'app? (in entrambi IOS e Android) – BraveNinja