前提条件
- React-Nativeの環境を構築済み
- エミュレーターをIOSとAndroid両方立ち上げられる
実装方法
わかりやすいようにonPressした際に設定画面に遷移させます
下記ではButtonを押しても特に何も起きません
App.js
import React from 'react';
import {StyleSheet, View, Button} from 'react-native';
const App = () => {
return (
<View style={styles.container}>
<Button title="設定画面に飛ぶ" />
</View>
);
};
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
},
});
export default App;
Buttonコンポーネント押下時に設定画面に飛ぶための処理を加えます
App.js
import React from 'react';
import {StyleSheet, View, Button, Linking} from 'react-native';
// Linkingをimport
const App = () => {
return (
<View style={styles.container}>
{/* openSettings()で設定画面に遷移させる */}
<Button title="設定画面に飛ぶ" onPress={() => Linking.openSettings()} />
</View>
);
};
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
},
});
export default App;
これで設定画面に遷移するはず!
ちなみに
Linking.openURL('app-settings:');
こちらでも設定画面に遷移しますがバージョンによってはiOSでしか遷移しなかったりするので両OSで設定画面に遷移させたい場合はLinking.openSettings()を使用するのが現状良いのかなと思います。
参考
https://qiita.com/seiya-koga/items/58e7bcbfd6bb39c4407b
https://stackoverflow.com/questions/44582694/react-native-open-settings-through-linking-openurl-in-ios