2016-11-19 4 views
5

Android: Wie binden Sie die Benachrichtigungsaktion an die Aktivität Dynamisch in der Android-Manifestdatei?Wie Benachrichtigungstippen Aktion auf bestimmte Aktivität in Android anwenden?

Speziell für die Integration in die Brandmeldezentrale. Bitte geben Sie suggestion.Thank Sie

+0

Was ist Ihr Anwendungsfall? –

+0

von api ich bekomme verschiedene Fälle von Benachrichtigungen zu Absichten mit verschiedenen Aktivitäten. Wenn App geöffnet ist, funktioniert es gut, aber App im Hintergrund funktioniert nicht – Pradip

+0

Wenn, ich das Problem richtig verstanden habe, müssen Sie Intent-Filter zu all diesen Aktivitäten hinzufügen, die bei der Ankunft der Benachrichtigung geöffnet werden müssen. Sie können eine Aktivitäts-URL in Ihrer Benachrichtigungsnutzlast haben und diese im Empfänger verwenden, um die Absicht mit dieser Aktion zu starten. –

Antwort

2

Um die Funktionalität des Öffnens einer Aktivität zu erhalten, sollte diese Aktivität nach Erhalt der Benachrichtigung intent-filter in Manifest gegeben werden, um auf eine Aktion zu warten.

In der Benachrichtigung sollte zusammen mit der Nutzlast die Aktion gesendet werden, auf die die Aktivität wartet. Im Receiver kann eine Intent mit einer solchen Aktion ausgelöst werden, die die Aktivität öffnet, auch wenn die App im Hintergrund oder geschlossen ist.

4

Recive Custom Message in Mitteilung und nach keywork wahr oder falsch oder Ihr Word Aktivität gehen public class MyFirebaseMessagingService FirebaseMessagingService erstreckt {

private static final String TAG = "FirebaseMessageService"; 
Bitmap bitmap; 

/** 
* Called when message is received. 
* 
* @param remoteMessage Object representing the message received from Firebase Cloud Messaging. 
*/ 
@Override 
public void onMessageReceived(RemoteMessage remoteMessage) { 
    // There are two types of messages data messages and notification messages. Data messages are handled 
    // here in onMessageReceived whether the app is in the foreground or background. Data messages are the type 
    // traditionally used with GCM. Notification messages are only received here in onMessageReceived when the app 
    // is in the foreground. When the app is in the background an automatically generated notification is displayed. 
    // When the user taps on the notification they are returned to the app. Messages containing both notification 
    // and data payloads are treated as notification messages. The Firebase console always sends notification 
    // messages. For more see: https://firebase.google.com/docs/cloud-messaging/concept-options 
    // 
    Log.d(TAG, "From: " + remoteMessage.getFrom()); 

    // Check if message contains a data payload. 
    if (remoteMessage.getData().size() > 0) { 
     Log.d(TAG, "Message data payload: " + remoteMessage.getData()); 
    } 

    // Check if message contains a notification payload. 
    if (remoteMessage.getNotification() != null) { 
     Log.d(TAG, "Message Notification Body: " + remoteMessage.getNotification().getBody()); 
    } 

    //The message which i send will have keys named [message, image, AnotherActivity] and corresponding values. 
    //You can change as per the requirement. 

    //message will contain the Push Message 
    String message = remoteMessage.getData().get("message"); 
    //imageUri will contain URL of the image to be displayed with Notification 
    String imageUri = remoteMessage.getData().get("image"); 
    //If the key AnotherActivity has value as True then when the user taps on notification, in the app AnotherActivity will be opened. 
    //If the key AnotherActivity has value as False then when the user taps on notification, in the app MainActivity will be opened. 
    String TrueOrFlase = remoteMessage.getData().get("AnotherActivity"); 

    //To get a Bitmap image from the URL received 
    bitmap = getBitmapfromUrl(imageUri); 

    sendNotification(message, bitmap, TrueOrFlase); 

} 


/** 
* Create and show a simple notification containing the received FCM message. 
*/ 

private void sendNotification(String messageBody, Bitmap image, String TrueOrFalse) { 
    Intent intent = new Intent(this, MainActivity.class); 
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    intent.putExtra("AnotherActivity", TrueOrFalse); 
    PendingIntent pendingIntent = PendingIntent.getActivity(this, 0 /* Request code */, intent, 
      PendingIntent.FLAG_ONE_SHOT); 

    Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); 
    NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this) 
      .setLargeIcon(image)/*Notification icon image*/ 
      .setSmallIcon(R.drawable.firebase_icon) 
      .setContentTitle(messageBody) 
      .setStyle(new NotificationCompat.BigPictureStyle() 
        .bigPicture(image))/*Notification with Image*/ 
      .setAutoCancel(true) 
      .setSound(defaultSoundUri) 
      .setContentIntent(pendingIntent); 

    NotificationManager notificationManager = 
      (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); 

    notificationManager.notify(0 /* ID of notification */, notificationBuilder.build()); 
} 

This is AnotherActivity 

// Wenn eine entsprechende Meldung abgegriffen wird, alle Daten, Begleiten der Benachrichtigung // Nachricht ist in den Intents Extras verfügbar. In diesem Projekt wird der Starter // intention ausgelöst, wenn die Benachrichtigung angetippt wird, sodass alle zugehörigen Daten hier behandelt werden. Wenn Sie möchten, dass eine andere Absicht ausgelöst wird, setzen Sie das Feld click_action // der Benachrichtigungsnachricht auf die gewünschte Absicht. Der Launcher Intent // wird verwendet, wenn keine click_action angegeben ist. // // Behandeln Sie mögliche Daten begleitende Benachrichtigung Nachricht. if (getIntent(). GetExtras()! = Null) {

 for (String key : getIntent().getExtras().keySet()) { 
      String value = getIntent().getExtras().getString(key); 

      if (key.equals("AnotherActivity") && value.equals("True")) { 
       Intent intent = new Intent(this, AnotherActivity.class); 
       intent.putExtra("value", value); 
       startActivity(intent); 
       finish(); 
      } 

     } 
    } 

Dies sind die Daten

{ "data": { 
    "image": "https://ibin.co/2t1lLdpfS06F.png", 
    "message": "Firebase Push Message Using API" 
    "AnotherActivity": "True" 
    }, 
    "to" : "f25gYF3***********************HLI" 
} 
Verwandte Themen