在本机应用程序中启用/禁用 Firebase 推送通知

qua*_*zar 5 android push-notification ios firebase react-native

我有一个带有设置屏幕的 React 应用程序,可以禁用所有类型的通知。如何实现这一点在react native 文档中并不完全清楚。我可以在他注册时请求用户许可,但如何从设置屏幕禁用此权限,以便他不会收到任何通知,但用户可以在将来再次启用它们。

我可以使用主题来做到这一点,但这非常有限。我想使用来自 firebase 控制台的受众进行定位。任何帮助表示赞赏。

Im *_*man 7

你可以做这样的事情。您需要检查平台并分别进行配置。

对于 Android 要检查通知状态,您需要react-native-permissions

import {checkNotifications} from 'react-native-permissions';

根据情况,notification您可以启用和禁用该按钮。

async checkNotificationStatus(){
    if(Platform.OS === 'ios'){
        const authStatus = await messaging().hasPermission();
        if(authStatus === messaging.AuthorizationStatus.AUTHORIZED) {
            this.setState({
                notification: true
            })
        }else{
            this.setState({
                notification: false
            })
        }
    }else{
        checkNotifications().then(({status}) => {
            if(status === 'granted'){
                this.setState({
                    notification: true
                })
            }else{
                this.setState({
                    notification: false
                })
            }
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

单击按钮时启用和禁用。您只需将用户导航到系统设置即可

   async toggleNotification(){
        if(Platform.OS === 'ios'){
            const authStatus = await messaging().hasPermission();
            if (authStatus === messaging.AuthorizationStatus.NOT_DETERMINED) {
                const authorizationStatus = await messaging().requestPermission();
                if (authorizationStatus === messaging.AuthorizationStatus.AUTHORIZED) {
                    this.setState({
                        notification: true
                    })
                }
            } else{
                Linking.openURL('app-settings://')
            }
        }else{
            Linking.openSettings();
        }
    }
Run Code Online (Sandbox Code Playgroud)