gpt4 book ai didi

ios - Firebase FCM 关于 IOS 10 的说明

转载 作者:行者123 更新时间:2023-11-29 05:44:54 25 4
gpt4 key购买 nike

有谁可以澄清使用 Swift 4.2 且 IOS 目标 >= 10 的 FCM 所需方法简化:1)没有直接的“数据”消息……仅通过 APNS 通知/警报消息2) 即使一些教程(没有解释原因)告诉我将 Swizzling 关闭,我仍然启用 Swizzling

我发现 IOS 弃用问题和 FCM 方面的一些文档遗漏使这种方式比它需要的更加困惑。

我们可以得到一个简单的矩阵,例如:应用程序状态|关闭 |背景|前景|

用户操作:无(简单消息到达 IOS)驳回通知点击通知选择通知操作直接打开应用程序——不参与通知

在上述场景中调用的方法是:废话……

此外,无论 APNS 是否已发送 token ,FCM 似乎都会创建自己的 token ;所以我需要不同的逻辑来检测用户是否已授予权限,然后我的服务器才能假定 FCM token 完全可以工作...我想我不会将 FCM token 发送到服务器,直到我也确定我有 APNS token …… ???

此外,FCM 文档明确指出用户可见(即警报/通知样式)有效负载是通过 APNS/Apple 传递的。

因此,我认为我可以假设在 Apple 向我发送 APNS token 之后 FCM 消息才会到达。

但我似乎无法从 FCM 委托(delegate)方法读取或检索 Apple token 。

此代码始终为 apns 返回空字符串,因此我无法判断我的应用程序是否处于可靠状态:

@objc func 消息传递(_消息传递:消息传递,didReceiveRegistrationToken fcmToken:字符串){ print("Firebase 注册 token :(fcmToken)") 让 apnsTokenData = messages.apnsToken 让 apnsToken = apnsTokenData?.reduce("", {$0 + String(格式: "%02X", $1)}) ?? ”” print("apnsToken:(apnsToken)")

感谢您的澄清!

最佳答案

以下是使用 firebase 的 APNS 必须实现的功能

  • 注册推送通知
let authOptions: UNAuthorizationOptions = [.alert, .badge, .sound]
UNUserNotificationCenter.current().requestAuthorization(
options: authOptions,
completionHandler: {_, _ in })
application.registerForRemoteNotifications()
  • 接收 FCM token
func messaging(_ messaging: Messaging, didReceiveRegistrationToken fcmToken: String) {
}
  • 在后台状态下接收通知时:如果您的应用程序在后台状态下收到通知,则单击该通知会将通知的内容传递给底层函数。
func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable: Any]) {
// If you are receiving a notification message while your app is in the background,
// this callback will not be fired till the user taps on the notification launching the application.

}

  • 当接收应用程序处于前台状态时:如果您的应用程序在前台状态时收到通知,则单击该通知会将通知的内容传递给底层函数。
- (void)userNotificationCenter:(UNUserNotificationCenter *)center
willPresentNotification:(UNNotification *)notification
withCompletionHandler:(void (^)(UNNotificationPresentationOptions))completionHandler {

}

问。尽管一些教程(没有解释原因)告诉我将其关闭,但我还是启用了 Swizzling:A. 需要使用方法 Swizzling 将 fcm token 映射到 apns token 。如果您已关闭方法调配,则需要显式地将 fcm token 映射到 apns token ,如以下代码

  Messaging.messaging().apnsToken = deviceToken

问。我们可以得到一个简单的矩阵,例如:AppState |关闭 |背景|前景|:对于任何应用程序状态,回调函数都已存在于 Appdelegate 中。

关于ios - Firebase FCM 关于 IOS 10 的说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56243696/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com