2013-03-11 6 views
5

Sono in grado di creare notifiche push. Ma al momento sono solo in grado di far atterrare la gente sulla schermata principale.Android: come posso inviare una notifica push GCM con le istruzioni su quale attività caricare?

Come posso inviare le persone a un'attività specifica? Ed è anche possibile aggiungere alcuni parametri come item_id in modo che l'attività sappia quali dati caricare?

O se c'è un buon tutorial per questo da qualche parte, sarebbe fantastico. Non riesco davvero a trovare molte buone informazioni su questo da googling.

Nel mio GCMIntentService ho questo metodo:

 @Override 
     protected void onMessage(Context ctxt, Intent message) 
     {   
     Bundle extras=message.getExtras(); 

     try 
     { 
      String question_id = extras.getString("question_id"); 
//   SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); 
//   Intent intent = new Intent(ctxt, QuestionActivity.class); 

      generateNotification(ctxt, extras.getString("message"), "New Message" );   
     } 
     catch (Exception e) 
     { 
     } 
     } 

Ma io non sono sicuro di come cambiare il generateNotification da segnalare anche quello di attività della persona dovrebbe atterrare su. Grazie!

risposta

10

AGGIORNAMENTO: Concedere credito Eran per il JSON, voglio solo elaborare.

È possibile aggiungere altri parametri con la chiave di dati:

{ 
    "registration_ids" : ["APA91bHun4MxP5egoKMwt2KZFBaFUH-1RYqx..."], 
    "data": { 
     "stuff": "100", 
     "more": "abc" 
    }, 
} 

quindi accedere allo stesso modo utilizzando intent.getExtras().getString("stuff").

È tutto here.

Poi, nel tuo generateNotifcation():

private static void generateNotification(Context context, String message) { 
    NotificationManager notificationManager = (NotificationManager) 
     context.getSystemService(Context.NOTIFICATION_SERVICE); 
    Notification notification = new Notification(R.drawable.ic_launcher, message, when); 
    String title = "..."; 


    //get id from json here and decide which activity to go to... 
    Intent notificationIntent = new Intent(context, someClass.class); 


    notificationIntent.putExtra("message",message); 
    PendingIntent intent = PendingIntent.getActivity(context, 0, notificationIntent,PendingIntent.FLAG_UPDATE_CURRENT); 
    notification.setLatestEventInfo(context, title, message, intent); 
    notification.defaults|=Notification.DEFAULT_VIBRATE; 
    notificationManager.notify(0, notification); 
} 
+0

grazie! Provalo ora ... riporterò come va :) – Genadinik

+0

In realtà una domanda: una volta che invio e analizzo il parametro extra, come faccio a salvarlo in qualcosa come SharedPreferences? – Genadinik

+0

In realtà potrei averti detto male. Sono sul mio telefono. Mi aggiornerò quando tornerò al computer. Spiacenti aggiornamento appena posso. – Ryan

3

Naturalmente è possibile aggiungere un parametro come item_id. È possibile aggiungere qualsiasi parametro che si desidera alla notifica. A differenza delle notifiche push Apple, non ci sono parametri di carico utile predefiniti, quindi, proprio come hai un parametro message, puoi avere qualsiasi altro parametro con un valore String (a patto che le lunghezze totali dei nomi e dei valori dei parametri non superino 4096 byte).

E come per il caricamento di un'attività dalla notifica, è possibile trovare tutto ciò che è necessario here.

+0

Grazie anche a te. Siete entrambi molto d'aiuto :) – Genadinik