簡體   English   中英

如何在 React Native / Expo 中請求權限?

[英]How to request permissions in React Native / Expo?

我正在嘗試請求用戶的位置。 我嘗試編寫異步 function 來告訴我我的請求是否已處理,但它被忽略了。 我收到“位置請求”提示,但我相信它實際上是 Expo 應用程序,而不是我的 function。

下面是我的一些代碼:

import React, { useState, useEffect, Component }from "react";

import { Permissions , Request } from 'expo-permissions'

//這是我寫的async function 提示用戶給權限

async function getLocationAsync(){
  const { status, permissions } = await Permissions.askAsync( Permissions.LOCATION);
if (status === 'granted'){
console.log('It worked!')
} 
else {
  throw new Error('Location permission not granted');
  }
}

//這會記錄終端並讓我知道用戶的當前位置已被隔離(掛載)。 當應用不再需要它們的位置時,它會卸載以防止 memory 泄漏。

const Screen = ({navigation})=> { 
    const [user_latitude, setUserLatitude] = useState(0)
    const [user_longitude, setUserLongitude] = useState(0)
    const [position_error, setPositionError] = useState(null)


useFocusEffect( 
      React.useCallback(()=> {
        
      let isActive = true;

      const fetchGeoPosition = () => {
        navigator.geolocation.getCurrentPosition(
        position => { 
          if (isActive){

          setUserLatitude(position.coords.latitude);
          setUserLongitude(position.coords.longitude);
          setPositionError(null);


          console.log('Location Accessed')

          
        } 
        setIsLoading(false)

      }, 

      error => isActive && setPositionError(error.message),
      {enableHighAccuracy: true, timeout: 0, maximumAge: 1000} 
      ); 
    }

    fetchGeoPosition()

      return () =>{
        isActive = false
        console.log('Location Severed')
          }
        }, 
      [],
       ),
    )
    
 

檢查此庫以獲取 react-native 的權限

這是https://www.npmjs.com/package/react-native-permissions

對於 Android 僅在 react-native 中存在默認 Package。 (權限安卓)

https://reactnative.dev/docs/permissionsandroid

同時更新您的清單文件。 表示應用程序將使用需要用戶權限的外部資源。

https://developer.android.com/guide/topics/manifest/uses-permission-element

對於 iOS 更新 info.plist 文件

https://www.iosdev.recipes/info-plist/permissions/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM