如何在 android studio 中点击 firebase 推送通知打开特定的用户界面?
how to open a specific UserInterface, onClicking on firebase push notification in android studio?
我正在使用 firebase 推送通知,我的 android 设备也会收到通知。
如果我收到通知,当应用程序打开时,我可以阅读“标题”和“消息”,它会将我带到“UserDetailsActivity”特定的class。但我也想在点击通知时做同样的事情.但是当点击通知时它不会打开“UserDetailsActivity”并且它会打开启动类并且我无法阅读消息。有人有解决办法吗?
firebaseService class
public class FirebaseMessagingService 扩展 com.google.firebase.messaging.FirebaseMessagingService {
私有静态整数计数 = 0;
@覆盖
public void onMessageReceived(@NonNull RemoteMessage remoteMessage) {
super.onMessageReceived(远程消息);
Log.d(TAG, "发件人:" + remoteMessage.getFrom());
// Check if message contains a data payload.
if (remoteMessage.getData().size() > 0) {
Log.d(TAG, "Message data payload: " + remoteMessage.getData());
startService(new Intent(getApplicationContext(),UserDetailsActivity.class));
/*
消息数据负载:
消息通知Body:
*/
}
// Check if message contains a notification payload.
if (remoteMessage.getNotification() != null) {
Log.d(TAG, "Message Notification Body: " + remoteMessage.getNotification().getBody());
}
}
}
*android主要节日
<service
android:name=".backgroundService.FirebaseMessagingService"
android:exported="false">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
</intent-filter>
</service>
根据文档,当收到带有通知和数据有效负载的消息并且应用程序处于后台模式时,通知会传送到设备的系统托盘,并且数据有效负载会在 intent 的 extras 中传送发射器 Activity。
选项1:
您可以尝试在启动 activity 中处理数据,然后从那里启动 UserDetailsActivity 并在不显示 UI 的情况下快速完成启动器 activity。
https://firebase.google.com/docs/cloud-messaging/android/receive
选项 2:
不要从 FCM 发送通知部分,只发送有效负载部分。在 onmessagereceived() 方法中,为 UserDetails activity 或 service.
构造带有待定意图的通知
启动器激活
if (getIntent().getExtras() != null) {
for (String key : getIntent().getExtras().keySet()) {
String value = getIntent().getExtras().getString(key);
Log.d(TAG, "Key: " + key + " Value: " + value);
}
}
我正在使用 firebase 推送通知,我的 android 设备也会收到通知。 如果我收到通知,当应用程序打开时,我可以阅读“标题”和“消息”,它会将我带到“UserDetailsActivity”特定的class。但我也想在点击通知时做同样的事情.但是当点击通知时它不会打开“UserDetailsActivity”并且它会打开启动类并且我无法阅读消息。有人有解决办法吗?
firebaseService class
public class FirebaseMessagingService 扩展 com.google.firebase.messaging.FirebaseMessagingService { 私有静态整数计数 = 0; @覆盖 public void onMessageReceived(@NonNull RemoteMessage remoteMessage) { super.onMessageReceived(远程消息); Log.d(TAG, "发件人:" + remoteMessage.getFrom());
// Check if message contains a data payload. if (remoteMessage.getData().size() > 0) { Log.d(TAG, "Message data payload: " + remoteMessage.getData()); startService(new Intent(getApplicationContext(),UserDetailsActivity.class));
/* 消息数据负载: 消息通知Body: */
} // Check if message contains a notification payload. if (remoteMessage.getNotification() != null) { Log.d(TAG, "Message Notification Body: " + remoteMessage.getNotification().getBody()); } }
}
*android主要节日
<service
android:name=".backgroundService.FirebaseMessagingService"
android:exported="false">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
</intent-filter>
</service>
根据文档,当收到带有通知和数据有效负载的消息并且应用程序处于后台模式时,通知会传送到设备的系统托盘,并且数据有效负载会在 intent 的 extras 中传送发射器 Activity。 选项1: 您可以尝试在启动 activity 中处理数据,然后从那里启动 UserDetailsActivity 并在不显示 UI 的情况下快速完成启动器 activity。 https://firebase.google.com/docs/cloud-messaging/android/receive
选项 2: 不要从 FCM 发送通知部分,只发送有效负载部分。在 onmessagereceived() 方法中,为 UserDetails activity 或 service.
构造带有待定意图的通知启动器激活
if (getIntent().getExtras() != null) {
for (String key : getIntent().getExtras().keySet()) {
String value = getIntent().getExtras().getString(key);
Log.d(TAG, "Key: " + key + " Value: " + value);
}
}