ios - 推送通知正在接收,但在 PubNub 聊天消息中发送时后台获取未使用 pn_apns 标签调用有效负载
问题描述
我使用 PubNub 服务而不是 PubNub 聊天引擎在我的应用程序中设置了一个聊天模块。一切正常,直到推送通知出现。这个应用程序也有安卓版本(不是我建造的)。我能够使用下面提到的payload1接收功能齐全的 Apple 推送通知。但它仅适用于通知方面的 iOS 设备,不适用于为通知添加 GCM 的 Android 设备的通知。
所以我做了一些 RND 并找到了这个链接并使用了下面提到的 Payload2。使用这两个平台都会收到通知。但现在在 iOS 中,通知同时出现在前台和后台应用程序状态。但是下面提到的所有方法都没有调用,现在唯一调用的方法是前台的willPresent。我想知道为什么会这样。Payload或Tag有什么问题吗?请帮助我为此奋斗一周。提前致谢。
payload1 = [
"aps" : [
"alert" : [
"title" : self.loginUserProfile.firstName,
"body" : message],
"pn_exceptions" : [
tokenString
],
"content-available": 1,
"sound" : "marco_alert.aiff",
"publisher" : self.loginUserProfile.userId,
"date" : Date().dateString()]
] as [String : Any]
payload2 = [
"pn_apns":
[
"date": Date().dateString(),
"aps":
[
"sound": "marco_alert.aiff",
"alert":
[
"title": self.loginUserProfile.firstName,
"body": message
],
],
"pn_exceptions": [tokenString],
"publisher": self.loginUserProfile.userId,
"content-available": 0
],
"pn_gcm": [
"data": messageString
]] as [String : Any]
func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void)
和
func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any])
和
func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void)```
解决方案
@Ahsan 我想确保我理解您描述的行为:当应用程序在后台时,使用上述有效负载通过 PubNub 发送的通知在 Android 和 iOS 上有效。但是当 iOS 应用程序在前台时,通知只是调用func userNotificationCenter(_ center: UNUserNotificationCenter,
willPresent notification: UNNotification,
withCompletionHandler completionHandler:
@escaping (UNNotificationPresentationOptions) -> Void)
?
如果是这样,那是 Apple iOS 官方文档中描述的 Apple iOS 推送通知行为。从历史上看,推送通知旨在用于应用程序活动使用之外的操作,因此此记录的方法是作为一种更新的机制提供的,用于在应用程序处于活动状态时与推送通知进行交互。
推荐阅读
- r - 如何只保留R中时差小于3分钟的事件
- python - 带有 PyQt 和 Python 线程、PySerial 和 GPIO 的网络摄像头流媒体
- javascript - “HTMLElement”类型上不存在属性“pseudoStyle”
- vbscript - AddField 函数无法按预期工作
- jenkins - 运行 Jenkins 测试时无法监听端口 33848
- playframework - 如何在 ubuntu 中安装 playframework 2.6?
- css - 100% 宽度的标签?
- apache-spark - 多个 Spark 提交作业错误
- asp.net-mvc - ADAL ASP.NET MVC 和 Angular。从 ASP .NET MVC 登录
- gulp - 使用 gulp-usemin 为每个文件夹制作 index.html