如何判断用户何时在 React-Native 中回答了 iOS 通知权限请求

Posted

技术标签:

【中文标题】如何判断用户何时在 React-Native 中回答了 iOS 通知权限请求【英文标题】:How to tell when use has answered iOS Notification Permissions request in React-Native 【发布时间】:2018-11-14 22:01:32 【问题描述】:

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

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

    进入设置页面,手动修改权限。

这是我现在的流程:

检查权限:如果有权限,请移至下一个屏幕。 如果他们不这样做,请显示一条警报,说明为什么通知对我们的应用很重要。如果他们点击确定,它会显示真正的通知屏幕,如果不是,它只是等待稍后询问。

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

有没有办法知道用户是否对原始权限框说是或否?有没有办法知道他们什么时候回答?

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

有什么方法可以检查他们是否已经收到了权限请求以及他们是否说是或否?

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

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:'),
    ]
  )

【问题讨论】:

你提供给requestAuthorizationWithOptions的完成处理程序在他们响应对话框后被调用 好的,我刚刚看到你已经标记了 react-native,所以过程会略有不同,但是当用户响应对话框时必须有一个等效的回调。编辑您的问题以显示您的代码 您能否详细说明您是使用具有权限处理功能的 3rd 方库(Exporeact-native-permissions 等)还是您使用 PushNotificationsIOS? 我已更新以显示我的代码。我正在使用一个库和内置的 PushNotificationsIOS。 【参考方案1】:

听取用户的决定。

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

信用 - jose920405

【讨论】:

以上是关于如何判断用户何时在 React-Native 中回答了 iOS 通知权限请求的主要内容,如果未能解决你的问题,请参考以下文章

如何判断 FB.init() 何时完成?如何判断用户何时未连接应用程序启动?

您如何判断用户何时滚动到 LazyVGrid 的底部?

如何检测用户是不是在 UIScrollView 中回滚了一个视图?

OSX 如何判断用户何时插入/拔出带有内置麦克风的耳机

Socket.io 如何判断某人何时离开

如何判断片段在 N​​avigationDrawer 中何时不可见