You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

裸React Native中Expo Push Notification生成推送Token报错求助

解决Expo裸机工作流中Notifications.getExpoPushTokenAsync的Firebase初始化错误
  • 确认依赖安装与配置
    确保已安装必要的Firebase依赖:

    npx expo install expo-firebase-core expo-firebase-messaging
    

    同时检查平台配置:

    • Android:将google-services.json放在android/app/目录下,AndroidManifest.xml中添加通知通道的meta-data:
      <meta-data
          android:name="com.google.firebase.messaging.default_notification_channel_id"
          android:value="@string/default_notification_channel_id"/>
      
    • iOS:将GoogleService-Info.plist放在ios/[你的项目名称]/目录下
  • 确保Firebase初始化时机正确
    不要在组件挂载时直接调用getExpoPushTokenAsync,需先保证Firebase完成初始化。可以在App启动时初始化,或者在获取token前检查:

    import { FirebaseCore } from 'expo-firebase-core';
    import * as Notifications from 'expo-notifications';
    
    async function fetchPushToken() {
      // 检查Firebase是否已初始化,未初始化则先执行初始化
      if (!FirebaseCore.apps.length) {
        await FirebaseCore.initializeAppAsync();
      }
      const token = await Notifications.getExpoPushTokenAsync({});
      return token;
    }
    
  • 配置Android自定义Application类
    若上述步骤无效,尝试通过自定义Application类初始化Firebase:

    1. 创建android/app/src/main/java/com/[你的包名]/MainApplication.java,内容如下:
      import com.google.firebase.FirebaseApp;
      import android.app.Application;
      
      public class MainApplication extends Application {
        @Override
        public void onCreate() {
          super.onCreate();
          FirebaseApp.initializeApp(this);
        }
      }
      
    2. 在AndroidManifest.xml的<application>标签中指定该类:
      <application
          android:name=".MainApplication"
          <!-- 其他原有配置 -->
      >
      
  • 清理缓存并重建项目
    缓存可能导致依赖不生效,执行以下命令清理后重建:

    # 清理Expo预构建缓存
    npx expo prebuild --clean
    # Android清理缓存
    cd android && ./gradlew clean && cd ..
    # iOS清理Pod依赖
    cd ios && pod deintegrate && pod install && cd ..
    # 重新运行项目
    npx expo run:android  # 或 npx expo run:ios
    
  • 检查SDK版本兼容性
    确保expo-notifications、expo-firebase-core、expo-firebase-messaging的版本与你的Expo SDK版本匹配,避免版本冲突导致的初始化问题。

内容的提问来源于stack exchange,提问作者Ayush singh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 04:16:07