正在接收推送通知,但在发送 PubNub 聊天消息有效负载时,后台提取不使用 pn_apns 标记调用
Push Notification is receiving but background fetch not calling with pn_apns tag when sending in PubNub chat message Payload
我使用 PubNub 服务而不是 PubNub 聊天引擎在我的应用程序中设置了一个聊天模块。一切正常,直到出现推送通知。此应用程序也有 Android 版本(不是我构建的)。我能够使用下面提到的 payload1 接收功能齐全的 Apple 推送通知。但就通知而言,它仅适用于 iOS 设备,没有通知 Android 为通知添加了 GCM 的设备。
所以我做了一些 RND 并找到了这个 Link 并使用了下面提到的 Payload2。使用这两个平台都会收到通知。但是现在 iOS 通知同时出现在前台和后台应用程序状态。但是下面提到的所有方法都没有调用,现在唯一调用的方法是前台的 willPresent。我想知道为什么会这样。有效载荷或标签有问题还是什么?请帮助我为此奋斗了一个星期。提前致谢。
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 文档中描述的推送通知行为。从历史上看,推送通知旨在用于应用程序主动使用之外的操作,因此此记录方法作为一种更新的机制提供,以便在应用程序处于活动状态时与推送通知进行交互。
您可能还想查看 UNNotificationPresentationOptions
as well for the available choices here.
我使用 PubNub 服务而不是 PubNub 聊天引擎在我的应用程序中设置了一个聊天模块。一切正常,直到出现推送通知。此应用程序也有 Android 版本(不是我构建的)。我能够使用下面提到的 payload1 接收功能齐全的 Apple 推送通知。但就通知而言,它仅适用于 iOS 设备,没有通知 Android 为通知添加了 GCM 的设备。
所以我做了一些 RND 并找到了这个 Link 并使用了下面提到的 Payload2。使用这两个平台都会收到通知。但是现在 iOS 通知同时出现在前台和后台应用程序状态。但是下面提到的所有方法都没有调用,现在唯一调用的方法是前台的 willPresent。我想知道为什么会这样。有效载荷或标签有问题还是什么?请帮助我为此奋斗了一个星期。提前致谢。
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 文档中描述的推送通知行为。从历史上看,推送通知旨在用于应用程序主动使用之外的操作,因此此记录方法作为一种更新的机制提供,以便在应用程序处于活动状态时与推送通知进行交互。
您可能还想查看 UNNotificationPresentationOptions
as well for the available choices here.