当前位置: 首页 > 知识库问答 >
问题:

Firebase消息在接收推送通知时不唤醒iOS设备

楚修为
2023-03-14

我使用FCM向单个iOS设备发送推送通知,触发http请求到Firebase云功能。在遵循FCM和APNs文档之后,当应用程序在后台运行时,一切都正常工作。我在所有情况下都成功地收到了通知。

唯一的问题是:推送通知不会从睡眠中点亮我的锁屏。我仍然收到推送通知,当我按下home按钮手动唤醒设备时,可以看到它。但是通知本身不会唤醒我的设备。

    null

我已经打开了“后台模式”功能>同时选择了“远程通知”和“后台获取”。我的部署目标是10.0。我的应用程序允许锁屏通知。

(大多数类似问题的答案是,“打开后台模式”或“设置内容-可用到1”,我两个都做过。)

向APN发送有效负载的云函数

exports.pushMatchNotif = functions.https.onRequest((req, res) => {
  let receiverToken = req.receiverToken

  var msg = {
  'apns': {
    'header': {
      'apns-priority': '10'
    },
    'payload': {
      'aps': {
        'alert': {
          'title': 'Hi',
          'body': 'Hello',
        },
        'badge': 2,
        'sound': 'default'
        'content-available': 1
      }
    }
  },
  'token': receiverToken
};


  admin.messaging().send(msg)
  .then((response) => {
    // Response is a message ID string.
    console.log('Successfully sent message:', response);
    let json = {"Response": response}
    res.send(json)
  })
  .catch((error) => {
    console.log('Error sending message:', error);
    let json = {"Error": error}
    res.send(json)
  });

})
    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {

    FirebaseApp.configure()

    Messaging.messaging().delegate = self
    UNUserNotificationCenter.current().delegate = self

    let center = UNUserNotificationCenter.current()
    center.requestAuthorization(options: [.alert, .badge , .sound]) {
        (granted, error) in
        print("granted is \(granted)")
    }
    application.registerForRemoteNotifications()

    return true
}
 func messaging(_ messaging: Messaging, didReceiveRegistrationToken fcmToken: String) {

        print("Firebase deviced token: \(fcmToken)")

    }

我的didreceiveremotenoization方法:

    func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
    // Print message ID.
    if let messageID = userInfo[gcmMessageIDKey] {
        print("Message ID: \(messageID)")
    }

    // Print full message.
    print(userInfo)

}

我错过了什么?

共有1个答案

乔俊才
2023-03-14

我也有同样的问题。原来我启用了“请勿打扰”模式。禁用它就解决了。

 类似资料:
  • 我正在尝试使用Firebase Notification Composer向我的设备发送测试通知。我正在接收FCM令牌并将其打印到我的控制台,然后尝试向该令牌发送通知。 以下是我检查过的内容: 1) 我使用的是iOS 12.4.1 2) 我正在分配消息传递代理 3)我从委托方法接收FCM令牌 4) 我已经验证了通知是通过打印到控制台启用的,当提示我允许通知时,我单击了允许 5) 我已经验证了在Fi

  • 使用更新的Firebase cloud messaging和swizzling方法,当我的应用程序前景化时,我能够成功地在我的应用程序委托中的方法中接收有效负载。但是,我没有收到任何类型的有效负载,并且当我的应用程序处于后台时,不会被调用,尽管api响应消息已成功发送(见下文) 以下是我发送给FCM api的请求,以触发推送通知 有FCM的回复 这是我的appDelegate代码 我在我的应用程序

  • 我在ios的应用程序中使用Firebase云消息通知,但当我测试真正的机器时,我发现我无法接收任何推送消息。 我使用ios的Firebase Unity包。我检查了所有的步骤,但我不知道问题出在哪里。 我使用P8APNS文件,即keychain中的开发者标识和推送通知。 在xcode中,我打开了选项(推送通知和后台模式),但它无法接收推送消息、后台或前台。 以如下方式登录xcode控制台:

  • 我已经试着调试Firebase推送通知相当长时间了,但没有得到任何运气。我相信我已经正确地设置了临时配置文件和APNs证书。当我不包含方法时 当应用程序从Firebase通知控制台发送时,它会在前台接收通知,因为它会被打印出来,但它不会在后台接收通知。

  • 我对FireBase云消息有一个问题,我从设备中获取令牌,并通过Google FireBase通知控制台发送通知测试。但是,通知从来没有被记录,也没有被推送到android虚拟设备。FCM的文档几乎与下面的代码完全相同,其他代码很少,您还需要做什么来获得使用FireBase的推送通知。我已经完成了所有的设置信息(build.gradle添加、安装google play服务等)如文档中所指定的,但仍

  • 我已经设置了一个启用推送通知的iOS应用程序。 我可以将消息推送到应用程序,例如,徽章计数工作并相应更新。 但是我从来没有在锁屏或其他地方看到标准的推送通知弹出窗口,尽管手机会震动,所以信息可以通过。 即使应用程序关闭或不在后台。 这是有效载荷: