通知权限被拒绝 [错误:HostObject::get(propName:RNFBMessagingModule) 中出现异常:java.lang.NullPointerException:Firebase 消息传递组件不存在]
我使用了不同的方法,但仍然存在问题。在代码中我们使用了这个包
@react-native-firebase/messaging
请考虑通过以下检查点。
要允许 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 --- /\
}
}
在 Firebase 控制台上,添加新的 iOS 应用程序并输入您的 项目详细信息。 “iOS 包 ID”必须与您的本地项目匹配 捆绑包 ID。捆绑包 ID 可以在“常规”选项卡中找到 使用 Xcode 打开项目。
如果以上全部检查完毕,则寻找核心原因
在Android API级别32及以下,您不需要请求用户 允许。 Android设备上仍然可以调用该方法; 但是,并且总是会成功解决。对于 API 级别 33+ 的您 将需要使用内置的手动请求权限 react-native PermissionsAndroid API 或相关模块,例如 反应本机权限
import {PermissionsAndroid} from 'react-native';
PermissionsAndroid.request(PermissionsAndroid.PERMISSIONS.POST_NOTIFICATIONS);
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 权限文档。