React Native Firebase无法使用@react-native-firebase/iid 如何获取设备推送令牌
问题原因
React Native Firebase v12及以上版本已正式废弃并移除@react-native-firebase/iid包,原IID模块的设备令牌获取能力已迁移至@react-native-firebase/messaging模块。
解决方案
- 调整依赖
移除废弃的IID包,安装和你项目现有其他Firebase依赖版本完全一致的Messaging模块:
# npm操作 npm uninstall @react-native-firebase/iid npm install @react-native-firebase/messaging@<你的项目现有Firebase包版本号> # yarn操作 yarn remove @react-native-firebase/iid yarn add @react-native-firebase/messaging@<你的项目现有Firebase包版本号>
- 替换业务代码
将原IID的令牌获取逻辑替换为Messaging模块的对应逻辑,iOS端需先申请推送权限才能正常获取令牌:
// 替换原有iid导入语句 import messaging from '@react-native-firebase/messaging'; import { Platform } from 'react-native'; // 获取设备令牌逻辑 const fetchPushToken = async () => { // iOS端必须先申请推送权限 if (Platform.OS === 'ios') { const permissionStatus = await messaging().requestPermission(); const hasPermission = permissionStatus === messaging.AuthorizationStatus.AUTHORIZED || permissionStatus === messaging.AuthorizationStatus.PROVISIONAL; if (!hasPermission) { return null; } } // 获取设备推送令牌 const deviceToken = await messaging().getToken(); return deviceToken; }
补充说明
新接口返回的令牌和原有IID接口返回的令牌完全兼容,原有的向指定设备下发推送的逻辑无需任何修改。
内容的提问来源于stack exchange,提问作者Arnaud Fouchet
相关产品推荐
相关产品推荐

