如何让用户选中一个框以授予权限,而不是用户在 React-Native 中的警报上单击确定?

Posted

技术标签:

【中文标题】如何让用户选中一个框以授予权限,而不是用户在 React-Native 中的警报上单击确定?【英文标题】:How do I have a user check a box to grant permissions instead of the user clicking okay on an Alert in React-Native? 【发布时间】:2019-03-11 08:47:02 【问题描述】:

ios 版本的应用需要两种不同的权限:麦克风和 BLE。目前,正在根据需要授予权限。但是,我想创建一个页面,允许用户单击复选框,以便他们在首次启动应用程序时授予权限。

通过包含以下代码的方法请求麦克风访问权限:

OVBluetoothManager.startDetectingNoise(NOISE_DETECT_INTERVAL);

其中 NOISE_DETECT_INTERVAL 为 3000。

通过包含以下代码的方法请求BLE:

OVBluetoothManager.attemptToTriggerLEPairing();

这是 OVBluetoothManager.m 文件中的两个方法:

RCT_EXPORT_METHOD(attemptToTriggerLEPairing)

    [[someManager sharedInstance] getLED];
    [[someManager sharedInstance] getBattery];


RCT_EXPORT_METHOD(startDetectingNoise:(NSInteger)timeInterval)

    dispatch_async(dispatch_get_main_queue(), ^
        [self.noiseDetector startDetectingNoiseWithTimeIntervalInMs:timeInterval];
    );

在这两种情况下,警报都会提示用户授予权限。假设用户授予权限,一切照常进行。

在这个post 中建议使用以下代码:

Permissions.request('photo').then(response => 
  if (response === 'authorized') 
    iPhotoPermission = true;
  
 Permissions.request('contact').then(response => 
  if (response === 'authorized') 
    iPhotoPermission = true;
  
);
);

可以一次授予多个权限。不使用 react-native-permissions 是否可以做到这一点?

【问题讨论】:

在 iOS 中,您必须为您请求的每个权限显示警报。这与您使用的依赖关系无关,它与 iOS 本身有关。当您在 iOS 上的本机代码中执行权限请求时,它会触发警报。 【参考方案1】:

试试这个库的警报复选框:

https://www.npmjs.com/package/react-native-awesome-alert

【讨论】:

以上是关于如何让用户选中一个框以授予权限,而不是用户在 React-Native 中的警报上单击确定?的主要内容,如果未能解决你的问题,请参考以下文章

ReactNative:如何检查用户是不是已授予 gps 权限

如何知道用户之前是不是已经授予 Facebook SDK 权限

如何检查用户是不是已在 React Native Android 中授予相机权限?

如何检查用户是不是已授予我的 PHP 应用程序的特定权限集?

如何让谷歌地图再次请求位置权限?

授予用户权限以仅查看 MySQL 视图而不查看其他内容