繁体   English   中英

当应用程序在后台/终止时如何忽略远程/推送通知

[英]How to ignore a remote/push notification while app is on background/terminated

使用的技术:

为您提供背景,这是我通过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"
    }
}

应用程序已正确接收到此消息,并且我以正确的方式正确使用了这些方法

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)

当应用程序在后台/以此示例代码终止时,是否有办法忽略推送通知?

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
    }
}

我的目标是,当我收到推送通知时,可以根据"data"键中的内容忽略它。

如果您从推送通知日期的正文中删除键“ content_available”:true”,则当应用程序处于后台或终止状态时,不会收到推送通知。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM