iOS Başlatma Ayarları -> Kısıtlamalar URL Şeması


86

Son zamanlarda , bu harika web sitesinde ayrıntılı olarak açıklanabilecek harika iOS5 özel Ayarlar URL Şemasını keşfettim .

Bunu işe yaradı, kullanıcıyı uygulamamdan Ayarlar uygulamasına yönlendirdim:

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

Ancak parametre aracılığıyla doğrudan Kısıtlamalar yoluna yönlendirilemiyor gibi görünebilir path:

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

Bu konuda belge bulan veya bu işi yapan var mı?

Herhangi bir görüş çok takdir edilecektir. Kullanıcıyı Uygulama içi satın almayı etkinleştirmeye çalışıyorum ve kullanıcının Kısıtlamalar'ı manuel olarak tıklamasını istemiyorum (çok açık değil).


2
Touch ID ve Parola URL'sini bilen var mı?
Fabian Köbel

1
bunu touch id için kullanın: prefs: root = TOUCHID_PASSCODE ( stackoverflow.com/questions/35410746/… )
Fabian

Yanıtlar:


144

AS @Nix Wang 'ın CEVAP BU IS DEĞİL İŞ İÇİNDE IOS 10


UYARI: Bu yöntem, iOS 5.1 ve sonraki sürümleri çalıştıran cihazlar için çalışmaz - Aşağıdaki Hlung'un yorumuna bakın.

Bu mümkündür pathbileşen gerçek bölümünde farklı bir adı vardır, ancak şu anda bir URL'den düz o bölümü erişemez olması da mümkündür. Olası URL'lerin bir listesini buldum ve Kısıtlamalar bu listede yok, belki de henüz bulunamamıştır.

Ayarlar uygulamasında şu anda bilinen URL'lerin listesi:

  • prefs: root = Genel & yol = Hakkında
  • prefs: root = Genel & yol = ERİŞİLEBİLİRLİK
  • prefs: root = AIRPLANE_MODE
  • prefs: root = Genel & yol = AUTOLOCK
  • prefs: root = Genel & yol = KULLANIM / CELLULAR_USAGE
  • prefs: root = Parlaklık
  • prefs: root = Genel & yol = Bluetooth
  • prefs: root = Genel & yol = DATE_AND_TIME
  • prefs: root = FACETIME
  • prefs: root = Genel
  • prefs: root = Genel & yol = Klavye
  • prefs: kök = KALE
  • prefs: root = KALE & yol = STORAGE_AND_BACKUP
  • prefs: root = Genel & yol = ULUSLARARASI
  • prefs: root = LOCATION_SERVICES
  • prefs: root = ACCOUNT_SETTINGS
  • prefs: root = MÜZİK
  • prefs: root = MÜZİK & yol = EQ
  • prefs: root = MÜZİK & yol = VolumeLimit
  • prefs: root = Genel & yol = Ağ
  • tercihler: kök = NIKE_PLUS_IPOD
  • tercihler: kök = NOTLAR
  • prefs: root = NOTIFICATIONS_ID
  • prefs: root = Telefon
  • prefs: root = Fotoğraflar
  • prefs: root = Genel & yol = ManagedConfigurationList
  • prefs: root = Genel & yol = Sıfırla
  • prefs: root = Sesler ve yol = Zil sesi
  • prefs: root = Safari
  • prefs: root = Genel & yol = Asistan
  • prefs: root = Sesler
  • prefs: root = Genel & yol = SOFTWARE_UPDATE_LINK
  • tercihler: kök = MAĞAZA
  • tercihler: kök = TWITTER
  • prefs: root = Genel & yol = KULLANIM
  • tercihler: kök = VİDEO
  • prefs: root = Genel & yol = Ağ / VPN
  • prefs: root = Duvar Kağıdı
  • tercihler: kök = WIFI
  • prefs: root = INTERNET_TETHERING

