我正在使用 Expo 开发一个 react 原生的消息传递应用程序。每次用户收到一条新消息时,我都会从我的服务器发送一条通知。
如果应用当前打开,有什么方法可以不显示通知?
现在我在收到通知后立即使用它:
Notifications.dismissNotificationAsync(notification.notificationId);
但是有 0.5 秒的延迟,通知有时间出现在托盘中并在被关闭之前触发声音。我不想显示它。
最佳答案
在应用程序运行时收到通知时,使用setNotificationHandler
,您可以设置一个回调来决定是否应向用户显示通知。
Notifications.setNotificationHandler({
handleNotification: async () => ({
shouldShowAlert: true,
shouldPlaySound: false,
shouldSetBadge: false,
}),
});
当收到通知时,handleNotification
被调用,传入的通知作为参数。该函数应在 3 秒内响应一个行为对象,否则通知将被丢弃。如果通知处理成功,将使用通知的标识符调用 handleSuccess
,否则(或超时)将调用 handleError
。
未设置处理程序或未及时响应时的默认行为是不显示通知。
如果您不使用 setNotificaitonHandler,当应用程序处于前台时将不会显示新通知。
因此,您可以在应用初始化时简单地将 setNotificationHandler
设置为 null
。
Notifications.setNotificationHandler(null);
关于android - 世博会:如果应用程序在前台打开,则不显示通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56689701/