繁体   English   中英

内部监督办公室10上的Firebase FCM澄清

[英]Firebase FCM on IOS 10 clarification

是否有人可以使用Swift 4.2来澄清所需的FCM方法,其IOS目标> = 10以简化:1)没有直接的“数据”消息.... 只通过APNS通知/提醒消息2)我正在启用Swizzling,即使一些教程(没有解释原因)告诉我关闭它

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

我们可以得到一个简单的矩阵:AppState | 关闭| 背景| 前景|

userAction:none(简单消息到达IOS)解除通知点击通知选择通知操作直接打开应用程序 - 不接受通知

在上面的场景中调用的方法是:blah ...

此外,似乎FCM创建了自己的令牌,无论APNS是否已经发送了令牌; 所以我需要不同的逻辑来检测用户是否已授予权限,然后我的服务器可以假设FCM令牌完全正常工作......我想我只是不会发送FCM令牌到服务器,直到我确定我有一个APNS令牌...。 ???

此外,FCM文档清楚地表明用户可见(即警报/通知样式)有效负载是THRU APNS / Apple提供的。

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

但我似乎无法从FCM委托方法中读取或检索Apple令牌。

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

@objc func messaging(_ messaging:Messaging,didReceiveRegistrationToken fcmToken:String){print(“Firebase注册令牌:(fcmToken)”)让apnsTokenData = messaging.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令牌
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.

}

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

}

问:我正在启用Swizzling,即使有些教程(没有解释原因)告诉我关闭它: A。方法Swizzling是将fcm标记映射到apns标记的必要条件。 如果您已关闭方法调配,则需要将fcm标记显式映射到apns标记,如下面的代码所示

  Messaging.messaging().apnsToken = deviceToken

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM