- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是我的代码的一部分。我想使用 UNUserNotificationCenter
和 UNUserNotificationCenterDelegate
来处理通知事件。
当应用程序处于前台状态时,此代码会捕获通知事件。但是 "didReceive"
不会为后台状态触发。
func application(_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions:
[UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
UNUserNotificationCenter.current().delegate = self
application.registerForRemoteNotifications()
return true
}
func userNotificationCenter(_ center: UNUserNotificationCenter,
willPresent notification: UNNotification,
withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void)
{
print("willPresent") /// This works
completionHandler([.alert, .badge, .sound])
}
func userNotificationCenter(_ center: UNUserNotificationCenter,
didReceive response: UNNotificationResponse,
withCompletionHandler completionHandler: @escaping () -> Void) {
print("didReceive") /// This doesn't work
completionHandler()
}
但如果我不使用 UNUserNotificationCenter.current().delegate = self
,委托(delegate)方法会在后台正确触发。
func application(_ application: UIApplication,
didReceiveRemoteNotification userInfo: [AnyHashable: Any],
fetchCompletionHandler completionHandler: @escaping FetchCompletionHandler) {
print("didReceiveRemoteNotification... \(userInfo)")
}
如何使用“didReceive”?我想在后台处理通知。
最佳答案
application(_:didReceiveRemoteNotification:fetchCompletionHandler:)
在应用程序收到静默推送通知时调用。当应用程序处于后台状态时,可以传递静默推送通知,iOS 唤醒应用程序以执行对用户不可见的后台处理。
静默推送通知的 content-available
标志设置为 1。
无声推送通知不应包含警报、角标(Badge)或声音。静默推送并不意味着对用户可见,它只是向应用程序提示新的远程内容可用。
从您的推送通知负载中删除 content-available
标志将导致 iOS 将其作为常规通知处理。将调用用户通知中心委托(delegate)方法,而不是 application(_:didReceiveRemoteNotification:fetchCompletionHandler:)
,但您的应用程序将无法执行由通知触发的后台处理。
您可以使用 this tool 验证推送通知负载的内容是否存在此类问题
关于ios - 为什么没有触发 userNotificationCenter didReceive?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53460280/
我正在尝试使用新的 UserNotifications 框架进行本地通知。单击/打开通知时,我将用户重定向到不同的 View Controller 。 UNUserNotificationCenter
我的 AppDelegate 中有这个: @available(iOS 10.0, *) func didReceive(_ request: UNNotificationRequest,
这是我的代码的一部分。我想使用 UNUserNotificationCenter 和 UNUserNotificationCenterDelegate 来处理通知事件。 当应用程序处于前台状态时,此代
为了获得丰富的推送通知,我一步步前进。他们在这里: 使用 plist 创建通知服务扩展: NotificationService didRecieve : override func didRecei
以下是我的代码。我正在尝试使用 didReceive 质询方法进行身份验证。 Apple 文档说,如果 session 任务需要身份验证,并且没有可用的有效凭据,则会调用“didReceive cha
当我发送推送通知时,应用程序在前台 willPresent 被调用。 didReceive 永远不会被调用。当应用程序在后台并收到推送通知时,会显示警报,但应用程序不会调用 didReceive 或
我正在尝试从 userNotificationCenter(_:didReceive:withCompletionHandler:) 中检索原始通知内容在 watchOS 中。从 APNS 发送推送通
我已经为 ios10 实现了推送通知。点击通知警报将触发“didReceive”委托(delegate),如果我将通知保存在核心数据中,或者如果我在前台则为静默通知。问题是如果我在后台收到一堆通知并且
我正在使用 func xmppStream(_ sender: XMPPStream, didReceive presence: XMPPPresence) 来管理在线离线状态。这个功能对于一对一用户
我正在处理本地通知,但我遇到的问题是当应用程序终止时没有调用 didReceive Response 方法,所以当我点击通知操作时它只是启动应用程序而没有做任何其他事情。但是,当该应用程序仅在后台运行
我想禁用在特殊情况下向用户发送推送通知。我在 userDefault 中保存了我的第一个推送,在第二个中我检查它是否相同。当我调试它时输入返回而不是继续,但我仍然收到推送通知。从 firebase a
我有一个 LocalNotification 类,其中实现了 UserNotifications。我在我需要展示的初始 ViewController 和 CheckViewController 之间创
将文件从 iPhone 传输到 Apple Watch 后出现错误 Error Domain=NSPOSIXErrorDomain Code=2 "No such file or directory"
static let didReceiveResponseSelector : Selector = #selector((NSURLConnectionDataDelegate.connection
我的 TableView 单元格中有一个 Admob 横幅。一切似乎都正常,但是当我尝试让 func adViewDidReceiveAd(_bannerView: GADBannerView!) 正
因此,我一直在此处和其他地方阅读有关此主题的其他帖子,但我仍在挣扎。我的应用正在使用 “Fireabase FCM” 执行设备到设备的通知。我能够发送和接收消息。然而,方法“didReceive Re
我已经知道这段代码可以在 iOS 10 之前使用: func application(_ application: UIApplication, didReceive notification: UI
我有一个正常工作的应用程序,它的通知显示效果很好。现在我想处理一些通知事件,比如当用户点击横幅时。 我的 iOS 部署目标是 11.0,与我的部署目标相同。 我在 AppDelegate.swift
我想添加一个进度条以准确了解我的视频上传的百分比,但无法调用 didCompleteWithError、didReceive 响应、didSendBodyData bytesSent:Int64、to
我创建了一个背景URLSession使用以下代码的对象: let identifier = /* some background identifier */ let config = URLSessi
我是一名优秀的程序员,十分优秀!