简体   繁体   中英

Open Settings App from another App in iOS - React Native

I'm going through the docs in React Native and can only find navigating to external links from the app I am in.

I want to be able to navigate to the Settings app (more specifically to the privacy > location services page) but, can not seem to find the necessary information on it. There is the native iOS way of doing it which I am trying to replicate through React Native.

Is this possible?

I have tried the following to detect if there is a Settings URL. The console logs that the Settings url works however, it does not navigate to that page.

Update: thanks to @zvona I am now navigating to the settings page but not sure how to get to a specific deep link.

Linking.canOpenURL('app-settings:').then(supported => {
            
    console.log(`Settings url works`)
    Linking.openURL('app-settings:'
}).catch(error => {
    console.log(`An error has occured: ${error}`)
})

You can access settings of the application with: Linking.openURL('app-settings:');

But I don't know (yet) how to open a specific deep-link.

I successfully opened the settings by the code below, hope it's helpful :)

Linking.canOpenURL('app-settings:').then(supported => {
  if (!supported) {
    console.log('Can\'t handle settings url');
  } else {
    return Linking.openURL('app-settings:');
  }
}).catch(err => console.error('An error occurred', err));

Reference: https://facebook.github.io/react-native//docs/linking.html

Since React Native version 0.59 this should be possible using openSettings(); . This is described in the React Native Linking documentation . Although it did not work for me. When I tried quickly I saw a _reactNative.Linking.openSettings is not a function error message.

Linking.openSettings();

You can deep-link referencing the settings's index like so:

    Linking.openURL('app-settings:{index}')

For example Linking.openURL('app-settings:{3}') would open the Bluetooth settings.

Linking.openURL('app-settings:1');

Adding an answer that worked for me and is easy to apply.

openSettings function in @react-native-community/react-native-permissions works for both iOS and Android.

Calling openSettings function will direct the user to the settings page of your app.

import { openSettings } from 'react-native-permissions';
openSettings();

You can import Linking from 'react-native' and then use Linking.openSettings() to trigger the call. This link explains it very concisely:

https://til.hashrocket.com/posts/eyegh79kqs-how-to-open-the-settings-app-in-reactnative-060

You can use the most easiest way to open the app setting from react-native. just, import { Linking } from 'react-native'; and user below line anywhere you want open the app setting. Linking.openSettings();

Old question, but this didn't work for me on Android and I found something that did. Hope this helps anyone looking for the same. :)

https://github.com/lunarmayor/react-native-open-settings I don't have the ability to test it for iOS though.

Opens the platform specific settings for the given application.

For example: to navigate under Settings/Bluetooth you have to use Linking.openURL('App-Prefs:Bluetooth');

For iOS 14 and ReactNative 16.13

You can handle your case using Linking from react-native. In my case, I accessed the touch id settings on IOS using:-

Linking.openURL('App-Prefs:PASSCODE');

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM