Ayarlar uygulamasını başka bir uygulamadan açma


180

Tamam, bunun hakkında birçok soru olduğunu biliyorum, ama hepsi çok zaman önceydi.

Yani. Bunun mümkün olduğunu biliyorum çünkü Harita uygulaması bunu yapıyor.

Bu uygulama için yerelleştirmeyi kapatırsam Harita uygulamasında bana bir mesaj gönderir ve Tamam'a basarsam "Ayarlar Uygulaması" açılır. Sorum şu: bu nasıl mümkün olabilir? Kendi uygulamamdan "Ayar uygulaması" nı nasıl açabilirim?

Temelde aynı şeyi yapmalıyım, kullanıcı uygulamamın konumunu kapatırsa, ona "Ayar uygulaması" nı açacak bir şey söyleyen bir mesaj göstereceğim



1
Ayarları uygulamayı iOS8'de programlı olarak açabilirsiniz (ancak iOS'un alt sürümlerinde açamazsınız). Yanıtlarda aşağıdaki kodu.
Karan Dua

Yanıtlar:


291

Tarafından belirtildiği gibi Karan Dua şudur iOS8 artık mümkün kullanarak UIApplicationOpenSettingsURLStringbkz Apple'ın Belgeleri .

Misal:

Hızlı 4.2

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

Swift 3'te:

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

Swift 2'de:

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

Hedef-C'de

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

İOS 8'den önce:

Yapamazsın. Söylediğiniz gibi, bu birçok kez ele alındı ​​ve konum hizmetlerini açmanızı isteyen açılır pencere, Uygulama tarafından değil Apple tarafından sağlanır. Bu yüzden ayarlar uygulamasını açabiliyor.

İlgili birkaç soru ve makale:

Ayarları uygulamasını openURL kullanarak açmak mümkün mü?

Ayarlar uygulamasını programlı olarak açma (iPhone)

Kullanıcı bir düğmeye bastığında Ayarlar uygulamasını nasıl açabilirim?

iPhone: Uygulama Tercihleri ​​Panelini Uygulamadan Açma

Uygulamanın tercihlerindeki bir girişe tıklayarak UIPickerView'ı açın - Nasıl Yapılır?

Ayarlar uygulaması açılsın mı?

iOS: Ayarları Yanlış Yapıyorsunuz


Eğer daha yetkili bir cevap gerekiyorsa, <Elma Geliştirici forumlarında soran deneyebilirsiniz developer.apple.com/devforums > veya <bir hata kaydı developer.apple.com/bugreporter > - bu bilinen bir sorun olup olmadığını geri gelmelidir "doğru davranır" veya orijinal hatanın bir kopyası olarak.
Vincent Gable


2
Bu, iOS 8'de artık [NSURL URLWithString: UIApplicationOpenSettingsURLString]
LightningStryk

1
hızlı 3'te - UIApplication.shared.openURL (URL (dize:
UIApplicationOpenSettingsURLString

1
Bu yöntemi kullanırken dikkatli olun. Bunu kullandım ve birkaç ay sonra uygulamam Apple'dan aşağıdaki mesajla reddedildi: Uygulamanız özel bir varlık olan "prefs: root =" herkese açık olmayan URL şemasını kullanıyor. Herkese açık olmayan API'ların kullanımına App Store'da izin verilmez, çünkü bu API'ların değişmesi durumunda kötü bir kullanıcı deneyimine yol açabilir. Bu uygulamanın gelecekteki gönderilerinde herkese açık olmayan API'ları kullanmaya veya gizlemeye devam etmek, Apple Geliştirici hesabınızın feshedilmesine ve ilişkili tüm uygulamaların App Store'dan kaldırılmasına neden olabilir.
Nick Kirsten

133

Gönderen @Yatheeshaless bireyin cevabı :

Ayarlar uygulamasını iOS8'de programlı olarak açabilirsiniz, ancak iOS'un önceki sürümlerinde açamazsınız.

Swift:

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

Hızlı 4:

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

