[英]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()
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标记映射到apns标记的必要条件。 如果您已关闭方法调配,则需要将fcm标记显式映射到apns标记,如下面的代码所示
Messaging.messaging().apnsToken = deviceToken
问:我们可以得到一个简单的矩阵:AppState | 关闭| 背景| foreground |:对于任何应用程序状态,回调函数已经存在于Appdelegate中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.