Pengaturan Peluncuran iOS -> Pembatasan Skema URL

86

Saya baru-baru ini menemukan Skema URL Pengaturan kustom iOS5 yang mengagumkan , yang dapat dijelaskan secara rinci di situs web hebat ini .

Saya telah menemukan ini untuk bekerja, mengarahkan pengguna ke aplikasi Pengaturan dari aplikasi saya:

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

Tetapi tampaknya tidak dapat merutekan langsung ke jalur Pembatasan melalui pathparameter:

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

Adakah yang menemukan dokumentasi tentang ini atau mampu membuat ini bekerja?

Setiap wawasan akan sangat dihargai. Saya mencoba mengajak pengguna untuk mengaktifkan pembelian dalam Aplikasi, dan lebih suka pengguna tidak mengklik Batasan secara manual (tidak terlalu jelas).

kturner
sumber
2
apakah ada yang tahu url untuk Touch ID & Passcode?
Fabian Köbel
1
gunakan ini untuk touch id: prefs: root = TOUCHID_PASSCODE ( stackoverflow.com/questions/35410746/… )
Fabian Köbel

Jawaban:

144

SEBAGAI JAWABAN @Nix Wang , INI TIDAK BEKERJA DI IOS 10


PERINGATAN: Metode ini tidak akan berfungsi untuk perangkat yang menjalankan iOS 5.1 dan yang lebih baru - Lihat komentar Hlung di bawah.

Mungkin saja pathkomponen tersebut memiliki nama yang berbeda dari bagian yang sebenarnya, tetapi mungkin juga Anda saat ini tidak dapat mengakses bagian tersebut langsung dari URL. Saya menemukan daftar kemungkinan URL dan Pembatasan tidak ada di dalamnya, mungkin itu belum ditemukan.

Daftar URL yang saat ini dikenal di aplikasi Pengaturan:

  • prefs: root = Umum & path = Tentang
  • prefs: root = Umum & path = AKSESIBILITAS
  • prefs: root = AIRPLANE_MODE
  • prefs: root = Umum & jalur = AUTOLOCK
  • prefs: root = General & path = USAGE / CELLULAR_USAGE
  • prefs: root = Kecerahan
  • prefs: root = Umum & path = Bluetooth
  • prefs: root = Umum & jalur = DATE_AND_TIME
  • prefs: root = FACETIME
  • prefs: root = Umum
  • prefs: root = Umum & jalur = Papan Ketik
  • prefs: root = CASTLE
  • prefs: root = CASTLE & path = STORAGE_AND_BACKUP
  • prefs: root = Umum & path = INTERNASIONAL
  • prefs: root = LOCATION_SERVICES
  • prefs: root = ACCOUNT_SETTINGS
  • prefs: root = MUSIC
  • prefs: root = MUSIC & path = EQ
  • prefs: root = MUSIC & path = VolumeLimit
  • prefs: root = Umum & path = Jaringan
  • prefs: root = NIKE_PLUS_IPOD
  • prefs: root = CATATAN
  • prefs: root = NOTIFICATIONS_ID
  • prefs: root = Telepon
  • prefs: root = Foto
  • prefs: root = Umum & path = ManagedConfigurationList
  • prefs: root = Umum & jalur = Setel Ulang
  • prefs: root = Sounds & path = Ringtone
  • prefs: root = Safari
  • prefs: root = Umum & path = Asisten
  • prefs: root = Suara
  • prefs: root = Umum & jalur = SOFTWARE_UPDATE_LINK
  • prefs: root = STORE
  • prefs: root = TWITTER
  • prefs: root = Umum & path = PENGGUNAAN
  • prefs: root = VIDEO
  • prefs: root = Umum & jalur = Jaringan / VPN
  • prefs: root = Wallpaper
  • prefs: root = WIFI
  • prefs: root = INTERNET_TETHERING
Henri Normak
sumber
54
Sekadar peringatan, idownloadblog.com/2011/11/29/iphone-5-1-disables-shortcuts mengatakan bahwa semua skema url ke pengaturan iOS akan dihapus di iOS5.1 (jadi url seperti prefs: root = General & path = Network tidak akan bekerja lagi) Jadi, harap diperhatikan.
Hlung
3
Mereka tidak sepenuhnya dihapus Anda hanya perlu meletakkan tautan URL ini di sebuah tombol di UIAlertView. Jadi cukup taruh peringatan di UIAlertView bahwa aplikasi akan pergi ke latar belakang dan pengaturan akan terbuka dan kemudian OK, dan Batal dll.
zambono
4
Ini tidak lagi berfungsi, itu berfungsi di salah satu aplikasi saya beberapa waktu yang lalu tetapi sekarang tidak lagi.
zambono
5
Pada iOS8 Anda dapat meluncurkan aplikasi Pengaturan built-in dengan url:[NSURL URLWithString:UIApplicationOpenSettingsURLString]
Jason Moore
2
Solusi / alternatif apa pun untuk ios10.
ranjit.x.singh
48

Mulai iOS8, Anda dapat membuka aplikasi Pengaturan bawaan dengan:

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

