別のアプリから設定アプリを開く


180

さて、私はそれについて多くの質問があることを知っていますが、それらはすべてずっと前からのものです。

そう。Mapアプリがそれを行うため、それが可能であることを知っています。

マップアプリで、このアプリのローカリゼーションをオフにするとメッセージが送信され、OKを押すと「設定アプリ」が開きます。そして私の質問は、これはどのようにして可能ですか?自分のアプリから「設定アプリ」を開くには?

基本的に同じことをする必要があります。ユーザーがアプリの場所をオフにすると、「設定アプリ」を開くようなメッセージを表示します



1
設定アプリは、プログラムでiOS8で開くことができます(iOSの下位バージョンではできません)。
Karan Dua 14

回答:


291

Karan Duaが述べたように、これはiOS8でAppleのドキュメントUIApplicationOpenSettingsURLString参照して可能になりました

例:

Swift 4.2

UIApplication.shared.open(URL(string: UIApplication.openSettingsURLString)!)

Swift 3の場合:

UIApplication.shared.open(URL(string:UIApplicationOpenSettingsURLString)!)

Swift 2の場合:

UIApplication.sharedApplication().openURL(NSURL(string:UIApplicationOpenSettingsURLString)!)

Objective-Cの場合

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

iOS 8より前:

できません。あなたが言ったように、これは何度もカバーされており、位置情報サービスをオンにするように求めるポップアップは、アプリ自体ではなくアップルによって提供されます。そのため、設定アプリケーションを開くことができます。

関連する質問と記事を以下に示します。

openURLを使用して設定アプリを開くことは可能ですか?

プログラムで設定アプリを開く(iPhone)

ユーザーがボタンを押したときに設定アプリを開くにはどうすればよいですか?

iPhone:アプリからアプリケーション設定パネルを開く

アプリの設定でエントリをクリックしてUIPickerViewを開きます-方法

設定アプリを開きますか?

iOS:設定が間違っている


より信頼できる回答が必要な場合は、Apple Developerフォーラム< developer.apple.com/devforums >で質問するか、< developer.apple.com/bugreporter >でバグを報告してみてください—既知の問題の場合は、戻ってくるはずです「正しく動作する」または元のバグの複製として。
Vincent Gable、


2
これは、[NSURL URLWithString:UIApplicationOpenSettingsURLString]を使用してiOS 8で可能になりました
LightningStryk

1
swift 3-UIApplication.shared.openURL(URL(string:UIApplicationOpenSettingsURLString)!)
GMHSJ

1
この方法の使用には注意してください。私はそれを使用し、数か月後にAppleからの次のメッセージでアプリが拒否されました:アプリは「prefs:root =」非公開URLスキームを使用します。これはプライベートエンティティです。App Storeで非公開APIを使用することは許可されていません。これらのAPIが変更された場合、ユーザーエクスペリエンスが低下する可能性があるためです。このアプリの今後の送信で非公開APIを引き続き使用または非表示にすると、Apple Developerアカウントが終了するだけでなく、関連するすべてのアプリがApp Storeから削除される可能性があります。
Nick Kirsten

133

@Yatheeshalessさんの回答

iOS8ではプログラムで設定アプリを開くことができますが、以前のバージョンのiOSではできません。

迅速:

   UIApplication.sharedApplication().openURL(NSURL(string:UIApplicationOpenSettingsURLString)!)

スウィフト4:

if let url = NSURL(string: UIApplicationOpenSettingsURLString) as URL? {
    UIApplication.shared.openURL(url)
}

Swift 4.2(ベータ):

if let url = NSURL(string: UIApplication.openSettingsURLString) as URL? {
    UIApplication.shared.open(url, options: [:], completionHandler: nil)
}

Objective-C:

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

23
これにより、設定アプリのアプリのセクションが表示されます。ユーザーは、[設定]のメイン画面を表示するために、[戻る]を数回押す必要があります。
wjl

