Wenn ich eine Benachrichtigung nach API senden. Ich habe click_action und config im Manifest übergeben. Aber ich weiß nicht, wo ich das Clickereignis bekommen kann. Ich bin eine neuere Android-Entwicklung. Ich möchte den Klick-Callback erhalten, wenn ich auf die Benachrichtigung klicke. Was soll ich als nächstes tun? Ich suchte einige Antworten auf der Website, aber keine von ihnen erzählt einige Details. Hoffe, einige können mir helfen. DankbarkeitGCM Push-Benachrichtigung, Benachrichtigung klicken Ereignis
Antwort
Sie müssen in Ihrer AndroidManifest.xml einen Intent-Filter für die Aktivität hinzufügen, die beim Klicken auf die Benachrichtigung geöffnet werden soll.
Zum Beispiel:
<activity android:name=".SomeActivity">
<intent-filter>
<action android:name="SOME_ACTION"/>
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
die Benachrichtigung klicken, wird diese Aktivität öffnen, wenn die Nachrichtennutzlast enthält (in der „Anmeldung“ Wörterbuch) folgendes:
"click_action":"SOME_ACTION"
Wenn Sie möchten, einige laufen Logik, wenn die Benachrichtigung angeklickt wird, sollten Sie diese Logik in onCreate()
Methode der Aktivität, die geöffnet werden.
Es gibt keine Callback per se für die Behandlung von Benachrichtigung klicken Ereignisse auf Android. Stattdessen wird ein PendingIntent beim Erstellen der Benachrichtigung verwendet.
Um das zu erreichen, was ich denke, Sie versuchen, zu erreichen, die verschiedenen Maßnahmen zu ergreifen, wie in den click_action
Parametern im Info Körper vorgeschlagen, Sie können dies die FirebaseMessagingService
im onMessageReceived
Methode Ihrer Klasse müssen Griff erstreckt (gemäß der docs).
Sie können diesen Code-Block haben die Remote-Nachricht zu handhaben:
private void sendMessage(RemoteMessage remoteMessage) {
if (remoteMessage.getData() > 0) {
String action = remoteMessage.getData().get("click_action");
// if you sent the notification with a "notification body", you can do this
String notificationBody = remoteMessage.getNotification().getBody();
// create notification with the action and the notification body
createNotification(action, notificationBody);
}
}
private void createNotification(String action, String notificationBody){
// create the intent and set the action
Intent intent = new Intent(getApplicationContext(), SomeActivity.class);
intent.setAction(action);
// create a pending intent
PendingIntent pendingIntent = PendingIntent.getActivity(getApplicationContext(), 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
// build the notification
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this)
.setSmallIcon(R.drawable.notification_icon)
.setContentTitle("My notification")
.setContentText(notificationBody)
.setContentIntent(pendingIntent); //set the content intent
NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
// notificationId allows you to update the notification later on.
mNotificationManager.notify(notificationId, mBuilder.build());
}
Sie können dann die spezifische Aktion innerhalb SomeActivity
gehen abrufen, indem Sie den getIntent().getAction()
verwenden und jeden Fall der Aktionen behandeln.
Zusammenfassend können Sie in Android keinen "Klick-Listener" für eine Benachrichtigung finden.
Sie können diese Links überprüfen: https://developer.android.com/guide/topics/ui/notifiers/notifications.html und https://firebase.google.com/docs/cloud-messaging/android/receive, um den Prozess weiter zu verstehen.
Prost.
Ich verwendete micrisoft Azure Notification Hubs API, um die Nachricht Website senden: https: //docs.microsoft.com/en-us/azure/notification-hubs/notification-hub-android-push-notification-google-gcm-get- gestartet Und ich sehe, es gibt onReceive-Methode in NotificationsHandler, die bei Erhalt der Benachrichtigung aufgerufen wird. Ich frage mich, ob es funktioniert wie onNotificationClick, so kann ich mit der Benachrichtigung funktionieren click Funktion – wuzinong
Und ich erweitert com.microsoft.windowsazure.notifications.NotificationsHandler diese Klasse, und ich kann sendMessage oder createNotification diese Funktionen in dieser Elternklasse nicht finden. auch für PendingIntent kann keine Referenz erhalten. Da wir den Microsoft Azure Notification Hub verwenden möchten, um alle Push-Benachrichtigungen der Plattform zu verwalten. Gibt es eine andere Methode, die ich verwenden kann? – wuzinong
- 1. Benachrichtigung klicken Ereignis in Xamarin Formen
- 2. Anruf Aktivität, wenn Benachrichtigung klicken Ereignis
- 3. GCM Push-Benachrichtigung Symbol
- 4. iOS Push-Benachrichtigung mit GCM
- 5. GCM Push-Benachrichtigung nicht wiederbelebt
- 6. Gcm Push-Benachrichtigung nicht empfangen
- 7. Benachrichtigung Großer Text Android GCM
- 8. GCM - App von Benachrichtigung öffnen?
- 9. java.lang.IncompatibleClassChangeError in gcm Push-Benachrichtigung
- 10. Android gcm Benachrichtigung geöffnet Fragment
- 11. Send Broadcast bei Benachrichtigung klicken
- 12. WSO2 GCM (Ausnahme beim Senden der GCM-Benachrichtigung: null)
- 13. MismatchSenderId Fehler von GCM (mit GCM Push-Benachrichtigung)
- 14. GCM 3.0 - gcm zeigt die Benachrichtigung mit dem Benachrichtigungsparameter
- 15. kann Aktivität bei Benachrichtigung nicht öffnen klicken
- 16. Rollback/Abbrechen der Android-Gcm-Benachrichtigung
- 17. Android GCM Push-Benachrichtigung funktioniert nicht
- 18. C# android GCM Benachrichtigung deaktivieren Ton
- 19. Implementieren Push-Benachrichtigung in IOs mit GCM
- 20. Laravel 5.1 GCM Push-Benachrichtigung SSL-Fehler
- 21. Push-Benachrichtigung senden GCM von Java
- 22. npm-GCM nicht Benachrichtigung an das Gerät
- 23. Erhalten GCM Push-Benachrichtigung in node.js App
- 24. GCM Benachrichtigung an ein Offline-Gerät
- 25. Manchmal nicht Push-Benachrichtigung GCM in Mobile
- 26. Einfache Push-Benachrichtigung ohne gcm wie Dinge
- 27. Senden Push-Benachrichtigung mit GCM in PHP
- 28. Klicken Sie auf GCM Benachrichtigung Öffnen nicht gewünschte Aktivität in Android Kitkat
- 29. Cordova lokale Benachrichtigung klicken Ereignisparameter sind leer
- 30. Benachrichtigung angezeigt wird, bevor Klick oder Ereignis
Vielen Dank für Ihre Antwort und tatsächlich habe ich getan, was Sie sagten, fügte einen Intent-Filter in meine manifest.xml und übergab click_action. Aber ich weiß nicht, welche Art von Code ich in meiner onCreate-Methode schreiben sollte. Ich kenne den Android-Code nicht, und ich wurde gebeten, diese Funktion zu beenden, also was ich tun sollte, ist, es zuerst zu beenden. Können Sie mir helfen, einen Beispielcode zur Verfügung zu stellen, wie ich ihn in meiner onCreate-Methode schreiben soll? Vielen Dank – wuzinong
@wuzinong Das hängt davon ab, was Ihre App tun soll, wenn die Aktivität als Ergebnis des Klickens auf die Benachrichtigung geöffnet wird. Zum Beispiel könnte es einige benutzerdefinierte Daten lesen, die im "data" Dictionary der Nachricht übergeben wurden und etwas damit machen. – Eran
Ja, ich lege meine Nachricht in Daten wie {data: {message: "a", title: "b"}, Benachrichtigung: {click_action: "SOME_ACTION"}} und rufe die API auf, um die Daten zu übergeben. Und auf Android-Seite, kann ich diese Daten bekommen, aber ich weiß nicht, wie man die Klick-Funktion in meinem Android-Code – wuzinong