54
Sadece nazik bir uyarı, idownloadblog.com/2011/11/29/iphone-5-1-disables-shortcuts , iOS ayarlarına yönelik tüm url şemalarının iOS5.1'de kaldırılacağını söyledi (bu nedenle tercihler gibi url'ler: root = General & path = Network artık çalışmayacak) Yani, lütfen farkında olun.
Hlung

3
Tamamen kaldırılmazlar, sadece bu URL bağlantılarını bir UIAlertView'daki bir düğmeye koymanız yeterlidir. Yani basitçe Uygulama arka gidecek ve ayarlar vb açmak ve Tamam ve İptal olacağı UIAlertView bir uyarı koymak
zambono

4
Artık çalışmıyor, bir süre önce uygulamalarımdan birinde çalışıyordu ama artık çalışmıyor.
zambono

5
İOS8'den itibaren yerleşik Ayarlar uygulamasını şu url ile başlatabilirsiniz:[NSURL URLWithString:UIApplicationOpenSettingsURLString]
Jason Moore

2
İos10 için herhangi bir çözüm / alternatif lütfen.
ranjit.x.singh

48

İOS8'den itibaren yerleşik Ayarlar uygulamasını şu şekilde açabilirsiniz:

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

Gerçek URL dizesi @"app-settings:". Dizeye farklı bölümler eklemeyi denedim ("Bluetooth", "GENEL", vb.), Ancak yalnızca ana Ayarlar ekranına bağlantı çalışıyor gibi görünüyor. Aksini öğrenirseniz bir cevap gönderin.


10
Bunun nedeni, söz konusu aramanın Ayarlar Başlatma URL'si olmasıdır. Varsa, uygulamanın özel ayarlarını açar. Değilse, sadece Ayarlar uygulamasını ana ekrana açar. developer.apple.com/library/ios/documentation/UIKit/Reference/…
JAL

1
Uygulamanızda etkinleştirmek / devre dışı bırakmak istediğiniz belirli ayarlar varsa harika bir cevap. Hepsi tek bir yerde ve istenen yapılandırmaya ulaşmak için kullanıcının Ayarlar'da gezinmesine gerek yok. Teşekkürler!
kyleturner

1
@ FabianKöbel TouchID ve Şifre için bir tane bulabildiniz mi?
ShayanK

1
@AspersionCast: Bunu kullanabilirsiniz: prefs: root = TOUCHID_PASSCODE ( stackoverflow.com/questions/35410746/… )
Fabian

Bu, Ayarlar uygulamasını başlatmak için şu anda Apple tarafından onaylanan tek yöntem gibi görünüyor.
u2Fan

42

Tercihler URL şemasını iOS uygulamanıza eklerseniz, iOS 5'te kullanabildiğimiz tüm şemaları kullanmanıza izin verecektir. İOS 9'da test ettim, ancak eski sürümlerde de çalışacağını düşünüyorum.


Bu numara yalnızca iOS 8'i başlatmaya gerek olmadığı yerde çalışır.
Valeriy Van

1
Ancak iOS 8'de olduğu gibi, örneğin uygulamanıza bu URL utancını eklemezseniz, WiFi ayarlarını açmanıza izin verilmez.
Pedro Tôrres

Evet haklısın. Bu kullanım durumu hakkında düşünmedim.
Valeriy Van

9
@conorgriffin Siz ve diğer herkes için ortamın altında yaşıyor: Hedefler | (Uygulama) | Bilgi | URL Türleri | +
Kevin Sylvestre

Birisi "tercihler: kök" URL'sini kullandığı için reddedildiğini söyledi. stackoverflow.com/questions/8246070/…
Hlung

33

Güncelleme:

prefs: iOS 10'dan beri çalışmayacaktır.


4
Alternatif nedir?
OXXY

1
Bu çılgınca, çünkü bu resmi Apple Doc ( developer.apple.com/library/ios/qa/qa1924/_index.html ) kasıtlı olarak prefs sorununu ele alıyor ve 8/2/2016 tarihli.
daspianist

