- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已成功为我的消息传递应用程序设置了远程通知,并希望合并 iOS 的“快速回复”功能,现在更广为人知的是 UNUserNotificationCenter
的 UNTextInputNotificationAction
。
我将文本输入操作添加到我的传入消息通知中,它按预期工作。
我的问题在于 UNUserNotificationCenterDelegate
函数 userNotificationCenter:didReceiveNotificationResponse:withCompletionHandler:
。
无论我如何将 NSURLSessionDataTask
设置为 POST
UNTextInputNotificationResponse
的输入响应 userText
,请求总是超时。当我在应用程序处于前台时“快速回复”收到的通知时,它确实工作正常。
- (void)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void (^)(void))completionHandler {
if ([response isKindOfClass:UNTextInputNotificationResponse.class]) {
if ([response.actionIdentifier isEqualToString:@"REPLY_MESSAGE"]) {
[ApiManager chatWithId:@"123456789abcdefg" postTextMessage:[(UNTextInputNotificationResponse *)response userText] completion:^(Message *message) {
if (!message) {
NSLog(@"Sending failed");
}
completionHandler();
}];
}
}
}
ApiManager
中的数据任务构建在 [NSURLSession sharedSession]
之上 - 请注意,即使将其更改为 backgroundSessionConfigurationWithIdentifier 之后,这也不起作用:
并实现所需的委托(delegate)方法。
通过控制台可以看到“发送失败”的日志,如果我检查DataTask的错误,它显示“超时”错误。
我怀疑我的背景网络有问题,但我无法全神贯注,而且我到处都找不到答案。这里的文档也非常稀少。
最佳答案
对于将来遇到此问题的任何人:我能够通过将 content-available:1
添加到我的推送通知负载来解决它。我仍然在这里使用数据任务和共享 url session 。对于任何感兴趣的人,也没有委托(delegate),使用完成 block 。
我最初认为这行不通,添加内容可用标志实际上还有另一个原因,所以很高兴这解决了我最初遇到的问题。为什么我认为这行不通?很简单,因为如果我们相信文档,可用的内容会向应用程序表明有可供下载的内容。针对这种情况,有一个特殊的应用程序委托(delegate)方法被调用:
应用程序(_:didReceiveRemoteNotification:fetchCompletionHandler:)
响应用户通知操作的方法也有更多的时间来处理,这是一个很好的副作用。
额外好处:我还发现,如果不添加内容可用标志,快速回复将在 Apple Watch 上运行,因为我猜,操作系统允许应用程序在响应请求时执行更长的后台操作来自 Apple Watch。
关于ios - 快速回复 : NSURLSessionDataTask from "userNotificationCenter:didReceiveNotificationResponse:withCompletionHandler:",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46893357/
这是我的代码的一部分。我想使用 UNUserNotificationCenter 和 UNUserNotificationCenterDelegate 来处理通知事件。 当应用程序处于前台状态时,此代
这个错误刚刚开始弹出。是错误还是更新? Conflicting parameter types in implementation of 'userNotificationCenter:didRece
我正在尝试从 userNotificationCenter(_:didReceive:withCompletionHandler:) 中检索原始通知内容在 watchOS 中。从 APNS 发送推送通
我目前正在实现推送通知,我想知道 userNotificationCenter:didReceiveNotificationResponse:withCompletionHandler: 中的 com
如何读取“magazin”的值? func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response
当应用关闭且用户点击通知时: 1) 使用 remoteNotification 对象调用 didFinishLaunchingWithOptions。我按预期在此处设置了 rootViewContro
我已成功为我的消息传递应用程序设置了远程通知,并希望合并 iOS 的“快速回复”功能,现在更广为人知的是 UNUserNotificationCenter 的 UNTextInputNotificat
我正在尝试将时间值作为字符串接收,然后让通知使用该值作为触发器来显示。我的问题是通知采用这种格式来设置它的时间: var dateComponents = DateComponents()
我刚刚升级了为 iOS 10 注册的整个 iOS 推送通知,使用以下代码: -(void)registerForNotifications{ if(SYSTEM_VERSION_GRATERTHAN_
我想弄清楚我是否可以通过本地通知来实现我的目标,或者我是否需要切换到远程通知。 我正在通过构建一个闹钟程序来练习 iOS 10/Swift 3,该程序会在一天中的固定时间播放 RSS 更新的广播节目的
我有一个现有的项目,我们在其中使用 NSNotificationCenter 构建了它。现在,如果我想向我的应用程序添加丰富的通知,是否应该将所有 NSNotification 调用都替换为 NSUs
我是一名优秀的程序员,十分优秀!