ios - 在 Swift 上推送通知

标签 ios swift firebase notifications firebase-cloud-messaging

我对 Firebase 通知有一个很大的问题; 我的问题是我可以在后台模式和前台模式下接收通知,但是如果我终止它(从 ram 中杀死它),我将无法收到任何东西。

我发现如果我注释掉这个函数

func application(_ application: UIApplication,
                 didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
    Messaging.messaging().apnsToken = deviceToken
}

应用程序终止后,当我重新打开应用程序时,我可以收到通知,但我无法像以前那样在后台收到通知。

有任何方法可以解决它,因为我的应用程序应该每次都收到通知:后台、前台以及应用程序从终止状态重新打开时

以下是我的通知的 JSON 示例:

{
"content_available": true,
"priority": "high",
"data": {
    "priority": "SILENT",
    "target": "contact",
    "msgBody": "",
    "msgTitle": ""
},
"to": "firebase_TOKEN"

我还想说,这个通知应该是无声的

最佳答案

当应用程序被杀死时,操作系统会处理通知,因此它需要一些特定的键来显示通知。

考虑下面的例子:

{

"content_available": true, 
  "notification": {
    "title":  "has sent you a message", 
    "sound": "default", 
    "body": "Hi", 
    "badge": 6

  }, 
  "to": "firebase_TOKEN", 
  "priority": "high"
}

这里你需要用"notification"替换"data",你还需要一个"title"而不是"msgTitle""msgBody" 将替换为 "body"

看起来你的是一个不适用于 iOS 的 android payload。

关于ios - 在 Swift 上推送通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54867202/

相关文章:

ios - 在 Objective-C 中发送分块的 HTTP 1.1 请求

ios - ios webview使用的浏览器

swift - 访问 tableView SWIFT 中的文本字段

java - 名称为 [DEFAULT] 的 FirebaseApp 不存在。 (对于 Spring 启动)

ios - 如何通过谷歌帐户快速检查用户是否已经在 firebase 中注册

ios - 你如何在 swift 中使用解析字符串?

iphone - iOS iPhone 是否可以克隆 UIView 并将其自身绘制到两个 UIView 上?

ios - 键盘上方的单词建议有多高?

ios - UITextView 的动态圆角半径

android - Firebase ML Kit : "Internal Error" Exception, 但良好的输入和良好的配置