我正在使用 OneSignal 进行推送通知。我想过滤一些推送通知并根据条件对用户隐藏。
我的应用中有两个登录,用户可以同时登录。我有不同的表来保存用户数据,包括 OneSignal 用户 ID。我可以发送包含其他数据的通知,并根据此数据导航到屏幕,例如 "type`:"a"
或 "type:"b
。
用户可以离线注销,所以我使用 workmanager 从数据库中删除 OneSignal 用户 ID 并阻止发送通知。
我的问题是,当用户在离线状态下注销两次登录之一时,OneSignal 用户 ID 不会被删除,直到用户在线。在这段时间内,我的服务器可以向将被删除的 OneSignal 用户 ID 发送通知。所以当用户在线时,也会收到这些通知。
我尝试了 OneSignal.shared.setSubscription(false)
,但此功能阻止接收所有通知,但我只想接收“类型 b”通知。
是否有任何处理程序可以执行以下操作?或者您对此有什么建议吗?
OneSignal.shared.setNotificationReceivedHandler((OSNotification notification) {
var additionalData = openedResult.notification.payload.additionalData;
if(additionalData["type"] == "a" && !isTypeALogin){
//Dont Show This Notification
}
});
更新:
OneSignal Flutter SDK 3 Beta 有 setNotificationWillShowInForegroundHandler
可以做到这一点。所以我决定只更改在线注销。 Related github issue