如何分辨何时使用了React-Native中的iOS通知权限请求

时间:2018-11-14 22:01:33

标签: ios react-native

在iOS中,为了允许推送通知,用户必须执行以下2个选项之一。

  1. 回答原始提示,要求获得通知权限。如果他们不这样做,则无法再次提出权限请求,因此必须将他们重定向到设置页面。

  2. 转到设置页面并手动更改权限。

这是我的流程:

检查权限:如果拥有,请移至下一个屏幕。 如果不是,请显示警报,说明为什么通知对我们的应用很重要。如果他们单击“确定”,它将显示真实的通知屏幕,否则,它会等待稍后询问。

如果用户已经看到了通知请求屏幕,我想显示一个对话框,要求他们进行允许通知的设置。

有没有办法知道用户对原始权限框是是还是否?有办法知道他们何时回答吗?

我现在检查的方式不会等待用户单击原始对话框中的选项,因此它不会等待检查权限并找到与以前完全相同的权限。 / p>

是否有任何方法可以检查他们是否已经获得许可请求,以及他们是否同意?

这是我正在使用的代码: (仅相关进口)

import {PushNotificationIOS} from 'react-native
import PushNotification 'react-native-push-notification'

const requestPermissionsIOS = navigateForward => {
  PushNotification.requestPermissions().then( ({alert}) => {
    if (!alert) {
      settingsAlertIOS(navigateForward)
    } else {
        configurePushNotification()
        scheduleNotifications()
        navigateForward()
      }
    }).catch( err => {
      settingsAlertIOS(navigateForward)
    })
}  

const configurePushNotification = () => {
  PushNotification.configure({
    onRegister: (token) => {
    },
    onNotification: (notification) => {
      onNotification: notification => handleNotification(notification)
    },
    permissions: {
      alert: true,
      badge: true,
      sound: true
    },
    popInitialNotification: true,
    requestPermissions: false,
  });
}


const settingsAlertIOS = (navigateForward) => {
  Alert.alert(
    'Go to settings page?',
    'In order to receive important notifications, please enable them in the settings page \(leaves app\)',
    [
      {text: 'Cancel', onPress: () => {Mixpanel.track('Decline change notifications from settings alert'); scheduleNotifications(); navigateForward()}},
      {text: 'Settings', onPress: () => {configurePushNotification(); scheduleNotifications(); navigateForward(); Linking.openURL('app-settings:')}},
    ]
  )
}

1 个答案:

答案 0 :(得分:1)

倾听用户的决定。

PushNotification.requestPermissions().then((response: any) => {
  if (response && response.alert !== 0) {
    // Allow
    return; 
  }
  // Decline
});

信用-jose920405