1
小さな修正..[[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];
パイト2014年

10
@Paito上記の行は、アプリのプライベート設定を対象としています。デバイス設定のプライバシーセクションに移動する方法はありますか?ご存知でしたらコメントください。このリダイレクトは、プライバシーセクションの位置情報設定にリダイレクトするマップアプリで見つけたので、可能です。
Pavan Kotesh 2014年

1
小さなSwift修正:UIApplication.sharedApplication()。openURL(NSURL(string:UIApplicationOpenSettingsURLString)!)
vbezhenar

1
@ PavanKotesh-はい、ただしアプリの設定にはアクセス許可が必要です。私の場合、連絡先へのアクセスが必要でした。これは上記のコードでアプリの設定に表示されます。
Tejas K

58

はい!!デバイス設定画面を起動できます。iOS9.2でテストしました

ステップ1. URLスキームを追加する必要がある

[プロジェクトの設定]-> [情報]-> [URLタイプ]-> [新しいURLスキームの追加]に移動します

ここに画像の説明を入力してください

ステップ2. @davidcannのおかげで、プログラムで設定を起動する

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs://"]];

また、適切な名前を使用するだけで、音楽、場所などのサブ画面を起動することもできます

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

Henri Normakが共有しているこのフルネームリストを参照してください


更新:

コメントに従って、誰もが私の申請提出ステータスのこの変更後に何が起こるか知りたいですか?

そう YES!! I got successful update submission and application is available on store without any complain.

確認のために、今朝ダウンロードして位置情報サービスを無効にしてから、アプリを起動し、位置情報へのアクセス許可を求めたところ、設定->位置情報サービスページ->有効->にアクセスするためのアラートポップアップが表示されましたそれでおしまい!!

![通知:アプリは拒否される可能性があります...承認されている場合でも、この方法を使用すると、将来のバージョンで拒否される可能性があります...] 4


ありがとう、iOS 6と7でも動作します。アップルのレビュープロセスでそれを取得しようとしましたか?
Flo

1
@Flo現在お知らせしているのは、ベータテストを推進しているためです。
swiftBoy 2016年

1
iOS 9.3。魅力のように働いた。設定アプリ内に「[私のアプリ名]に戻る」も表示されます。確かに、このようなことを行う他のアプリがたくさんあるので、これはサポートされています!
EricWasTaken

13
iOS 10では、新しいURLは「prefs:root = ...」ではなく、「App-Prefs:root = ...」です。
Drico、2017

1
アプリが拒否される可能性があります...承認されていても、この方法を使用すると、将来のバージョンで拒否される可能性があります...
Mihir Mehta

18

これはiOS 5.0以降で使用できます。これは機能しなくなりました。

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs://"]];

3
@MarkGranoffいいえ、技術的に文書化されていないようですが、それは単なるURLスキームなので、通常の文書化されていないAPIほど悪くはありません。最初にcanOpenURL:で確認できます。また、ここにスレッドがあります:devforums.apple.com/message/543818
davidcann '18

3
この記事に従って、設定のさまざまな領域にアクセスできます。たとえば、このURLではBluetooth設定に移動しますprefs:root=General&path=Bluetooth
progrmr

1
URL「@ "prefs:root = Brightness"」を開いていたため、プライベートAPIの使用が拒否されました。通常、文書化されていないということは、非公開を意味します。
ギヨーム

4
Appleは、これはパブリックAPIではなく、サポートされなくなったと述べています。この問題にはバグ番号11253669が登録されています。–
Don Wilson

2
私はこれがStravaアプリで機能することをちょうど見ました。Bluetoothをオフにしてから、アプリでオンにします。次に、設定アプリにアクセスするように求められ、Bluetooth設定に直接移動します。これはiOS5.1用です。彼らが使用しているスキームを見つける方法はありますか?
Ants

14

iOS 10アップデート

Appleは、メインスレッドで非同期を開くようにメソッドを変更しました。ただし、これからはアプリの設定をネイティブ設定でのみ開くことができます。

[[UIApplication sharedApplication] openURL:url options:@{} completionHandler:nil];

iOS 9アップデート

サブ設定メニューに直接移動できるようになりました。ただし、URLスキームを作成する必要があります。次の2つの方法で行うことができます。

  1. XCode-ターゲット、情報、URLスキームにあります。次に、prefsと入力します。
  2. * -Info.plistに直接追加します。以下を追加します。 <key>CFBundleURLTypes</key> <array> <dict> <key>CFBundleTypeRole</key> <string>Editor</string> <key>CFBundleURLSchemes</key> <array> <string>prefs</string> </array> </dict> </array>

次に、コード:

迅速

UIApplication.sharedApplication().openURL(NSURL(string:"prefs:root=General&path=Keyboard")!)

Objective-c

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=General&path=Keyboard"]];


1
iOS 10.xソリューションを試しましたが、うまくいきませんでした。何も起こりません。
マークピーターズ

@MarkPeters、あなたはまだ方法を理解しましたか?それは大きな助けになるでしょう。ありがとう。
Roohul Poolak 2016

いいえ、していません。それがiOSのバグなのか、Appleがこの機能を削除したのかはまだわかりません。
Mark Peters

私は、彼らはまだ拡張機能で動作すると思います。元アプリはMagic LauncherAppstoreにあります。
トライデント

4

Swift 3 / iOS 10以降では、これは次のようになります

if let url = URL(string: "App-Prefs:root=LOCATION_SERVICES") {
    UIApplication.shared.open(url, completionHandler: .none)
}

通知画面に行く方法は?if url = URL(string: "App-Prefs:root = NOTIFICATIONS_ID&path = io.artup.artup"){if #available(iOS 10.0、*){UIApplication.shared.open(url、completionHandler:.none)}の場合}しかし、iPhone 7 plusではなくiPhone 6で通知に行きましたか?
user3804063 2017

3
これにより、アプリが拒否されます。彼らはそれをプライベートAPIの使用下に置きました。
Bersaelor

この「App-Prefs:root」を使用してアプリを拒否しました
Malder

1
ここで他の人が言及したことを強調してください。この方法は使用しないでください。アプリが拒否されます。このようなアプリを繰り返し送信すると、デベロッパーアカウントが閉鎖されます。
CodeBrew、

4

スウィフト3:

guard let url = URL(string: UIApplicationOpenSettingsURLString) else {return}
if #available(iOS 10.0, *) {
  UIApplication.shared.open(url, options: [:], completionHandler: nil)
} else {
  // Fallback on earlier versions
  UIApplication.shared.openURL(url)
}

4

prefs:<area>URLを使用して設定を開き、特定の領域に移動できるようです。Appleはこれらを変更してアプリを壊す可能性があるため、最初にそれらを開くことができるかどうかを常に確認してください。

この記事から、彼らはiOS 13.1向けにそれらのいくつかをリストしました:

設定URL

iCloud

  • iCloud: prefs:root=CASTLE
  • iCloudバックアップ: prefs:root=CASTLE&path=BACKUP

無線ラジオ

  • Wi-Fi: prefs:root=WIFI
  • ブルートゥース: prefs:root=Bluetooth
  • 携帯電話: prefs:root=MOBILE_DATA_SETTINGS_ID

パーソナルホットスポット

  • パーソナルホットスポット: prefs:root=INTERNET_TETHERING
  • パーソナルホットスポット⇾家族共有: prefs:root=INTERNET_TETHERING&path=Family%20Sharing
  • パーソナルホットスポット⇾Wi-Fiパスワード: prefs:root=INTERNET_TETHERING&path=Wi-Fi%20Password

VPN

  • VPN: prefs:root=General&path=VPN

お知らせ

  • 通知: prefs:root=NOTIFICATIONS_ID
  • 通知⇾Siriの提案: prefs:root=NOTIFICATIONS_ID&path=Siri%20Suggestions

  • 音: prefs:root=Sounds
  • 着信音: prefs:root=Sounds&path=Ringtone

邪魔しないでください

  • 邪魔しないでください: prefs:root=DO_NOT_DISTURB
  • サイレントモード⇾次からの通話を許可: prefs:root=DO_NOT_DISTURB&path=Allow%20Calls%20From

上映時間

  • 上映時間: prefs:root=SCREEN_TIME
  • スクリーンタイム⇾ダウンタイム: prefs:root=SCREEN_TIME&path=DOWNTIME
  • 利用時間⇾アプリの制限: prefs:root=SCREEN_TIME&path=APP_LIMITS
  • 利用時間⇾常に許可: prefs:root=SCREEN_TIME&path=ALWAYS_ALLOWED

一般的な

  • 一般: prefs:root=General
  • 全般⇾について: prefs:root=General&path=About
  • 一般的な⇾ソフトウェアの更新: prefs:root=General&path=SOFTWARE_UPDATE_LINK
  • 一般⇾CarPlay: prefs:root=General&path=CARPLAY
  • 一般⇾バックグラウンドアプリの更新: prefs:root=General&path=AUTO_CONTENT_DOWNLOAD
  • 一般⇾マルチタスク(iPadのみ): prefs:root=General&path=MULTITASKING
  • 一般⇾日付と時刻: prefs:root=General&path=DATE_AND_TIME
  • 一般⇾キーボード: prefs:root=General&path=Keyboard
  • 一般⇾キーボード⇾キーボード: prefs:root=General&path=Keyboard/KEYBOARDS
  • 一般⇾キーボード⇾ハードウェアキーボード: prefs:root=General&path=Keyboard/Hardware%20Keyboard
  • 一般⇾キーボード⇾テキスト置換: prefs:root=General&path=Keyboard/USER_DICTIONARY
  • 一般⇾キーボード⇾片手キーボード: prefs:root=General&path=Keyboard/ReachableKeyboard
  • 一般⇾言語と地域: prefs:root=General&path=INTERNATIONAL
  • 一般的な⇾辞書: prefs:root=General&path=DICTIONARY
  • 一般的な⇾プロファイル: prefs:root=General&path=ManagedConfigurationList
  • 一般⇾リセット: prefs:root=General&path=Reset

コントロールセンター

  • コントロールセンター: prefs:root=ControlCenter
  • コントロールセンター⇾コントロールのカスタマイズ: prefs:root=ControlCenter&path=CUSTOMIZE_CONTROLS

表示

  • 表示: prefs:root=DISPLAY
  • ディスプレイ⇾自動ロック: prefs:root=DISPLAY&path=AUTOLOCK
  • 表示⇾文字サイズ: prefs:root=DISPLAY&path=TEXT_SIZE

アクセシビリティ

  • アクセシビリティ: prefs:root=ACCESSIBILITY

壁紙

  • 壁紙: prefs:root=Wallpaper

シリ

  • Siri: prefs:root=SIRI

アップルペンシル

  • Apple Pencil(iPadのみ): prefs:root=Pencil

顔ID

  • 顔ID: prefs:root=PASSCODE

緊急SOS

  • 緊急SOS: prefs:root=EMERGENCY_SOS

電池

  • 電池: prefs:root=BATTERY_USAGE
  • バッテリー⇾バッテリーの状態(iPhoneのみ): prefs:root=BATTERY_USAGE&path=BATTERY_HEALTH

プライバシー

  • プライバシー: prefs:root=Privacy
  • プライバシー⇾位置情報サービス: prefs:root=Privacy&path=LOCATION
  • プライバシー⇾連絡先: prefs:root=Privacy&path=CONTACTS
  • プライバシー⇾カレンダー: prefs:root=Privacy&path=CALENDARS
  • プライバシー⇾リマインダー: prefs:root=Privacy&path=REMINDERS
  • プライバシー⇾写真: prefs:root=Privacy&path=PHOTOS
  • プライバシー⇾マイク: prefs:root=Privacy&path=MICROPHONE
  • プライバシー⇾音声認識: prefs:root=Privacy&path=SPEECH_RECOGNITION
  • プライバシー⇾カメラ: prefs:root=Privacy&path=CAMERA
  • プライバシー⇾モーション: prefs:root=Privacy&path=MOTION\

App Store

  • App Store: prefs:root=STORE
  • App Store⇾アプリのダウンロード: prefs:root=STORE&path=App%20Downloads
  • App Store⇾ビデオの自動再生: prefs:root=STORE&path=Video%20Autoplay

財布

  • 財布: prefs:root=PASSBOOK

パスワードとアカウント

  • パスワードとアカウント: prefs:root=ACCOUNTS_AND_PASSWORDS
  • パスワードとアカウントNew新しいデータを取得: prefs:root=ACCOUNTS_AND_PASSWORDS&path=FETCH_NEW_DATA
  • パスワードとアカウント⇾アカウントを追加: prefs:root=ACCOUNTS_AND_PASSWORDS&path=ADD_ACCOUNT

郵便物

  • 郵便物: prefs:root=MAIL
  • メール⇾プレビュー: prefs:root=MAIL&path=Preview
  • メール⇾スワイプオプション: prefs:root=MAIL&path=Swipe%20Options
  • メール⇾通知: prefs:root=MAIL&path=NOTIFICATIONS
  • メール⇾ブロック: prefs:root=MAIL&path=Blocked
  • メール⇾ミュートスレッドアクション: prefs:root=MAIL&path=Muted%20Thread%20Action
  • メール⇾ブロックする送信者オプション: prefs:root=MAIL&path=Blocked%20Sender%20Options
  • メール⇾アドレスのマーク: prefs:root=MAIL&path=Mark%20Addresses
  • メール⇾見積もりレベルを上げる: prefs:root=MAIL&path=Increase%20Quote%20Level
  • メールRep返信に添付ファイルを含める: prefs:root=MAIL&path=Include%20Attachments%20with%20Replies
  • メール⇾署名: prefs:root=MAIL&path=Signature
  • メール⇾デフォルトのアカウント: prefs:root=MAIL&path=Default%20Account

連絡先

  • 連絡先: prefs:root=CONTACTS

カレンダー

  • カレンダー: prefs:root=CALENDAR
  • カレンダー⇾代替カレンダー: prefs:root=CALENDAR&path=Alternate%20Calendars
  • カレンダー⇾同期: prefs:root=CALENDAR&path=Sync
  • カレンダー⇾デフォルトのアラート時間: prefs:root=CALENDAR&path=Default%20Alert%20Times
  • カレンダー⇾デフォルトのカレンダー: prefs:root=CALENDAR&path=Default%20Calendar

ノート

  • ノート: prefs:root=NOTES
  • 注意⇾デフォルトのアカウント: prefs:root=NOTES&path=Default%20Account
  • 注意⇾パスワード: prefs:root=NOTES&path=Password
  • ノートNotesノートの並べ替え: prefs:root=NOTES&path=Sort%20Notes%20By
  • メモ⇾新しいメモの先頭: prefs:root=NOTES&path=New%20Notes%20Start%20With
  • メモ⇾チェックしたアイテムを並べ替える: prefs:root=NOTES&path=Sort%20Checked%20Items
  • 注意⇾線とグリッド: prefs:root=NOTES&path=Lines%20%26%20Grids
  • メモLockロック画面からメモにアクセス: prefs:root=NOTES&path=Access%20Notes%20from%20Lock%20Screen

リマインダー

  • 注意: prefs:root=REMINDERS
  • リマインダー⇾デフォルトのリスト: prefs:root=REMINDERS&path=DEFAULT_LIST

ボイスメモ

  • ボイスメモ: prefs:root=VOICE_MEMOS

電話

  • 電話: prefs:root=Phone

メッセージ

  • メッセージ: prefs:root=MESSAGES

FaceTime

  • FaceTime: prefs:root=FACETIME

Maps

  • マップ: prefs:root=MAPS
  • マップ⇾運転とナビゲーション: prefs:root=MAPS&path=Driving%20%26%20Navigation
  • 地図⇾乗換案内: prefs:root=MAPS&path=Transit

方位磁針

  • 方位磁針: prefs:root=COMPASS

測る

  • 測定: prefs:root=MEASURE

サファリ

  • サファリ: prefs:root=SAFARI
  • Safari⇾コンテンツブロッカー: prefs:root=SAFARI&path=Content%20Blockers
  • Safari⇾ダウンロード: prefs:root=SAFARI&path=DOWNLOADS
  • Safari⇾タブを閉じる: prefs:root=SAFARI&path=Close%20Tabs
  • Safari History履歴とデータをクリア: prefs:root=SAFARI&path=CLEAR_HISTORY_AND_DATA
  • Safari⇾ページズーム: prefs:root=SAFARI&path=Page%20Zoom
  • Safari DesktopデスクトップWebサイトのリクエスト: prefs:root=SAFARI&path=Request%20Desktop%20Website
  • Safari⇾リーダー: prefs:root=SAFARI&path=Reader
  • Safari⇾カメラ: prefs:root=SAFARI&path=Camera
  • Safari⇾マイク: prefs:root=SAFARI&path=Microphone
  • Safari⇾場所: prefs:root=SAFARI&path=Location
  • Safari⇾Advanced: prefs:root=SAFARI&path=ADVANCED

ニュース

  • ニュース: prefs:root=NEWS

健康

  • 健康: prefs:root=HEALTH

ショートカット

  • ショートカット: prefs:root=SHORTCUTS

音楽

  • 音楽: prefs:root=MUSIC
  • 音楽⇾セルラーデータ: prefs:root=MUSIC&path=com.apple.Music:CellularData
  • 音楽Storageストレージを最適化: prefs:root=MUSIC&path=com.apple.Music:OptimizeStorage
  • 音楽⇾EQ: prefs:root=MUSIC&path=com.apple.Music:EQ
  • 音楽⇾音量制限: prefs:root=MUSIC&path=com.apple.Music:VolumeLimit

テレビ

  • 設定⇾テレビ: prefs:root=TVAPP

写真

  • 写真: prefs:root=Photos

カメラ

  • カメラ: prefs:root=CAMERA
  • カメラ⇾ビデオの録画: prefs:root=CAMERA&path=Record%20Video
  • カメラ⇾Slo-moを記録: prefs:root=CAMERA&path=Record%20Slo-mo

  • 書籍: prefs:root=IBOOKS

ゲームセンター

  • ゲームセンター: prefs:root=GAMECENTER

3

UIApplicationOpenSettingsURLStringこれは、以前に何らかの許可を与えた場合にのみ機能します。たとえば、場所、写真、連絡先、プッシュ通知アクセス。したがって、ユーザーからそのような権限がない場合:

もしiOSの10以上

設定は開きますが、クラッシュします。その理由は、アプリの設定には何もないからです。

以下のコードは、iOS設定内のアプリケーション設定を開きます。

NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
if ([[UIApplication sharedApplication] canOpenURL:url]) {
    [[UIApplication sharedApplication] openURL:url];
}

デバイスが利用できないため、iOS 10未満ではこれを確認できませんでした。

また、以下のコードを要旨から見つけることができ、iOS 10でも同様に機能します。しかし、これがAppleレビューチームによって承認されるかどうかはわかりません。

https://gist.github.com/johnny77221/bcaa5384a242b64bfd0b8a715f48e69f


3

Swift 3で必要なのはこれだけです(ここでは、たとえばアプリの通知にリダイレクトします)。

if let url = URL(string: "App-Prefs:root=NOTIFICATIONS_ID&path=your app bundleID") {
    if #available(iOS 10.0, *) {
        UIApplication.shared.open(url, completionHandler: .none)
    } else {
        // Fallback on earlier versions
    }
}