1
Bu belge, yalnızca klavye ayarları için kullanılması gerektiğini söylüyor (bu özel kullanım dışındaki herhangi bir şey ihlaldir.)
Peter Johnson

Maalesef iOS 10'daki klavye ayarları için bile çalışmıyor gibi görünüyor.
Girişimler

4
İken prefs:artık işin aşağıdaki (açılış genel azından) yapar:App-Prefs::root=Settings&path=General
daspianist

22

Evet, bunu (ve daha fazlasını) gördüm, hatta bir test uygulamasında uyguladım. Kesin kelimeyi Apple'dan almanız gerçekten gerekiyor, ancak topluluğun fikir birliği görüşü Apple, 5.1'de kamuya "keşfedildikten / yayınlandıktan" sonra buna izin vermedi, bu nedenle onu içeren uygulamalar kabul edilmeyecek.

08/01/12 Güncelleme: Geliştirici hesabım aracılığıyla Apple'a WiFi Ayarları iletişim kutusunu programlı olarak başlatmanın bir yolu olup olmadığı soruldu . İşte yanıt:

"Mühendislerimiz isteğinizi inceledi ve şu anda sevkıyat sistemi yapılandırmaları göz önüne alındığında istenen işlevselliği elde etmenin desteklenen bir yolu olmadığı sonucuna vardılar."


9
Bu özelliğe ihtiyaç duyan herkese resmi bir hata raporu kaydetmelerini öneririm. Ne kadar çok rapor edilirse, o kadar görünür hale gelir ve gelecekte desteklenen bir çözümün sunulma şansı o kadar artar. bugreport.apple.com
Matt Connolly

18

Gelen iOS 9 yine çalışıyor!

Ayarlar> Genel> Klavye'yi açmak için şunu kullanıyorum:

prefs:root=General&path=Keyboard

Üstelik Klavyelere daha uzağa gitmek mümkündür :

prefs:root=General&path=Keyboard/KEYBOARDS

Bunu PopKey uygulamasında fark ettim. URL'yi Ayarlar> Wi-Fi ayarları için denedim ve aynı zamanda çalışıyor. Umarım bu kalır.
Jamie McDaniel

Bu şemalar eklenecek gerekir mi LSApplicationQueriesSchemesiçinde info.plist?
Warpling

2
Hayır, yok. Sadece openURL: method ile kullanın.
Mikhail

1
Bunu bir web sayfasından ayarlara bağlanmak için kullanmaya çalışıyorum ve bir iPhone'da Safari'de çalışıyor, ancak iPad'de değil. Her ikisi de 9.0.2'de. Cidden mi, Apple?
Randy H.

3
Yine hedef için Prefs URL şeması eklemek için gerekli
pabucun

7

Bluetooth Menüsünü Ayarlar Uygulamasında açmak istedim ve yukarıdaki yol (tercihler: kök = Genel & yol = Bluetooth) benim için çalışmadı. Benim için işe yarayan şey

UIApplication.sharedApplication().openURL(NSURL(string:"prefs:root=Bluetooth")!)

prefsÖnce URL Şemasını tanımladığınızdan emin olun .


Bunun nedeni, Bluetooth menüsünün son iOS sürümlerinde taşınmış olmasıdır. Artık Genel altında değil, üst düzey bir ayardır .
Nate

@ İmran: Maddeyi unuttun prefs.
Michael Dorner

5

İOS10 için çözüm. İyi çalışıyor.

NSURL *URL = [NSURL URLWithString:@"App-prefs:root=TWITTER"];
[[UIApplication sharedApplication] openURL:URL options:@{} completionHandler:nil];

Bu yasal mı? Başarılı uygulama gönderimi, bunun yasal olduğu anlamına gelmez. Sonunda gelecekte başarısız olabilir ..
Stas