Swift 4.2 (BETA):

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
Bu, uygulamanızın Ayarlar uygulamasının bölümünü açtığı görülüyor. Kullanıcıların Ayarlar ana ekranını görmek için birkaç kez Geri düğmesine basmaları gerekir.
wjl

1
Küçük düzeltme ..[[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];
Paito

10
@Paito Yukarıdaki satır, uygulamanın özel ayarlarına yönlendiriyor . Cihaz ayarlarının gizlilik bölümüne yönlendirmenin bir yolu var mı ? Eğer biliyorsan lütfen yorum yap. Bu yönlendirme mümkündür, çünkü gizlilik bölümündeki konum ayarlarına yönlendirdiği haritalar uygulamasında buldum.
Pavan Kotesh

1
Küçük Swift düzeltme: UIApplication.sharedApplication (). OpenURL (NSURL (dize: UIApplicationOpenSettingsURLString)!)
vbezhenar

1
@ PavanKotesh- Evet ama uygulama ayarları için izin vermeniz gereken şey olacak, benim durumumda yukarıdaki kod ile uygulama ayarlarında görünen kişilere erişim gerekiyordu.
Tejas K

58

EVET!! Cihaz Ayarları ekranını başlatabilirsiniz , iOS 9.2'de test ettim

Aşama 1. URL şemaları eklememiz gerekiyor

Proje ayarları -> Bilgi -> URL Türleri -> Yeni URL Şemaları Ekle'ye gidin

resim açıklamasını buraya girin

Adım 2. @davidcann sayesinde ayarları programlı olarak başlatın

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

Ayrıca sadece uygun adı kullanarak Müzik, Konum vb. Alt ekranları da başlatabiliriz.

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

Bu tam adı listesine bakın burada Henri Normak tarafından paylaşılan


Güncelleme:

Yoruma göre herkes başvuru gönderme durumumda yapılan bu değişiklikten sonra ne olacağını bilmek istiyor?

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

Sadece onaylamak için, Ben sadece bu sabah indirdi ve Konum hizmetlerini devre dışı bıraktı ve sonra konum izni için istedi ve sonra benim uyarı pop-up beni ayarları göndermek için orada oldu -> konum hizmetleri sayfası -> Etkin -> Bu kadar!!

! [DİKKAT: Uygulamanız reddedilebilir ... onaylanmış olsa bile, bu yöntemi kullanırsanız gelecekteki sürümlerde reddedilebilir ...] 4


Teşekkürler, iOS 6 ve 7'de de benim için çalışıyor. Apple'ın inceleme sürecinden geçmeye çalıştınız mı?
Flo

1
@Flo size bildireceğim, çünkü şu anda beta testi için zorladım.
swiftBoy

1
iOS 9.3. Bir cazibe gibi çalıştı. Ayarlar uygulamasının içinde "[uygulama adım] 'a geri dön" bile. Elbette, bu destekleniyor çünkü bu tür şeyler yapan diğer birçok uygulamayı görüyorum!
EricWasTaken

13
İOS 10'da yeni url "prefs: root = ...." değil, "App-Prefs: root = ...".
Drico

1
Uygulamanız reddedilebilir ... onaylanmış olsa bile, bu yöntemi kullanırsanız gelecekteki sürümde reddedilebilir ...
Mihir Mehta

18

Bunu iOS 5.0 ve sonraki sürümlerde kullanabilirsiniz: Bu artık çalışmıyor.

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

3
@MarkGranoff Hayır, teknik olarak belgelenmemiş gibi görünüyor, ancak normal bir belgesiz API kadar kötü değil, çünkü sadece bir URL Şeması. Önce canOpenURL: ile kontrol edebilirsiniz. Ayrıca, bu konuda bir iplik var burada: devforums.apple.com/message/543818
davidcann

3
Bu makaleye göre ayarlarda farklı alanlara ulaşabilirsiniz . Örneğin, bu URL sizi Bluetooth ayarlarına prefs:root=General&path=Bluetooth
götürür

1
Ben url: @ "prefs: root = Parlaklık" açıyordu çünkü özel API kullanmak için reddedilen bir uygulama var. Genellikle, belgelenmemiş özel anlamına gelir.
Guillaume

4
Apple bunun genel bir API olmadığını ve artık desteklenmediğini belirtti. Bu konuda 11253669 numaralı bir hata var.
Don Wilson

2
Bunun Strava uygulamasında çalıştığını gördüm. Bluetooth'u kapatın ve uygulamada açın. Ardından ayarlar uygulamasına gitmenizi ister ve doğrudan Bluetooth ayarlarına gider. Bu iOS5.1 içindir. Hangi şemayı kullandıklarını öğrenmenin bir yolu var mı?
Karıncalar

14

iOS 10 güncellemesi

Apple, ana iş parçacığında zaman uyumsuzluğu açma yöntemini değiştirdi. Ancak, uygulama ayarlarını yalnızca yerel ayarlarda açmak mümkündür.

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

iOS 9 güncellemesi

Artık doğrudan alt ayarlar menüsüne gitmek mümkün. Ancak, bir URL şeması oluşturulmalıdır. İki yolla yapılabilir:

  1. XCode - Hedef, Bilgi, URL Şemasında bulacaksınız. Ardından, sadece prefs yazın.
  2. * -Info.plist'e doğrudan ekleme. Aşağıdakileri ekleyin: <key>CFBundleURLTypes</key> <array> <dict> <key>CFBundleTypeRole</key> <string>Editor</string> <key>CFBundleURLSchemes</key> <array> <string>prefs</string> </array> </dict> </array>

Sonra kod:

hızlı

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

Amaç-c

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


1
İOS 10.x çözümünü denedim ve bu benim için çalışmadı - hiçbir şey olmuyor.
Mark Peters

@MarkPeters, henüz bir yol buldunuz mu? Çok yardımcı olabilir. Teşekkürler.
Roohul Poolak

Hayır. Bunun bir iOS hatası olup olmadığını veya Apple'ın özelliği yeni çıkardığını hala bilmiyorum.
Mark Peters

Bence, hala Uzantılarla çalışıyorlar. Eski uygulama Magic LauncherAppstore'da.
Trident

4

Swift 3 / iOS 10+ sürümünde bu artık şuna benziyor

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

bildirim ekranına nasıl gidilir? çünkü if url = URL (string: "App-Prefs: root = NOTIFICATIONS_ID & path = io.artup.artup") {eğer #available (iOS 10.0, *) {UIApplication.shared.open (url, completionHandler: .none)} } ama iPhone 6'da bildirime gittim, iPhone 7'de değil mi?
user3804063

3
Bu, uygulamanızın reddedilmesini sağlar. Özel API'yı kullanmaya başladılar.
Bersaelor

Ben bu "App-Prefs: kök" kullanarak, benim app, reddedildi
Malder

1
Başkalarının burada bahsettiklerini vurgulayın, bu yöntemi kullanmayın, uygulamanızın reddedilmesini sağlar. Uygulamayı tekrar tekrar göndermek, geliştirici hesabınızı kapatır.
CodeBrew

4

Hızlı 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

Kullanabileceğiniz gibi görünüyor prefs:<area>Ayarları açmak ve belirli alanlara gitmek için URL'yi . Apple bunları değiştirebilir ve uygulamanızı bozabilir, bu yüzden her zaman önce bunları açıp açamayacağınızı kontrol edin.

Bu makaleden , iOS 13.1 için bazılarını listelediler:

Ayar URL'leri

iCloud

  • iCloud: prefs:root=CASTLE
  • iCloud Yedekleme: prefs:root=CASTLE&path=BACKUP

Kablosuz Radyolar

  • Kablosuz internet: prefs:root=WIFI
  • Bluetooth: prefs:root=Bluetooth
  • Hücresel: prefs:root=MOBILE_DATA_SETTINGS_ID

Kişisel Erişim Noktası

  • Kişisel Erişim Noktası: prefs:root=INTERNET_TETHERING
  • Kişisel Erişim Noktası ⇾ Aile Paylaşımı: prefs:root=INTERNET_TETHERING&path=Family%20Sharing
  • Kişisel Erişim Noktası ⇾ Wi-Fi Parolası: prefs:root=INTERNET_TETHERING&path=Wi-Fi%20Password

VPN

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

Bildirimler

  • Bildirimler: prefs:root=NOTIFICATIONS_ID
  • Bildirimler ⇾ Siri Önerileri: prefs:root=NOTIFICATIONS_ID&path=Siri%20Suggestions

sesler

  • sesler: prefs:root=Sounds
  • Zil sesi: prefs:root=Sounds&path=Ringtone

Rahatsız etmeyin

  • Rahatsız etmeyin: prefs:root=DO_NOT_DISTURB
  • Rahatsız Etmeyin From Şuradan Çağrılara İzin Ver: prefs:root=DO_NOT_DISTURB&path=Allow%20Calls%20From

Ekran ZAMANI

  • Ekran ZAMANI: prefs:root=SCREEN_TIME
  • Ekran Süresi ⇾ Kesinti Süresi: prefs:root=SCREEN_TIME&path=DOWNTIME
  • Ekran Süresi ⇾ Uygulama Sınırları: prefs:root=SCREEN_TIME&path=APP_LIMITS
  • Ekran Süresi ⇾ Her Zaman İzin Verilir: prefs:root=SCREEN_TIME&path=ALWAYS_ALLOWED

Genel

  • Genel: prefs:root=General
  • Genel ⇾ Hakkında: prefs:root=General&path=About
  • Genel ⇾ Yazılım Güncelleme: prefs:root=General&path=SOFTWARE_UPDATE_LINK
  • Genel ⇾ CarPlay: prefs:root=General&path=CARPLAY
  • Genel ⇾ Arka Planda Uygulama Yenileme: prefs:root=General&path=AUTO_CONTENT_DOWNLOAD
  • Genel ⇾ Çoklu görev (yalnızca iPad): prefs:root=General&path=MULTITASKING
  • Genel ⇾ Tarih ve Saat: prefs:root=General&path=DATE_AND_TIME
  • Genel ⇾ Klavye: prefs:root=General&path=Keyboard
  • Genel ⇾ Klavye ⇾ Klavyeler: prefs:root=General&path=Keyboard/KEYBOARDS
  • Genel ⇾ Klavye ⇾ Donanım Klavyesi: prefs:root=General&path=Keyboard/Hardware%20Keyboard
  • Genel ⇾ Klavye ⇾ Metin Değiştirme: prefs:root=General&path=Keyboard/USER_DICTIONARY
  • Genel ⇾ Klavye ⇾ Tek Elle Klavye: prefs:root=General&path=Keyboard/ReachableKeyboard
  • Genel ⇾ Dil ve Bölge: prefs:root=General&path=INTERNATIONAL
  • Genel ⇾ Sözlük: prefs:root=General&path=DICTIONARY
  • Genel ⇾ Profiller: prefs:root=General&path=ManagedConfigurationList
  • Genel ⇾ Sıfırla: prefs:root=General&path=Reset

Kontrol Merkezi

  • Kontrol Merkezi: prefs:root=ControlCenter
  • Kontrol Merkezi Control Kontrolleri Özelleştir: prefs:root=ControlCenter&path=CUSTOMIZE_CONTROLS

Görüntüle

  • Görüntüle: prefs:root=DISPLAY
  • Ekran ⇾ Otomatik Kilit: prefs:root=DISPLAY&path=AUTOLOCK
  • Ekran ⇾ Metin Boyutu: prefs:root=DISPLAY&path=TEXT_SIZE

Ulaşılabilirlik

  • Ulaşılabilirlik: prefs:root=ACCESSIBILITY

Duvar kağıdı

  • Duvar kağıdı: prefs:root=Wallpaper

Siri

  • Siri: prefs:root=SIRI

Elma Kalemi

  • Apple Pencil (yalnızca iPad): prefs:root=Pencil

Yüz Kimliği

  • Yüz Kimliği: prefs:root=PASSCODE

Acil SOS

  • Acil SOS: prefs:root=EMERGENCY_SOS

pil

  • Pil: prefs:root=BATTERY_USAGE
  • Pil ⇾ Pil Sağlığı (yalnızca iPhone): prefs:root=BATTERY_USAGE&path=BATTERY_HEALTH

Gizlilik

  • Gizlilik: prefs:root=Privacy
  • Gizlilik ⇾ Konum Servisleri: prefs:root=Privacy&path=LOCATION
  • Gizlilik ⇾ Kişiler: prefs:root=Privacy&path=CONTACTS
  • Gizlilik ⇾ Takvimler: prefs:root=Privacy&path=CALENDARS
  • Gizlilik inders Hatırlatmalar: prefs:root=Privacy&path=REMINDERS
  • Gizlilik ⇾ Fotoğraflar: prefs:root=Privacy&path=PHOTOS
  • Gizlilik ⇾ Mikrofon: prefs:root=Privacy&path=MICROPHONE
  • Gizlilik ⇾ Konuşma Tanıma: prefs:root=Privacy&path=SPEECH_RECOGNITION
  • Gizlilik ⇾ Kamera: prefs:root=Privacy&path=CAMERA
  • Gizlilik ⇾ Hareket: prefs:root=Privacy&path=MOTION\

Uygulama mağazası

  • Uygulama mağazası: prefs:root=STORE
  • App Store ⇾ Uygulama İndirmeleri: prefs:root=STORE&path=App%20Downloads
  • App Store ⇾ Video Otomatik Oynat: prefs:root=STORE&path=Video%20Autoplay

Cüzdan

  • Cüzdan: prefs:root=PASSBOOK

Şifreler ve Hesaplar

  • Şifreler ve Hesaplar: prefs:root=ACCOUNTS_AND_PASSWORDS
  • Şifreler ve Hesaplar New Yeni Veri Al: prefs:root=ACCOUNTS_AND_PASSWORDS&path=FETCH_NEW_DATA
  • Şifreler ve Hesaplar Account Hesap Ekle: prefs:root=ACCOUNTS_AND_PASSWORDS&path=ADD_ACCOUNT

Posta

  • Posta: prefs:root=MAIL
  • Posta ⇾ Önizleme: prefs:root=MAIL&path=Preview
  • Posta ⇾ Kaydırma Seçenekleri: prefs:root=MAIL&path=Swipe%20Options
  • Posta ⇾ Bildirimleri: prefs:root=MAIL&path=NOTIFICATIONS
  • Posta cked Engellendi: prefs:root=MAIL&path=Blocked
  • Mail ed Sessiz Konu Eylemi: prefs:root=MAIL&path=Muted%20Thread%20Action
  • Posta cked Engellenen Gönderen Seçenekleri: prefs:root=MAIL&path=Blocked%20Sender%20Options
  • Posta Address Adresleri İşaretle: prefs:root=MAIL&path=Mark%20Addresses
  • Posta Quote Teklif Seviyesini Artır: prefs:root=MAIL&path=Increase%20Quote%20Level
  • Posta Rep Yanıtlı Ekleri Dahil Et: prefs:root=MAIL&path=Include%20Attachments%20with%20Replies
  • Posta ⇾ İmza: prefs:root=MAIL&path=Signature
  • Posta ⇾ Varsayılan Hesap: prefs:root=MAIL&path=Default%20Account

İletişim

  • İletişim: prefs:root=CONTACTS

Takvim

  • Takvim: prefs:root=CALENDAR
  • Takvim ⇾ Alternatif Takvimler: prefs:root=CALENDAR&path=Alternate%20Calendars
  • Takvim ⇾ Senkronizasyon: prefs:root=CALENDAR&path=Sync
  • Takvim ⇾ Varsayılan Uyarı Zamanları: prefs:root=CALENDAR&path=Default%20Alert%20Times
  • Takvim ⇾ Varsayılan Takvim: prefs:root=CALENDAR&path=Default%20Calendar

notlar

  • Notlar: prefs:root=NOTES
  • Notlar ⇾ Varsayılan Hesap: prefs:root=NOTES&path=Default%20Account
  • Notlar ⇾ Şifre: prefs:root=NOTES&path=Password
  • Notlar Notes Notları Sırala: prefs:root=NOTES&path=Sort%20Notes%20By
  • Notlar ⇾ Yeni Notlar Şununla Başlar: prefs:root=NOTES&path=New%20Notes%20Start%20With
  • Notlar Check İşaretli Öğeleri Sıralama: prefs:root=NOTES&path=Sort%20Checked%20Items
  • Notlar ⇾ Çizgiler ve Izgaralar: prefs:root=NOTES&path=Lines%20%26%20Grids
  • Notlar Notes Notlara Kilit Ekranından Erişin: prefs:root=NOTES&path=Access%20Notes%20from%20Lock%20Screen

Hatırlatmalar

  • Hatırlatmalar: prefs:root=REMINDERS
  • Hatırlatıcılar ⇾ Varsayılan Liste: prefs:root=REMINDERS&path=DEFAULT_LIST

Sesli Notlar

  • Sesli Notlar: prefs:root=VOICE_MEMOS

Telefon

  • Telefon: prefs:root=Phone

Mesajlar

  • Mesajlar: prefs:root=MESSAGES

FaceTime

  • FaceTime: prefs:root=FACETIME

Haritalar

  • Haritalar: prefs:root=MAPS
  • Haritalar ⇾ Sürüş ve Navigasyon: prefs:root=MAPS&path=Driving%20%26%20Navigation
  • Haritalar it Toplu Taşıma: prefs:root=MAPS&path=Transit

Pusula

  • Pusula: prefs:root=COMPASS

Tedbir

  • ölçün: prefs:root=MEASURE

Safari

  • Safari: prefs:root=SAFARI
  • Safari ⇾ İçerik Engelleyicileri: prefs:root=SAFARI&path=Content%20Blockers
  • Safari ⇾ Fontları için Indirmek prefs:root=SAFARI&path=DOWNLOADS
  • Safari Tab Sekmeleri Kapat: prefs:root=SAFARI&path=Close%20Tabs
  • Safari History Geçmişi ve Verileri Temizle: prefs:root=SAFARI&path=CLEAR_HISTORY_AND_DATA
  • Safari ⇾ Sayfa Yakınlaştırma: prefs:root=SAFARI&path=Page%20Zoom
  • Safari Desktop Masaüstü Web Sitesi İste: prefs:root=SAFARI&path=Request%20Desktop%20Website
  • Safari ⇾ Okuyucu: prefs:root=SAFARI&path=Reader
  • Safari ⇾ Kamera: prefs:root=SAFARI&path=Camera
  • Safari ⇾ Mikrofon: prefs:root=SAFARI&path=Microphone
  • Safari ⇾ Konum: prefs:root=SAFARI&path=Location
  • Safari ⇾ Gelişmiş: prefs:root=SAFARI&path=ADVANCED

Haberler

  • Haberler: prefs:root=NEWS

Sağlık

  • Sağlık: prefs:root=HEALTH

Kısayollar

  • Kısayollar: prefs:root=SHORTCUTS

Müzik

  • Müzik: prefs:root=MUSIC
  • Müzik ⇾ Hücresel Veri: prefs:root=MUSIC&path=com.apple.Music:CellularData
  • Müzik Storage Depolamayı Optimize Edin: prefs:root=MUSIC&path=com.apple.Music:OptimizeStorage
  • Müzik ⇾ EQ: prefs:root=MUSIC&path=com.apple.Music:EQ
  • Müzik ⇾ Ses Sınırı: prefs:root=MUSIC&path=com.apple.Music:VolumeLimit

televizyon

  • Ayarlar ⇾ TV: prefs:root=TVAPP

Fotoğraflar

  • Fotoğraflar: prefs:root=Photos

Kamera

  • Kamera: prefs:root=CAMERA
  • Kamera Video Video Kaydet: prefs:root=CAMERA&path=Record%20Video
  • Kamera Slo Ağır çekim Kaydı: prefs:root=CAMERA&path=Record%20Slo-mo

Kitabın

  • Kitabın: prefs:root=IBOOKS

Oyun Merkezi

  • Oyun Merkezi: prefs:root=GAMECENTER

3

UIApplicationOpenSettingsURLStringbu yalnızca daha önce herhangi bir izin için izin verdiyseniz çalışır. Örneğin, Konum, Fotoğraf, Kişi, Anlık bildirim erişimi. Dolayısıyla, kullanıcıdan bu tür izinleriniz yoksa:

Eğer IOS 10 veya üzeri ,

Ayarları açar ancak kilitler. Nedeni, uygulamanızın ayarlarında hiçbir şey yok.

Aşağıdaki kod, uygulama ayarlarınızı iOS Ayarı içinde açar.

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

Cihazın kullanılamaması nedeniyle bunu iOS <10'da kontrol edemedim.

Ayrıca, bazı kodlardan aşağıdaki kodu bulabilirim ve iOS 10'da da iyi çalışır. Ancak bunun Apple inceleme ekibi tarafından onaylanıp onaylanmayacağından emin değilim.

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


3

Swift 3'te ihtiyacım olan tek şey bu (örneğin, uygulama bildirimlerime yeniden yönlendirmek için):

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
    }
}