String URL sebenarnya adalah @"app-settings:". Saya mencoba menambahkan bagian yang berbeda ke string ("Bluetooth", "GENERAL", dll.) Tetapi tampaknya hanya menautkan ke layar Pengaturan utama yang berfungsi. Posting balasan jika Anda menemukan sebaliknya.

Jason Moore
sumber
10
Itu karena panggilan khusus itu adalah Settings Launch URL. Ini membuka pengaturan khusus aplikasi jika ada. Jika tidak, itu hanya membuka aplikasi Pengaturan ke layar utama. developer.apple.com/library/ios/documentation/UIKit/Reference/…
JAL
1
Jawaban fantastis jika aplikasi Anda memiliki pengaturan khusus yang ingin Anda aktifkan / nonaktifkan. Semua di satu tempat dan tidak perlu mengarahkan pengguna melalui Pengaturan untuk mendapatkan konfigurasi yang diinginkan. Terima kasih!
kyleturner
1
@ FabianKöbel dapatkah Anda menemukan satu untuk TouchID & Passcode?
ShayanK
1
@AspersionCast: Anda dapat menggunakan ini: prefs: root = TOUCHID_PASSCODE ( stackoverflow.com/questions/35410746/… )
Fabian Köbel
Tampaknya ini satu-satunya metode yang saat ini disetujui Apple untuk meluncurkan aplikasi Pengaturan.
u2Fan
42

Jika Anda menambahkan skema URL prefs ke aplikasi iOS Anda, itu akan memungkinkan Anda untuk menggunakan semua skema yang kami bisa di iOS 5. Saya telah mengujinya di iOS 9, tetapi saya pikir ini akan bekerja pada versi yang lebih lama juga.

Pedro Tôrres
sumber
Trik ini hanya berfungsi memulai iOS 8 di mana tidak diperlukan.
Valeriy Van
1
Tetapi sama di iOS 8 Anda tidak diizinkan untuk membuka pengaturan WiFi, misalnya, jika Anda tidak menambahkan URL ini, malu untuk aplikasi Anda.
Pedro Tôrres
Ya kamu benar. Tidak memikirkan kasus penggunaan ini.
Valeriy Van
9
@conorgriffin Untuk Anda dan siapa pun yang bertanya-tanya tentang pengaturan berada di bawah: Target | (Aplikasi) | Info | Jenis URL | +
Kevin Sylvestre
Seseorang mengatakan dia ditolak karena menggunakan url "prefs: root". stackoverflow.com/questions/8246070/…
Hlung
33

Memperbarui:

prefs: TIDAK akan berfungsi sejak iOS 10.

Nix Wang
sumber
4
Apa alternatifnya?
OXXY
1
Itu gila, karena Apple Doc resmi ini ( developer.apple.com/library/ios/qa/qa1924/_index.html ) dengan sengaja menangani masalah prefs, dan tertanggal 8/2/2016.
daspianist
1
Dokumen itu mengatakan hanya menggunakannya untuk pengaturan keyboard (apa pun selain penggunaan khusus itu adalah pelanggaran.)
Peter Johnson
Sayangnya itu tampaknya tidak berfungsi bahkan untuk pengaturan keyboard di iOS 10.
Intrications
4
Meskipun prefs:tidak lagi berfungsi, berikut ini (setidaknya dalam pembukaan umum):App-Prefs::root=Settings&path=General
daspianist
22

Ya, melihat ini (dan banyak lagi), bahkan menerapkannya dalam aplikasi pengujian. Benar-benar perlu mendapatkan kata definitif dari Apple, tetapi pendapat konsensus komunitas adalah Apple melarangnya di 5.1 setelah "ditemukan / dipublikasikan" secara publik, sehingga aplikasi yang berisi itu tidak akan diterima.

Pembaruan 08/01/12: Menanyakan Apple melalui akun pengembang saya apakah ada cara untuk meluncurkan dialog Pengaturan WiFi secara terprogram. Berikut tanggapannya:

"Teknisi kami telah meninjau permintaan Anda dan menyimpulkan bahwa tidak ada cara yang didukung untuk mencapai fungsionalitas yang diinginkan mengingat konfigurasi sistem pengiriman saat ini."

Dan
sumber
9
Saya merekomendasikan siapa saja yang membutuhkan fitur ini untuk mencatat laporan bug resmi. Semakin banyak dilaporkan, semakin terlihat dan peluang yang lebih baik bahwa solusi yang didukung dapat disajikan di masa mendatang. bugreport.apple.com
Matt Connolly
18

Di iOS 9 ini berfungsi lagi!

Untuk membuka Pengaturan> Umum> Keyboard , saya menggunakan:

prefs:root=General&path=Keyboard

Selain itu, dimungkinkan untuk melangkah lebih jauh ke Keyboard :

