React 原生 Firebase 通知提醒在某些设备中未显示



嗨,我正在使用 React 原生 Firebase 进行通知,我成功地集成了它,并且两个平台的通知都来了,但对于 Android 来说,当应用程序处于前台或后台时,通知不会出现。我阅读了有关此的所有问题,但没有任何线索。

应用环境:

  • "反应": "16.3.1",
  • "反应原生": "0.55.3",
  • "React-native-firebase": "4.2.0",
  • 控制台中用于发送消息的 Firebase 云消息选项卡 - 也尝试使用高级选项

因此,当应用程序处于前台时,应用程序需要处理通知,这就是我的做法:

componentDidMount() {
this.checkFirebase();
}
registerFbCloudMessagingListener = () => {
firebase.notifications().onNotification(notification => {
if (Platform.OS === "android") {
notification.android.setChannelId("forgroundnotification");
}
firebase.notifications().displayNotification(notification);
});
};
async checkFirebase() {
const enabled = await firebase.messaging().hasPermission();
if (enabled) {
// user has permissions
this.registerFbCloudMessagingListener();
} else {
// user doesn't have permission
this.requestFbPermission();
}
}
async requestFbPermission() {
try {
let permission = await firebase.messaging().requestPermission();
if (permission) {
this.checkFirebase();
}
// User has authorised
} catch (error) {
// User has rejected permissions
}
}

开始我使用的是mi设备,因为它仅在应用程序托盘中显示通知,然后我签入settings > my_app > notifications > show floating notificationturned on然后抬头开始进入该设备,但后来我尝试使用One Plus 设备,因为它没有显示。

我检查了所有这些问题

  • https://github.com/invertase/react-native-firebase/issues/500
  • https://github.com/invertase/react-native-firebase/issues/357
  • https://github.com/invertase/react-native-firebase/issues/595

在奥利奥,我认为它没有显示。 因为mi有机器人N。 请帮忙!!提前感谢。

这是我是如何破解它的。

首先,来自Firebase控制台的推送通知不会在Android上显示通知。这个东西我是从不和谐频道得到的。在那里我问过这个问题,有人建议使用 firebase API 设置自己的服务器,例如从后端服务器触发通知,然后它开始工作。

此外,您必须设置频道并在 android 上订阅该频道才能使其正常工作。

这是我更新的代码。

请注意,此代码基于

"反应原生火力基地":"4.2.0">

"反应":"16.3.1">

"反应原生":"0.55.3">

在最新版本和代码中,有很多方法可能会被更改,我给出的代码仅供参考。

在那个时间我确实遵循了以下步骤:

async checkFirebase() {
const enabled = await firebase.messaging().hasPermission();
if (enabled) {
// user has permissions
this.registerFbCloudMessagingListener();
} else {
// user doesn't have permission
this.requestFbPermission();
}
}
async requestFbPermission() {
try {
let permission = await firebase.messaging().requestPermission();
if (permission) {
this.checkFirebase();
}
// User has authorised
} catch (error) {
// User has rejected permissions
}
}
const channelConfig = {
channelId: "channelId",
channelName: "Channel Name"
};
  1. 订阅主题
  2. 创建一个频道并订阅它。
  3. 检查权限,如果没有,请请求一个。
componentDidMount() {
firebase.messaging().subscribeToTopic("test");
const channel = new firebase.notifications.Android.Channel(
channelConfig.channelId,
channelConfig.channelName,
firebase.notifications.Android.Importance.Max
).setDescription("A natural description of the channel");
firebase.notifications().android.createChannel(channel);
this.checkFirebase();
}

相关内容

  • 没有找到相关文章

最新更新