无法在 ios 中接收来自 react-native-firebase 的通知消息

Posted

技术标签:

【中文标题】无法在 ios 中接收来自 react-native-firebase 的通知消息【英文标题】:Can't receive notification message from react-native-firebase in ios 【发布时间】:2019-03-25 09:03:37 【问题描述】:

所以我在通知消息方面遇到了问题。我在 android 上成功连接了通知消息,并为 ios 提供了远程(仅限数据)消息。但无法接收通知或通知加数据消息。这是我捕获消息的代码:

const enabled = await firebase.messaging().hasPermission();
    if (enabled) 
        console.log('fcm enabled');

        const channel = new firebase.notifications.Android.Channel(
            'channelId',
            'Channel Name',
            firebase.notifications.Android.Importance.Max
        ).setDescription('A natural description of the channel');
        firebase.notifications().android.createChannel(channel);
        this.unsubscribeFromNotificationListener = firebase.notifications().onNotification((notification) => 
            console.log(notification);
            if (Platform.OS === 'android') 
                const localNotification = new firebase.notifications.Notification(
                    sound: 'default',
                    show_in_foreground: true,
                )
                    .setNotificationId(notification.notificationId)
                    .setTitle(notification.title)
                    .setSubtitle(notification.subtitle)
                    .setBody(notification.body)
                    .setData(notification.data)
                    .android.setChannelId('channelId')
                    .android.setColor('#000000')
                    .android.setSmallIcon(notification.android.smallIcon.icon)
                    .android.setPriority(firebase.notifications.Android.Priority.High);

                firebase.notifications()
                    .displayNotification(localNotification)
                    .catch(err => console.error(err));

             else if (Platform.OS === 'ios') 
                console.log(notification);
                const localNotification = new firebase.notifications.Notification()
                    .setNotificationId(notification.notificationId)
                    .setTitle(notification.title)
                    .setSubtitle(notification.subtitle)
                    .setBody(notification.body)
                    .setData(notification.data)
                    .ios.setBadge(notification.ios.badge);

                firebase.notifications()
                    .displayNotification(localNotification)
                    .catch(err => console.error(err));

            
        );
     else 
        console.log('fcm not enabled');
    

【问题讨论】:

您好像错过了请求通知权限。 不,我只是没有包含那段代码。我会添加它。 @user300779 您是否收到来自控制台的通知? 不,我只能接收带有 onMessage 的纯数据消息,但不能接收通知消息。 mobikul.com/send-push-notification-via-firebase-ios-postman @user300779 试试这个链接可能对你有帮助 【参考方案1】:

我的问题出在info.plist 中的FirebaseAppDelegateProxyEnabled 标志中。它被设置为NO 这个标志允许从 APNs 向 FCM 发送消息。这就是为什么我能够通过 APNs 令牌而不是 FCM 令牌发送接收推送通知。将此标志设置为 YES 解决了我的问题。

【讨论】:

【参考方案2】:

我认为您可能错过了配置 IOS 推送通知的详细步骤,您可以查看此博客,其中解释了我们如何在 IOS 和 android 中配置 FCM

https://medium.com/@anum.amin/react-native-integrating-push-notifications-using-fcm-349fff071591

【讨论】:

我正在关注您的博客并有一个问题:我必须在哪里添加 UserNotifications.framework 和 libRNFirebase.a?进入 RNFirebase.xcodeproj? 不,你需要在你的app文件夹(父文件夹)下的libary文件夹中添加那个,你可以看到当你在Xcode中打开ios文件时,你可以按照步骤 - Go构建阶段。单击“Link Binary With Libraries”下的“+”以添加新库。 我仔细检查了一切是否正确。您的代码仅适用于纯数据消息,仍然无法接收通知或通知 + 数据消息。问题是 - 我需要为 ios 实现一些后台通知和仅数据消息仅在前台工作,但在后台什么也不做。

以上是关于无法在 ios 中接收来自 react-native-firebase 的通知消息的主要内容,如果未能解决你的问题,请参考以下文章

Socket编程,为啥客户端无法接收来自服务器的数据?

无法定期在 IOS 中进行后台 API 调用以推送应用程序中从 BLE 设备接收的数据

在 iOS 9.2 上无法接收 FCM 主题消息

Firebase Crashlytics iOS:即使脚本似乎正在运行,也无法接收事件

无法在 React.js 中接收来自 Firebase 的消息

无法在 Swift 5 的 Mesibo 聊天集成中接收来自服务器的消息