【问题标题】:react-native-firebase - Issue with migrating swift to react-native - iOS Pushes stop workingreact-native-firebase - 快速迁移到 react-native 的问题 - iOS 推送停止工作
【发布时间】:2019-08-28 17:31:48
【问题描述】:

我正在将 FB 5.18 上的 swift 应用程序迁移到 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] 我正在使用 Pod,我的 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
    • [ ] 安卓
    • [ ] iOS 但尚未在 Android 上测试行为
    • [ ] Android 但尚未测试 iOS 上的行为
    • [ ] 两者
  • 如果知道,您遇到问题的平台版本是:

    • `iOS 的所有版本
  • **React Native版本:

    • 0.57.1
  • React Native Firebase库版本:
    • 5.2.4
  • Firebase 您正在使用的模块存在问题:
    • [ ] 身份验证
    • [ ] 分析
    • [ ] 云 Firestore
    • [X] 云消息传递 (FCM)
    • [ ] Crashlytics
    • [ ] 动态链接
    • [ ] 函数可调用
    • [ ] 在应用消息中
    • [ ] 索引
    • [ ] 邀请
    • [ ] 实例 ID
    • [ ] 机器学习套件
    • [X] 通知
    • [ ] 性能监控
    • [ ] 实时数据库
    • [ ] 远程配置
    • [ ] 存储
  • 你在使用TypeScript吗?
    • [ ] 否
    • [X] 是,版本:2.8.4
  • 您是否在使用 Expo,例如ExpoKit?
    • [x] 否
    • [ ] 是的,我没有被驱逐
    • [ ] 是的,但我已经被驱逐到ExpoKit
    • [ ] 是的,但我已经退出了原版 React Native
    • 世博版:N/A

【问题讨论】:

    标签: firebase react-native push-notification migration


    【解决方案1】:

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

    只需使用Firebase.messaging.onTokenRefresh() 作为事实来源,即可避免迁移应用出现问题。还要确保你得到一个有效的令牌。您可能希望在迁移时删除您的令牌,例如使用 v4 -> await Firebase.iid().deleteToken() 或 v5 (Firebase.messaging().deleteToken()。然后依靠TokenRefresh 向您发送一个新的发送到您的服务器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-24
      • 1970-01-01
      • 2016-09-09
      • 1970-01-01
      • 2019-11-05
      • 1970-01-01
      • 2021-06-10
      • 2018-08-26
      相关资源
      最近更新 更多