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

Capacitor 4项目Android端接收FCM推送后崩溃求助

问题解决:Capacitor 4 Android接收FCM推送崩溃

核心问题分析

从错误日志可明确,崩溃根源是系统无法找到com.myproject.mobile.java.MyFirebaseMessagingService类,且日志中出现了不匹配的包名com.rovespier.mobile,说明存在类配置错误或旧项目遗留的配置冲突。

解决方案

1. 移除AndroidManifest.xml中无效的服务注册

打开android/app/src/main/AndroidManifest.xml,搜索是否存在以下类似配置:

<service
    android:name="com.myproject.mobile.java.MyFirebaseMessagingService"
    android:exported="false">
    <intent-filter>
        <action android:name="com.google.firebase.MESSAGING_EVENT" />
    </intent-filter>
</service>

若存在则直接删除。你使用的@capacitor-community/fcm插件已内置FCM消息处理服务,无需手动注册自定义服务,重复注册会导致类查找失败。

2. 修正包名不一致问题

错误日志中同时出现com.myproject.mobile和com.rovespier.mobile两个包名,检查以下位置统一包名:

  • AndroidManifest.xml的package属性
  • MainActivity的包声明
  • 所有自定义类的包路径

3. 清理Cordova遗留配置

由于项目从Cordova迁移而来,检查Android项目中是否存在旧FCM相关文件或配置:

  • 删除java目录下不存在的类文件(比如未创建MyFirebaseMessagingService.java就不要保留对应配置)
  • 移除build.gradle中冗余的FCM依赖(插件会自动管理依赖)

4. 重新同步插件并重建项目

执行以下命令确保插件配置正确:

npm install @capacitor-community/fcm
npx cap sync android

然后在Android Studio中执行:

  • Build > Clean Project
  • Build > Rebuild Project

5. 可选:自定义消息处理(非必须)

若确实需要自定义FCM消息逻辑,需正确创建MyFirebaseMessagingService类:
在android/app/src/main/java/com/myproject/mobile/java/目录下创建该类,代码示例:

package com.myproject.mobile.java;

import com.google.firebase.messaging.FirebaseMessagingService;
import com.google.firebase.messaging.RemoteMessage;

public class MyFirebaseMessagingService extends FirebaseMessagingService {
    @Override
    public void onMessageReceived(RemoteMessage remoteMessage) {
        // 自定义消息处理逻辑
        super.onMessageReceived(remoteMessage);
    }
}

同时确保AndroidManifest.xml中的服务注册路径与类路径完全一致。

代码优化建议(非崩溃相关)

你的registerFCM方法中,Android和iOS的token获取逻辑可统一使用@capacitor-community/fcm的getToken方法,无需分开处理:

// 替换原平台判断逻辑
await PushNotifications.register();
const { token } = await FCM.getToken();
this.submitFCM(token);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 03:15:39