Kaynak: phynet gist .

Bu, yalnızca ayarlar arka planda olduğunda benimle çalıştı. Sizi uygulama bildirim ayarlarınıza yönlendirir, ancak ayarlar arka planda çalışmıyorsa sizi genel olarak bildirim ayarlarına yönlendirir.


1

Bunun için aşağıdaki kodu kullanabilirsiniz.

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

1

SWIFT 4.0

iOS 10.0'da 'openURL' kullanımdan kaldırıldı: Lütfen openURL kullanın: options: completionHandler: yerine

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

1

Hızlı 4

Ayarı daha güvenli bir şekilde açmayı tercih ederim,

if let settingUrl = URL(string:UIApplicationOpenSettingsURLString) {

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

0

Swift Ayarlar Sayfasını Bluetooth Sayfası ile açmak için aşağıdaki işlevi kullanabilirsiniz

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

Yine bu, Uygulamanın Ayarlarını açmaz. Bu, Bluetooth ile derin bağlantı oluşturduğu için Bluetooth ile ayarlar uygulamasını açacaktır.


0

İOS 10 ile test edilmiştir.

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;
}
}

Mutlu Kodlama :)


3
Bu, uygulamanızın reddedilmesini sağlar. Sadece başıma gelmişti.
Bersaelor