prefs:root=General&path=Keyboard/KEYBOARDS
Mikhail
sumber
Saya baru saja memperhatikan ini di aplikasi PopKey. Saya mencoba url untuk Pengaturan> Pengaturan Wi-Fi dan berfungsi juga. Semoga ini tetap ada.
Jamie McDaniel
Apakah skema ini perlu ditambahkan ke LSApplicationQueriesSchemesdalam info.plist?
Warpling
2
Tidak, mereka tidak melakukannya. Cukup gunakan dengan metode openURL :.
Mikhail
1
Saya mencoba menggunakan ini untuk menautkan ke pengaturan dari halaman web dan tampaknya berfungsi di Safari pada iPhone tetapi tidak di iPad. Keduanya ada di 9.0.2. Serius, Apple?
Randy H.
3
Masih perlu menambahkan skema URL prefs ke target
shim
7

Saya ingin membuka Menu Bluetooth di Aplikasi Pengaturan dan jalur di atas (prefs: root = General & path = Bluetooth) tidak berfungsi untuk saya. Apa yang akhirnya berhasil untuk saya adalah

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

Pastikan Anda telah menentukan prefsSkema URL terlebih dahulu.

Mahesh
sumber
Ini karena menu Bluetooth telah dipindahkan di versi iOS terbaru. Sekarang pengaturan tingkat atas, bukan di bawah Umum .
Nate
@Imran: Anda lupa prefs-barang.
Michael Dorner
5

Solusi untuk iOS10. Bekerja dengan baik.

NSURL *URL = [NSURL URLWithString:@"App-prefs:root=TWITTER"];
[[UIApplication sharedApplication] openURL:URL options:@{} completionHandler:nil];
Pengembang pararmswar
sumber
Apakah ini sah? Pengiriman aplikasi yang berhasil tidak berarti ini sah. Mungkin pada akhirnya akan gagal di masa depan ..
Stas
@Stas: Tidak, karena ini adalah API pribadi.
Tejas K
4

Mulai iOS10, Anda dapat menggunakan

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

untuk membuka pengaturan umum.

Anda juga dapat menambahkan url yang dikenal (Anda dapat melihatnya di jawaban yang paling disukai) ke sana untuk membuka pengaturan tertentu. Misalnya yang di bawah ini membuka touchID dan kode sandi.

UIApplication.sharedApplication().openURL(NSURL(string:"App-Prefs:root=TOUCHID_PASSCODE")!)
mkeremkeskin.dll
sumber
1
"App-Prefs: root = TOUCHID_PASSCODE" tidak berfungsi di iOS 11. Ada solusi lain?
myaug
App-Prefsadalah API pribadi yang akan menyebabkan aplikasi ditolak selama peninjauan.
Tejas K
2

Ini hal lain yang saya temukan:

  1. Setelah saya menetapkan Skema URL "prefs", "prefs: root = Safari & path = ContentBlockers" berfungsi pada Simulator (iOS 9.1 Inggris ), tetapi tidak berfungsi pada Simulator (Aksara China Sederhana) . Itu hanya melompat ke Safari, tetapi bukan Pemblokir Konten. Jika aplikasi Anda internasional, berhati-hatilah.
    Pembaruan: Tidak tahu mengapa, sekarang saya tidak bisa beralih ke ContentBlockers lagi, kode yang sama, versi yang sama, tidak berfungsi sekarang. :(

  2. Pada perangkat nyata (milik saya adalah iPhone 6S & iPad mini 2), "Safari" seharusnya "SAFARI" , "Safari" tidak berfungsi di perangkat nyata, "SAFARI" sekarang berfungsi pada simulator:

    #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. Sejauh ini, tidak ditemukan adanya perbedaan antara iPhone dan iPad.

Kaiyuan Xu
sumber
Apakah Anda pernah membuatnya berfungsi lagi? Sayang sekali jika tidak!
Ryan Brodie
@RyanBrodie Apa yang Anda maksud dengan "memalukan"?
Kaiyuan Xu
Sangat disayangkan, akan sangat bagus untuk menautkan langsung ke pengaturan Pemblokir Konten Safari
Ryan Brodie
6
@RyanBrodie Meskipun dapat berfungsi, saya sarankan Anda tidak menggunakannya untuk Aplikasi App Store sekarang, saya baru saja mendapat "ditolak" dari iTunes Connect pagi ini, karena "prefs: root" adalah API pribadi (ada aplikasi menggunakan prefs: root di App Store ... Tuhan yang tahu mengapa)
Kaiyuan Xu
Saya tidak menyadari bahwa terima kasih banyak atas perhatiannya!
Ryan Brodie
2

Berfungsi dengan baik untuk pengaturan Notifikasi Aplikasi pada IOS 10 (diuji)

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

iOS 10

Menggunakan app-prefs:

App-prefs:root=MOBILE_DATA_SETTINGS_ID

Lihat intinya

Alex Hedley
sumber
0

Saya memperbarui satu berita di sini. Menggunakan 'prefs:' saja TIDAK ditolak oleh Apple, saya mengujinya dan memeriksa disetujui ke app store (pada Agustus 2016). Terima kasih.

KoreanXcodeWorker
sumber
Saya menggunakan ini [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=DO_NOT_DISTURB"]];untuk membuka Pengaturan DND perangkat. Apple akan menolak ini?
Shreyank
Apakah hanya lulus review atau apakah itu juga berfungsi? Maksud saya apakah openURL membawa Anda ke pengaturan? Itu tidak berhasil di sisi saya.
Ahmet Akkök