web-dev-qa-db-ja.com

iPhoneの私のアプリから公式の* Settings *アプリを呼び出します

アプリのある時点で、ユーザーを公式のSettingsアプリにリダイレクトしたいと思います。可能であれば、Settingsアプリ内のNetworkセクションにも直行してください。

必要なのはSettingsアプリのURLスキームとリクエストを作成するためのフォーマットだと思います。しかし、そのような公式アプリを呼び出すことは禁止されているとは思えません。

誰でも私を助けることができますか?

45
Di Wu

悪いニュース:@Hlungと@jasongregoriが示唆したように、OSバージョン> = iOS 5.1 && <iOS 8.のiDeviceには、もう一度あります[〜#〜] no [〜#〜 ]サードパーティのアプリから組み込みの設定アプリを呼び出す公式/文書化された方法。限目。

15
Di Wu

以下のコメントに記載されているように、これはiOSバージョン5.1以降では不可能です。

IOS 5.0を使用している場合、以下が適用されます。

これは、iOS 5で 'prefs:' URLスキームを使用して可能になりました。 Webページまたはアプリから機能します。

uRLの例:

prefs:root=General
prefs:root=General&path=Network

サンプル使用法:

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=General"]]
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=General&path=Network"]]
44
mattorb

IOS 8から、これを使用してアプリ内から設定を呼び出すことができます:

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];

35
dynebuddha

IOSバージョン> 5.1でも機能しますが、XcodeのURLタイプにURLスキームを追加する必要があります。

enter image description here

その後、使用することができます

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=WIFI"]];

システムのWiFi設定を開くことができるようになりました。

他のパスはこの回答で見つけてください: iOS起動設定->制限URLスキーム

17
Slemon

他のアプリから設定アプリを呼び出すことは、iOS 8からのみ可能です。したがって、次のコードを使用してください

if([CLLocationManager locationServicesEnabled]&&
   [CLLocationManager authorizationStatus] != kCLAuthorizationStatusDenied)
{
  //...Location service is enabled
}
else
{
    if([[[UIDevice currentDevice] systemVersion] floatValue]<8.0)
    {
      UIAlertView* curr1=[[UIAlertView alloc] initWithTitle:@"This app does not have access to Location service" message:@"You can enable access in Settings->Privacy->Location->Location Services" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
      [curr1 show];
    }
    else
    {
       UIAlertView* curr2=[[UIAlertView alloc] initWithTitle:@"This app does not have access to Location service" message:@"You can enable access in Settings->Privacy->Location->Location Services" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:@"Settings", nil];
       curr2.tag=121;
       [curr2 show];
    }
}

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
   if (alertView.tag == 121 && buttonIndex == 1)
 {
  //code for opening settings app in iOS 8
   [[UIApplication sharedApplication] openURL:[NSURL  URLWithString:UIApplicationOpenSettingsURLString]];
 }
}
13

iOS 8から、次の方法でリダイレクトできます

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];

コーディングを楽しむ

5
Mohit tomar

IOS 9の設定では、これは私のために機能します。

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=Settings"]];

ただし、必ずURLタイプにURLスキームを追加してください

アプリターゲットの[情報]タブ。

IOS8 +のアドレス指定に追加する追加の回答。 8未満をサポートしている場合は、サポートされているかどうかを確認する必要があります

BOOL canGoToSettings = (UIApplicationOpenSettingsURLString != NULL);
if (canGoToSettings)
{
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];
}
0
Chris

IOS 10の場合:

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"App-Prefs:root=Settings"]];

IOS 9でも動作しています!

0
Ivan Skrobot