出典:phynet gist

これは、設定がバックグラウンドにある場合にのみ機能しました。アプリの通知設定にリダイレクトされますが、設定がバックグラウンドで実行されていなかった場合は、一般的に通知設定にリダイレクトされます。


1

以下のコードを使用できます。

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

1

SWIFT 4.0

'openURL'はiOS 10.0で廃止されました:代わりにopenURL:options:completionHandler:を使用してください

UIApplication.shared.open(URL.init(string: UIApplicationOpenSettingsURLString)! , options: [:], completionHandler: nil)

1

スウィフト4

私はより安全な方法で設定を開くことを好みます、

if let settingUrl = URL(string:UIApplicationOpenSettingsURLString) {

    UIApplication.shared.open(settingUrl)
}
else {
    print("Setting URL invalid")
}

0

Swift次の機能を使用して、Bluetoothページで設定アプリを開くことができます

func openSettingsApp(){
    if let settings = NSURL(string: "prefs:root=Bluetooth") {
        UIApplication.sharedApplication().openURL(settings)
    }
}

再びこれはアプリの設定を開きません。これはBluetoothへのディープリンクであるため、Bluetoothで設定アプリを開きます。


0

iOS 10でテスト済み。

NSArray* urlStrings = @[@"prefs:root=WIFI", @"App-Prefs:root=WIFI"];
for(NSString* urlString in urlStrings){
NSURL* url = [NSURL URLWithString:urlString];
if([[UIApplication sharedApplication] canOpenURL:url]){
    [[UIApplication sharedApplication] openURL:url];
    break;
}
}

