質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
React Native

React Nativeは、ネイティブモバイルアプリ(iOS/Android)を作成できるJavaScriptフレームワークです。Reactと同じ設計のため、宣言的なコンポーネントでリッチなUIを開発することが可能です。

Geolocation

Geolocation(ジオロケーション)は、携帯電話やインターネットに接続したコンピューターターミナルなど、オブジェクトの現実世界での地理的位置の情報を扱う技術であり、位置評価の実施や、実際に評価された位置を示す場合もあります。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Q&A

0回答

645閲覧

iOSアプリで位置情報の許可を求めるポップアップが出ない

shunki1023

総合スコア22

React Native

React Nativeは、ネイティブモバイルアプリ(iOS/Android)を作成できるJavaScriptフレームワークです。Reactと同じ設計のため、宣言的なコンポーネントでリッチなUIを開発することが可能です。

Geolocation

Geolocation(ジオロケーション)は、携帯電話やインターネットに接続したコンピューターターミナルなど、オブジェクトの現実世界での地理的位置の情報を扱う技術であり、位置評価の実施や、実際に評価された位置を示す場合もあります。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

0グッド

0クリップ

投稿2021/09/06 02:16

編集2021/09/07 11:50

エキスパートの皆様、こんにちは。

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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問