有没有人可以使用IOS目标> = 10的Swift 4.2阐明FCM所需的方法 简化: 1)没有直接的“数据”消息……。仅通过APNS通知/提醒信息 2)即使某些教程(没有说明原因)告诉我将其关闭,我仍将启用Swizzling
我发现IOS过时问题和FCM方面的一些文档遗漏使这种方式比需要的更加混乱。
我们能否得到一个简单的矩阵,如: AppState |关闭背景|前景|
userAction: 无(简单消息到达IOS) 撤消通知 点击通知 选择通知动作 直接打开应用-无需参与通知
在上述情况下调用的方法是: 等等...
而且,无论APNS是否发送了令牌,FCM似乎都创建了自己的令牌;因此,我需要不同的逻辑来检测用户是否已授予权限,然后服务器才能假定FCM令牌将完全起作用……我想我只是不会确定FNS令牌是否会发送到服务器,除非我还确定我有一个APNS令牌…。 ???
此外,FCM文档还明确指出,通过APNS / Apple传递了用户可见的有效负载(即警报/通知样式)。
因此,我认为我可以假设直到Apple向我发送APNS令牌后FCM消息才会到达。
但是我似乎无法从FCM委托方法中读取或检索Apple令牌。
此代码始终为apns返回一个空字符串,因此我无法确定我的应用是否处于可靠状态:
@objc func消息传递(_消息传递:Messaging,didReceiveRegistrationToken fcmToken:字符串){ print(“ Firebase注册令牌:(fcmToken)”) 让apnsTokenData = messages.apnsToken let apnsToken = apnsTokenData?.reduce(“”,{$ 0 + String(format:“%02X”,$ 1)})?? ” print(“ apnsToken:(apnsToken)”)
感谢您的澄清!
答案 0 :(得分:0)
以下是必须在具有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 |关闭背景|前景|: 对于任何应用程序状态,Appdelegate中都已经存在回调函数。