エキスパートの皆様、こんにちは。
iOSアプリにて位置情報を取得するコンポーネントを開発中ですが、
許可を求めるポップアップが表示されません。
原因と対処方法についてご教授いただければ幸いです。
■状況
・検証環境:iOSのtestflightアプリ
・使用言語:react native(厳密にはreact native web)
・位置情報取得のための使用ライブラリ:@react-native-community/geolocation "2.0.2"
・動作:設定から許可を与えてやると位置情報を取得してくれる(=> ライブラリのインストールはうまくいっている)
■info.plist
infoplist
1・・・ 2<key>NSCameraUsageDescription</key> 3<string>testing me.</string> 4<key>NSLocationAlwaysUsageDescription</key> 5<string>testing me.</string> 6<key>NSLocationWhenInUseUsageDescription</key> 7<string>testing me.</string> 8<key>NSPhotoLibraryAddUsageDescription</key> 9<string>We need to to access your photos to allow you to save a photo you take.</string> 10<key>NSPhotoLibraryUsageDescription</key> 11<string>testing me.</string> 12・・・
■index.js
ReactNative
1import React, { Component } from 'react' 2import { Text, View, StyleSheet, PermissionsAndroid, Platform, TouchableOpacity } from 'react-native' 3import Geolocation from '@react-native-community/geolocation'; 4 5class Geoprivate extends Component { 6 constructor() { 7 super() 8 this.state = { 9 latitude: "", 10 longtitude: "", 11 errMessage: "" 12 } 13 } 14 15 extract(position){ 16 let coords = position.coords 17 let lat = coords.latitude 18 let lng = coords.longitude 19 this.setState({ latitude: lat, longitude: lng }) 20 } 21 22・・・ 23・・・ 24 25 updateResult() { 26 27 if (Platform.OS === "android") { 28 this.androidPermission() 29 } 30 31 let is_native = typeof document === 'undefined'; 32 if (!is_native) { 33 ・・・・・・ 34 } 35 } else { 36 Geolocation.getCurrentPosition( 37 position => this.setState({ latitude: position.coords.latitude, longitude: position.coords.longitude }), 38 err => this.setState({ errMessage: err.message }), 39 { enableHighAccuracy: true, timeout: 10000, maximumAge: 10000 }, 40 ); 41 } 42 this.returnResult(is_native) 43 } 44 45 returnResult(is_native) { 46 const { 47 usage: { getAction } 48 } = this.props 49 if (!is_native) { 50 ・・・ 51 } 52 if (getAction) getAction(this.state.latitude, this.state.longtitude, this.state.errMessage) 53 } 54 55 render() { 56 const { 57 button: { 58 buttonText, 59 buttonColor, 60 buttonTextColor 61 } 62 } = this.props 63 64 return ( 65 <View style={this.returnWrapperStyle(buttonColor)} > 66 <TouchableOpacity onPress={() => this.updateResult()}> 67 <Text style={this.returnTextStyle(buttonTextColor)} >{buttonText.toUpperCase()}</Text> 68 </TouchableOpacity> 69 </View> 70 ) 71 } 72} 73 74export default Geoprivate
あなたの回答
tips
プレビュー