@Stas: Hayır, özel bir API olduğu için değil.
Tejas K

4

İOS10'dan itibaren kullanabilirsiniz

UIApplication.sharedApplication().openURL(NSURL(string:"App-Prefs:root")!) 

genel ayarları açmak için.

ayrıca belirli ayarları açmak için bilinen url'leri de ekleyebilirsiniz (bunları en çok oy verilen yanıtta görebilirsiniz). Örneğin aşağıdaki, touchID ve parolayı açar.

UIApplication.sharedApplication().openURL(NSURL(string:"App-Prefs:root=TOUCHID_PASSCODE")!)

1
"App-Prefs: root = TOUCHID_PASSCODE" iOS 11'de çalışmıyor. Başka bir çözüm var mı?
myaug

App-Prefsinceleme sırasında uygulamanın reddedilmesine yol açacak özel bir API'dir.
Tejas K

2

İşte bulduğum başka bir şey:

  1. "Prefs" URL Şemasını tanımladıktan sonra, "prefs: root = Safari & path = ContentBlockers" Simulator (iOS 9.1 İngilizce ) üzerinde çalışıyor, ancak Simulator (Basitleştirilmiş Çince) üzerinde çalışmıyor . Yalnızca Safari'ye atlar, ancak İçerik Engelleyicileri değil. Uygulamanız uluslararası ise dikkatli olun.
    Güncelleme: Nedenini bilmiyorum, şimdi artık ContentBlockers'a atlayamıyorum, aynı kod, aynı sürüm artık çalışmıyor. :(

  2. Gerçek cihazlarda (benimki iPhone 6S ve iPad mini 2), "Safari" "SAFARI" olmalı , "Safari" gerçek cihazda çalışmıyor, "SAFARI" simülatörde çalışıyor:

    #if arch(i386) || arch(x86_64)
        // Simulator
        let url = NSURL(string: "prefs:root=Safari")!
    #else
        // Device
        let url = NSURL(string: "prefs:root=SAFARI")!
    #endif
    
    if UIApplication.sharedApplication().canOpenURL(url) {
        UIApplication.sharedApplication().openURL(url)
    }
    
  3. Şu ana kadar iPhone ile iPad arasında herhangi bir fark bulamadık.


Bunu hiç çalıştırdın mı? Değilse çok yazık!
Ryan Brodie

@RyanBrodie "Böyle bir utanç" derken neyi kastediyorsunuz?
Kaiyuan Xu

Bu çok talihsiz bir durum, doğrudan Safari'nin İçerik Engelleyici ayarlarına bağlanmak harika olur
Ryan Brodie

6
@RyanBrodie Çalışabilse bile, şu anda App Store Uygulamaları için kullanmamanızı öneririm, bu sabah iTunes Connect'ten bir "reddedildi", çünkü "prefs: root" özel bir API'dir (uygulamalar var tercihleri kullanarak: root App Store üzerinde ... Allah biliyor neden)
Kaiyuan Xu

Uyarılar için çok teşekkür ettiğimi fark etmemiştim!
Ryan Brodie

2

IOS 10'daki Uygulama Bildirimi ayarları için İyi Çalışıyor (test edildi)

if(&UIApplicationOpenSettingsURLString != nil){
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];
}


0

Burada bir haberi güncelliyorum. 'Tercihler:' kullanmak yalnızca Apple tarafından REDDEDİLMEZ, test ettim ve uygulama mağazasında onaylandığını kontrol ettim (Ağustos 2016'da). Teşekkür.


Bunu [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=DO_NOT_DISTURB"]];cihazın açık DND Ayarı için kullanıyorum . Apple bunu reddedecek mi?
Shreyank

Yalnızca incelemeyi geçmiş miydi yoksa işe yarıyor mu? Yani openURL sizi ayarlara götürüyor mu? Benim tarafımda işe yaramadı.
Ahmet Akkök
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.