Öyle mi, ama bu kod satırı sizi doğrudan istediğiniz yere götürecektir
Praveen Sharma

1
Evet sizi oraya götürecek. Bunun işe yaramadığını söylemiyorum, sadece uygulama incelemesi sırasında reddedileceğini işaret ediyorum. "prefs: root", inceleme ekibinin bize söylediklerine göre özel bir URL şemasıdır. (Şanslı olabilirsiniz ve bir süre fark etmezler, bir süredir özelliği vardı ve gözden geçiren fark etmeden birkaç inceleme geçtik)
Bersaelor

Bilgi için teşekkürler, başka bir şey denemek istiyorum, ama şu anda VPN bağlantısı sıkışmış, Bunun için bir çözüm bulmak.
Praveen Sharma

0

Kabul edilen cevaba eklemek için: (apple geliştirici belgelerinden) "Bu dizeden oluşturulan URL'yi açtığınızda (openSettingsURLString), sistem Ayarlar uygulamasını başlatır ve varsa uygulamanın özel ayarlarını görüntüler." Uygulamanız için ayarları açmak istiyorsanız, kendi Settings.bundle'ınızı oluşturun.


-1

Bunu sınıfınıza ekleyin,

 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)
            }
        }

Böyle çağır,

YourClass.showSettingsAlert("App would like to access camera", message: "App would like to access camera desc", onVC: fromViewController, onCancel: {
  print("canceled")
})
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.