ハッピーコーディング:)


3
これにより、アプリが拒否されます。ちょうどそれが私に起こりました。
Bersaelor

そうですが、このコード行を使用すると、目的の場所に直接移動できます
Praveen Sharma

1
はい、それはあなたをそこに連れて行きます。動作しないと言っているのではなく、アプリのレビュー中に拒否されることを指摘しています。"prefs:root"は、レビューチームが私たちに言ったプライベートURLスキームです。(あなたは幸運になるかもしれません、そして彼らはしばらくの間気づかないでしょう、私たちはしばらくの間その機能を持っていて、レビュアーがそれに気付く前にいくつかのレビューを通過しました)
Bersaelor

情報をありがとう、私は何か他のものを試してみますが、今私はVPN接続に行き詰まっています。これの解決策を見つけています。
Praveen Sharma

0

受け入れられた回答に追加するには:(アップルの開発者ドキュメントから)「この文字列(openSettingsURLString)から構築されたURLを開くと、システムは設定アプリを起動し、アプリのカスタム設定がある場合はそれを表示します。」したがって、アプリの設定を開く場合は、独自のSettings.bundleを作成します。


-1

これをクラスに追加し、

 public class func showSettingsAlert(title:String,message:String,onVC viewController:UIViewController,onCancel:(()->())?){
            YourClass.show2ButtonsAlert(onVC: viewController, title: title, message: message, button1Title: "Settings", button2Title: "Cancel", onButton1Click: {
                if let settingsURL = NSURL(string: UIApplicationOpenSettingsURLString){
                    UIApplication.sharedApplication().openURL(settingsURL)
                }
                }, onButton2Click: {
                    onCancel?()
            })
        }

 public class func show2ButtonsAlert(onVC viewController:UIViewController,title:String,message:String,button1Title:String,button2Title:String,onButton1Click:(()->())?,onButton2Click:(()->())?){
            dispatch_async(dispatch_get_main_queue()) {
                let alert : UIAlertController = UIAlertController(title: title, message: message, preferredStyle: UIAlertControllerStyle.Alert)

                alert.addAction(UIAlertAction(title: button1Title, style:.Default, handler: { (action:UIAlertAction) in
                    onButton1Click?()
                }))

                alert.addAction(UIAlertAction(title: button2Title, style:.Default, handler: { (action:UIAlertAction) in
                    onButton2Click?()
                }))

                viewController.presentViewController(alert, animated: true, completion: nil)
            }
        }

このように呼んで、

YourClass.showSettingsAlert("App would like to access camera", message: "App would like to access camera desc", onVC: fromViewController, onCancel: {
  print("canceled")
})
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.