我可以在应用程序关闭时拦截通知吗?
我需要用这个库设置徽章 快捷方式獾
谢谢。
有 3 种类型的通知:
通知:可以从 Web 控制台或任何后端发送,它具有预定义的值。如果应用程序处于打开状态,则行为可在 onMessageRecieve 上自定义,如果应用程序已关闭,则会触发默认通知。 data:一个键值对,只有字符串。可以从任何后端发送。行为始终在 onMessageReceived 方法中定义。 通知和数据:以前的组合将具有通知的行为,一旦在默认启动器活动中单击通知,数据将作为附加内容提供。可以从 Web 控制台或任何后端发送。
推送是一个名为 Payload 的 json,其中包含以下对象:
有效载荷:{ 数据:{...} }
是的,您可以向自己发送数据类型通知,它将始终执行您在消息传递服务中的onMessageReceived方法中编写的内容。
此文档应该对您有所帮助 https://firebase.google.com/docs/cloud-messaging/concept-options?hl=es-419
如果您没有服务器,请使用函数。
由于不会显示默认通知,因此您可能希望显示自己的通知。 如果还想显示通知,则必须从 onMessageReceived 内部调用 NotificationCompat 类。视觉通知与推送消息无关,实际上,按下按钮可以触发视觉通知。
要创建视觉通知,最好的方法是让Android Studio为您完成。第二次单击您的活动所在的包.java,新建,然后选择 ui 组件,然后有通知。它将创建通知的基本模板。然后在 onMessaReceived 中使用这些方法传递必须向用户显示的信息。
关于课程的文档 https://developer.android.com/reference/android/support/v4/app/NotificationCompat.Builder.html
您可能会发现此错误 NotificationCompat.Builder 在 Android O 中已弃用
如果您从未解决此问题,则问题不在于如何在应用中实现它,而在于如何发送 JSON 数据有效负载。请参阅此问题和相应的答案,了解为什么您在后台时没有收到消息。
非常简短的总结是,如果您收到notification
有效负载,它永远不会在后台触发。如果您在没有notification
的情况下收到data
有效负载,则可以在应用程序处于后台时解析和执行操作。
你的意思是吗?
public class AppFcmMessagingsService extends FirebaseMessagingService {
private static final String TAG = "FirebaseMessageService";
@Override
public void onCreate() {
super.onCreate();
}
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
try {
if(remoteMessage.getData().size() > 0) {
final JSONObject jsonObject = new JSONObject(remoteMessage.getData().toString());
Log.d(TAG,"remoteMessage = " + jsonObject.toString());
int badgeCount = 1;
ShortcutBadger.applyCount(getApplicationContext(), badgeCount);
}
} catch (Exception e) {
Log.e(TAG, "onMessageReceived: ", e);
}
if(remoteMessage.getNotification() != null) {
int badgeCount = 1;
ShortcutBadger.applyCount(getApplicationContext(), badgeCount);
Log.d(TAG, "notification body : " + remoteMessage.getNotification().getBody());
}
}
}