在应用程序请求位置权限之前在本机反应中创建弹出警报的问题

Posted

技术标签:

【中文标题】在应用程序请求位置权限之前在本机反应中创建弹出警报的问题【英文标题】:Problem creating a pop-up alert before app requests location permission in react native 【发布时间】:2021-08-02 17:13:24 【问题描述】:

在请求许可之前如何在本机反应中制作弹出/警报?

我的代码:

 const askPermission = await AsyncStorage.getItem("Permission");
      if (!askPermission)
        Alert.alert(
          "reason why..."
  
          [
            
              text: "accept",
              onPress: () => try 
                 AsyncStorage.setItem("Permission", 'true');
                this.requestLocationPermission()
               catch (error) 
                console.log("Something went wrong", error);
              
            ,
           
            //  text: "OK", onPress: () => console.log("OK Pressed") 
          ]
        );
        
      
..
  async  requestLocationPermission()
 try 
      const granted = await Permissionsandroid.request(
        PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION,
        
          'title': 'location',
          'message': '....'
        
      )
      if (granted === PermissionsAndroid.RESULTS.GRANTED) 
        console.log("You can use the location")
        // alert("You can use the location");
       else 
        console.log("location permission denied")
        // alert("Location permission denied");
      
     catch (err) 
      console.warn(err)
    
  

我想在应用位置请求许可之前弹出一个窗口。 但是当我这样做时,权限就在警报之上/之后。 所以我什至尝试使用 asyncstorage 只发出一次警报,但警报仍然落后于权限请求。

如果我不弹出窗口,google-play 不让我发布。

对不起我的英语我希望我描述得很好

【问题讨论】:

这甚至可以用于反应原生吗??? 但是显示 requestPermissions 触发的原生弹窗还不够吗? 不适用于谷歌:(可能是因为我也使用后台位置。他们发给我:(他们回答的屏幕截图):ibb.co/xfD0zw8 【参考方案1】:

我现在做的绷带解决方案,它似乎有效: 我创建了一个导航堆栈,像以前一样将权限标志放在 asyncstorage 中。 发出警报或会做一些其他模式/更好的用户界面。 如果接受或在存储中找到,则导航到地图屏幕。

如果有更好的解决方案,想知道

【讨论】:

以上是关于在应用程序请求位置权限之前在本机反应中创建弹出警报的问题的主要内容,如果未能解决你的问题,请参考以下文章

反应本机位置权限对话框在Android中不显示

UIControl 在 ios ipad 应用程序中创建弹出窗口

在异常情况下发出警报

您将如何在 Android 中创建弹出视图,例如 Facebook 评论?

检查权限总是返回“拒绝”。反应原生

Appium - 弹出警报消息没有被解雇