[英]How to ignore a remote/push notification while app is on background/terminated
Technologies Used: 使用的技术:
To give you a background here's the data I'm sending via FCM on an api server 为您提供背景,这是我通过api服务器上的FCM发送的数据
{
"priority": "high",
"content_available": true,
"alert": true,
"sound": true,
"registration_ids": [
"<SOME_ID_HERE>",
"<SOME_ID_HERE>"
],
"notification": {
"title": "SOME TITLE",
"body": "SOME BODY"
},
"data": {
"some_key": "some_value",
"some_key2": "some_value2"
}
}
This is being received by the app correctly, and I'm correctly using these methods in a correct manner 应用程序已正确接收到此消息,并且我以正确的方式正确使用了这些方法
application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable: Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void)
messaging(_ messaging: Messaging, didReceive remoteMessage: MessagingRemoteMessage)
messaging(_ messaging: Messaging, didRefreshRegistrationToken fcmToken: String)
userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void)
userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void)
Is there a way to somehow ignore a push notification when the app is in background/terminated with this sample code? 当应用程序在后台/以此示例代码终止时,是否有办法忽略推送通知?
func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable: Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
switch application.applicationState {
case .inactive, .background:
// Tell Firebase that we recieved the Push Notification
self.messaging.appDidReceiveMessage(userInfo)
// `PushNotification` is a model that parses the `userInfo` dictionary
guard let pushNotification: PushNotification = PushNotification(userInfo) else {
return // end code execution cause push cannot be parsed
}
if pushNotification.isSomeKindOfThing {
// ignore
} else {
// do nothing so it will show
}
case .active:
// handle when application is active
}
}
What I'm aiming for is that when I receive a push notification I'm able to either ignore it depending on what is in the "data"
key. 我的目标是,当我收到推送通知时,可以根据
"data"
键中的内容忽略它。
如果您从推送通知日期的正文中删除键“ content_available”:true”,则当应用程序处于后台或终止状态时,不会收到推送通知。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.