react-native-firebase - 将swift迁移到react-native的问题 - iOS推送停止工作

问题描述 投票:0回答:1

我正在将FB 5.18上的一个快速应用程序迁移到RN firebase,并且不再继续进行迁移。如果我删除并重新下载RN版本,一切正常。我已经尝试过像这样检查令牌而且我得到了两个,但它仍然无法正常工作。权限已启用,requestPermission只是一个预防措施。我也会在几分钟内对此进行50次轮询,直到一次成功。 Android上的一切工作正常。我正在使用带有FCM令牌的FCM测试消息工具进行测试。

Firebase.messaging().requestPermission()
await (Firebase.messaging() as any).ios.registerForRemoteNotifications()
const APNSToken = await (Firebase.messaging() as any).ios.getAPNSToken()
const token = Firebase.messaging().getToken()
if (APNSToken && token) sendToServer(token)

项目文件

iOS

ios/Podfile:
  • [x]我正在使用Pods和我的Podfile看起来像:
  pod 'Firebase/Core', '~> 5.18.0'
  pod 'Firebase/Database', '~> 5.18.0'
  pod 'Firebase/Messaging', '~> 5.18.0'

AppDelegate.m:
#import <Firebase.h>
#import "RNFirebaseNotifications.h"
#import "RNFirebaseMessaging.h"

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
  [FIRApp configure];
  [RNFirebaseNotifications configure];
  ...
}
- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification {
  [[RNFirebaseNotifications instance] didReceiveLocalNotification:notification];
}
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(nonnull NSDictionary *)userInfo
                                                       fetchCompletionHandler:(nonnull void (^)(UIBackgroundFetchResult))completionHandler{
  [[RNFirebaseNotifications instance] didReceiveRemoteNotification:userInfo fetchCompletionHandler:completionHandler];
}

- (void)application:(UIApplication *)application didRegisterUserNotificationSettings:(UIUserNotificationSettings *)notificationSettings {
  [[RNFirebaseMessaging instance] didRegisterUserNotificationSettings:notificationSettings];
}

环境

  • 您遇到问题的平台: [X] iOS [] Android [] iOS但尚未测试Android上的行为 [] Android但尚未测试iOS上的行为 []两者
  • 如果已知,则您遇到以下问题的平台版本: `所有版本的iOS
  • ** React Native版本: 0.57.1
  • React Native Firebase库版本: 5.2.4
  • 你正在使用的Firebase模块有问题: []身份验证 []分析 [] Cloud Firestore [X]云消息传递(FCM) [] Crashlytics []动态链接 []函数可调用 []在App Messaging中 []索引 []邀请 []实例ID [] ML Kit [X]通知 [ ] 性能监控 []实时数据库 []远程配置 []存储
  • 你在用TypeScript吗? []没有 [X]是的,版本:2.8.4
  • 你在使用Expo吗? ExpoKit? [x]不 []是的,我没有被驱逐出境 []是的,但我已经被驱逐到ExpoKit []是的,但我已经被驱逐到香草React Native 世博会版:N/A
firebase react-native push-notification migration
1个回答
0
投票

似乎react-native-firebase Firebase.messaging().getToken()不会返回最新的令牌。我的应用程序正在保存并使用旧令牌而不是更新新令牌 - 非常小的竞争条件。

只需使用Firebase.messaging.onTokenRefresh()作为真相来源,以避免迁移应用程序的问题。还要确保你得到一个有效的令牌。您可能希望使用v4 - > await Firebase.iid().deleteToken()或v5 (Firebase.messaging().deleteToken()删除此类迁移中的令牌。然后依靠onTokenRefresh向您发送一个新的发送到您的服务器。

© www.soinside.com 2019 - 2024. All rights reserved.