2013-03-11 5 views
5

Ich kann Push-Benachrichtigungen erstellen. Aber momentan bin ich nur in der Lage, Leute auf dem Home-Bildschirm landen zu lassen.Android - Wie kann ich eine GCM-Push-Benachrichtigung mit Anweisungen senden, welche Aktivität geladen werden soll?

Wie kann ich Personen zu einer bestimmten Aktivität senden? Und ist es möglich, auch einen Parameter wie item_id hinzuzufügen, damit die Aktivität weiß, welche Daten geladen werden sollen?

Oder wenn es irgendwo ein gutes Tutorial dafür gibt, wäre das auch super. Ich kann nicht wirklich viele gute Informationen dazu finden, indem ich googele.

In meinem GCMIntentService Ich habe diese Methode:

 @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) 
     { 
     } 
     } 

Aber ich bin nicht sicher, wie die generateNotification ändern auch zu signalisieren, was Aktivität der Person landen sollte. Danke!

Antwort

10

UPDATE: Gib Eran Kredit für die JSON, ich möchte nur zu erarbeiten.

können Sie andere Parameter hinzufügen, mit dem Datenschlüssel:

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

Dann die gleiche Art und Weise intent.getExtras().getString("stuff") mit zuzugreifen.

Es ist alles here.

Dann in Ihrem 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

danke! Probieren Sie es jetzt ... wird berichten, wie es geht :) – Genadinik

+0

Eigentlich eine Frage: Sobald ich den zusätzlichen Parameter senden und analysieren, wie speichere ich es in etwas wie SharedPreferences? – Genadinik

+0

Eigentlich könnte ich dir falsch gesagt haben. Ich bin auf meinem Handy Ich werde aktualisieren, wenn ich wieder an einem Computer bin. Sorry update sobald ich kann. – Ryan

3

Natürlich können Sie einen Parameter wie item_id hinzufügen können. Sie können einen beliebigen Parameter zur Benachrichtigung hinzufügen. Im Gegensatz zu Apple Push Notifications gibt es keine vordefinierten Payload-Parameter. Sie können also genauso wie einen message Parameter einen anderen Parameter mit einem String-Wert haben (solange die Gesamtlängen der Parameternamen und -werte nicht 4096 Byte überschreiten)).

Und beim Laden einer Aktivität aus der Benachrichtigung finden Sie alles, was Sie benötigen here.

+0

Vielen Dank auch. Ihr wart beide sehr hilfsbereit :) – Genadinik

Verwandte Themen