2013-03-11 13 views
5

Jestem w stanie tworzyć powiadomienia push. Ale obecnie jestem w stanie sprawić, że ludzie lądują na ekranie głównym.Android - w jaki sposób mogę wysłać powiadomienie push GCM z instrukcją, którą czynność załadować?

Jak mogę wysłać ludzi do określonej działalności? I czy można również dodać parametr taki jak item_id, aby aktywność wiedziała, jakie dane załadować?

Jeśli jest gdzieś dobry poradnik, to też byłoby świetnie. Naprawdę nie mogę znaleźć wiele dobrych informacji na ten temat przez googling.

W moim GCMIntentService mam tej metody:

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

Ale nie jestem pewien, w jaki sposób zmienić generateNotification również zasygnalizować co aktywny człowiek powinien wylądować na. Dzięki!

Odpowiedz

10

AKTUALIZACJA: Daj kredyt Eran dla JSON, chcę tylko opracować.

Można dodać inne parametry z kluczem danych:

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

Następnie przejść w ten sam sposób, używając intent.getExtras().getString("stuff"). To jest wszystko .

Następnie w 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

dzięki! Wypróbowanie go teraz ... zgłosi jak to działa :) – Genadinik

+0

Właściwie jedno pytanie: po wysłaniu i przeanalizowaniu dodatkowego parametru, w jaki sposób zapisać go w coś takiego jak SharedPreferences? – Genadinik

+0

Właściwie mogłem ci powiedzieć źle. Jestem na moim telefonie. Będę aktualizował, gdy będę z powrotem na komputerze. Przepraszam za aktualizację tak szybko, jak to możliwe. – Ryan

3

oczywiście można dodać parametr jak item_id. Możesz dodać dowolny parametr do powiadomienia. W przeciwieństwie do powiadomień Apple Push, nie ma zdefiniowanych parametrów ładunku, więc tak jak masz parametr message, możesz mieć dowolny inny parametr z wartością String (o ile łączna długość nazw parametrów i wartości nie przekroczy 4096 bajtów).

Jeśli chodzi o ładowanie aktywności z powiadomienia, możesz znaleźć wszystko, czego potrzebujesz: here.

+0

Dziękuję również. Oboje byliście bardzo pomocni :) – Genadinik

Powiązane problemy