- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
在后台处理丰富的推送后(用户在没有打开应用程序的情况下单击了 UNNotificationAction - 没有前台)),然后当您进入应用程序时,会出现重复的推送事件,导致“didReceiveRemoteNotification”执行。
我的问题是:
为什么当我处理丰富的推送时:
func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) {
并调用 competionHandler(),在以下位置接收到相同的推送:
func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable: Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void)
?
推送设置:
UNUserNotificationCenter.current().delegate = self
UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .sound, .badge]) { (granted, error) in
if granted {
print("UNUserNotificationCenter auth granted")
Utils.performTaskOnMain {
application.registerForRemoteNotifications()
}
} else {
print("UNUserNotificationCenter auth error = \(error?.localizedDescription ?? "")")
}
推送处理程序
func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable: Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void)
{
print("AppDelegate didReceiveRemoteNotification, with info:\(userInfo)")
handleNotificationUserInfo(userInfo)
completionHandler(UIBackgroundFetchResult.newData)
}
@available(iOS 10.0, *)
func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) {
UserNotificationsManager.shared.handleActionIdentifierForReceivedNotification(response)
completionHandler()
}
推送通知负载:
info:[AnyHashable("content-available"): 1, AnyHashable("messageInfo"): {"push_type":"XXXX","category":"videoCategory","mediaUrl":"https://XXXX.png","threadId":"24274","alertTitle":null,"initiator":"XXXXX XXXX.mp3","alertBody":null,"mutableContent":true}, AnyHashable("media-url"): https://XXXXX.png, AnyHashable("aps"): {
alert = {
body = "XXXXX";
};
badge = 56;
category = "XXX.videoCategory";
"content-available" = 1;
"mutable-content" = 1;
sound = "XXXX.mp3";
}]
最佳答案
传递到您的应用程序的“重复”推送是静默推送通知。除了 alert
字典之外,您的推送通知还包含 content-available
键。
alert
字典会导致传递用户可见的通知。
content-available
键导致它作为静默推送通知再次传送,这对用户是不可见的。
这是一个不受支持的配置。删除 content-available
键,将只发送用户可见的推送通知。如果您正在积极使用静默推送,请将其作为单独的推送发送,仅包含 content-available
、category
和您的自定义 key 。
关于IOS - 通过单击 UNNotificationAction 处理后丰富的推送重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51929483/
当应用程序关闭(不在后台)时如何处理新的 iOS10 通知操作? 当应用程序被最小化时,一切正常: UNUserNotificationCenter.current().delegate = x 并处
我有以下显示通知的代码。它的工作,但是,它没有显示操作按钮。我想知道可能出了什么问题? UNUserNotificationCenter *center = [UNUserNotificationCe
我正在实现可操作的远程通知,但是在 notification 到来时没有显示操作按钮。 负载 {"aps":{"alert":"Testing.. (11)","badge":1,"sound":"d
当用户收到通知并且我的应用程序在后台时,如何打开我的应用程序?当然点击通知本身会打开应用程序,但是如何使用自定义通知操作来处理它呢? 我已经实现了 UNUserNotificationCenterDe
UINotificationAction 定义如下 let customAction = UNNotificationAction(identifier: "customCategory.Action
我引用了Apple的代码,但不起作用,这是我的代码: override func viewDidLoad() { super.viewDidLoad() let center = UN
我正在使用 Firebase 发送远程消息,如下所示: AppDelegate(伪代码): func application(_ application: UIApplication, didFini
我将本地通知与 UNNotificationAction 结合使用,当用户触发操作时,我需要向服务器发送 API 请求。 当设备处于低功耗模式并且后台应用程序刷新关闭并且应用程序被终止时,我在操作处理
在后台处理丰富的推送后(用户在没有打开应用程序的情况下单击了 UNNotificationAction - 没有前台)),然后当您进入应用程序时,会出现重复的推送事件,导致“didReceiveRem
我因为尝试为支持 iOS 9、10 和 11 的远程通知添加 UNNotificationAction 按钮而陷入困境。我遵循了多个教程中的所有步骤,其中大多数都使用本地通知来显示 UNNotific
我的场景: 我有一个应用程序,每天发送有关文章的推送通知。 iOS 应用程序在通知中附加了三个 UNNotificationActions - 一个用于阅读文章,一个用于共享文章,一个用于保存文章供以
我正在尝试使用 UNNotification 操作来允许用户通过电子邮件/短信向其他人发送“警报”(即委托(delegate)操作)。当我单击通知本身时,它会出现在前台,我可以转到正确的屏幕并毫无问题
我想创建 UNNotificationContentExtension 来显示一些自定义 UI。为此,我必须为 UNNotificationContentExtension 创建一些类别,并在安排通知
我正在使用带有自定义操作(接受、拒绝)的通知内容扩展。按关闭时,我正在尝试向我的服务器发送 https 请求。不断收到 -1009 错误(Internet 连接似乎已离线)。 应用程序设置为使用后台模
我正在使用 UNNotificationAction 创建本地通知的通知服务扩展,但点击它代表不会被调用。 userNotificationCenter(_ center: UNUserNotific
我在 ViewController.swift 中创建了一个计划通知,需要将两个操作添加到该通知中。一个说“调用”,另一个说“取消”。如何在 ViewController.swift 中添加这些操作?
我正在尝试在 FCM 推送通知时添加一些自定义操作。我在注册通知后尝试添加这些。 UNUserNotificationCenter.current().delegate = self
我是一名优秀的程序员,十分优秀!