React Native 中不存在 Firebase 消息传递组件

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

通知权限被拒绝 [错误:HostObject::get(propName:RNFBMessagingModule) 中出现异常:java.lang.NullPointerException:Firebase 消息传递组件不存在]

我使用了不同的方法,但仍然存在问题。在代码中我们使用了这个包

@react-native-firebase/messaging 
react-native firebase-cloud-messaging
1个回答
0
投票

请考虑通过以下检查点。

使用 Android 凭据配置 Firebase

要允许 Android 上的 Firebase 使用凭据, 必须在项目上启用 google-services 插件。这需要 修改Android目录下的两个文件。

首先,将 google-services 插件添加为您的依赖项 /android/build.gradle 文件:

buildscript {
  dependencies {
    // ... other dependencies
    // NOTE: if you are on react-native 0.71 or below, you must not update
    //       the google-services plugin past version 4.3.15 as it requires gradle >= 7.3.0
    classpath 'com.google.gms:google-services:4.4.1'
    // Add me --- /\
  }
}

生成 iOS 凭证

在 Firebase 控制台上,添加新的 iOS 应用程序并输入您的 项目详细信息。 “iOS 包 ID”必须与您的本地项目匹配 捆绑包 ID。捆绑包 ID 可以在“常规”选项卡中找到 使用 Xcode 打开项目。

如果以上全部检查完毕,则寻找核心原因

Android - 请求权限

在Android API级别32及以下,您不需要请求用户 允许。 Android设备上仍然可以调用该方法; 但是,并且总是会成功解决。对于 API 级别 33+ 的您 将需要使用内置的手动请求权限 react-native PermissionsAndroid API 或相关模块,例如 反应本机权限

  import {PermissionsAndroid} from 'react-native';
  PermissionsAndroid.request(PermissionsAndroid.PERMISSIONS.POST_NOTIFICATIONS);

iOS - 请求权限

iOS 阻止包含通知(或“警报”)有效负载的消息 除非您获得明确许可,否则不会被显示 用户。

import messaging from '@react-native-firebase/messaging';

async function requestUserPermission() {
  const authStatus = await messaging().requestPermission();
  const enabled =
    authStatus === messaging.AuthorizationStatus.AUTHORIZED ||
    authStatus === messaging.AuthorizationStatus.PROVISIONAL;

  if (enabled) {
    console.log('Authorization status:', authStatus);
  }
}

iOS 的权限 API 提供了更细粒度的控制 权限以及它们在应用程序中的处理方式。学习 更多信息,请查看高级 iOS 权限文档。

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