Cài đặt khởi chạy iOS -> Lược đồ URL hạn chế


86

Gần đây tôi đã khám phá ra Lược đồ URL cài đặt tùy chỉnh iOS5 tuyệt vời , có thể được giải thích chi tiết tại trang web tuyệt vời này .

Tôi thấy điều này hoạt động, hướng người dùng đến ứng dụng Cài đặt từ ứng dụng của tôi:

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

Nhưng dường như không thể định tuyến trực tiếp đến đường dẫn Restrictions thông qua paththam số:

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

Có ai tìm thấy tài liệu về điều này hoặc có thể làm cho nó hoạt động?

Bất kỳ cái nhìn sâu sắc sẽ được đánh giá rất nhiều. Tôi đang cố gắng đưa người dùng bật tính năng mua hàng trong ứng dụng và không muốn người dùng nhấp vào Hạn chế theo cách thủ công (không rõ ràng lắm).


2
có ai biết url cho Touch ID & Mật mã không?
Fabian Köbel

1
sử dụng cái này cho id cảm ứng: prefs: root = TOUCHID_PASSCODE ( stackoverflow.com/questions/35410746/… )
Fabian Köbel

Câu trả lời:


144

NHƯ CÂU TRẢ LỜI CỦA @Nix Wang ĐÂY KHÔNG HOẠT ĐỘNG TRONG IOS 10


CẢNH BÁO: Phương pháp này sẽ không hoạt động đối với các thiết bị chạy iOS 5.1 trở lên - Xem bình luận của Hlung bên dưới.

Có thể paththành phần có tên khác với phần thực, nhưng cũng có thể bạn hiện không thể truy cập phần đó ngay từ một URL. Tôi đã tìm thấy một danh sách các URL có thể có và các Hạn chế không có trên đó, có lẽ nó vẫn chưa được tìm ra.

Danh sách các URL hiện đã biết trong ứng dụng Cài đặt:

  • prefs: root = General & path = About
  • prefs: root = General & path = ACCESSIBILITY
  • prefs: root = AIRPLANE_MODE
  • prefs: root = General & path = AUTOLOCK
  • prefs: root = General & path = USAGE / CELLULAR_USAGE
  • prefs: root = Độ sáng
  • prefs: root = General & path = Bluetooth
  • prefs: root = General & path = DATE_AND_TIME
  • prefs: root = FACETIME
  • prefs: root = General
  • prefs: root = General & path = Bàn phím
  • prefs: root = CASTLE
  • prefs: root = CASTLE & path = STORAGE_AND_BACKUP
  • prefs: root = General & path = INTERNATIONAL
  • prefs: root = LOCATION_SERVICES
  • prefs: root = ACCOUNT_SETTINGS
  • prefs: root = MUSIC
  • prefs: root = MUSIC & path = EQ
  • prefs: root = MUSIC & path = VolumeLimit
  • prefs: root = General & path = Network
  • prefs: root = NIKE_PLUS_IPOD
  • prefs: root = NOTES
  • prefs: root = NOTIFICATIONS_ID
  • prefs: root = Điện thoại
  • prefs: root = Ảnh
  • prefs: root = General & path = ManagedConfigurationList
  • prefs: root = General & path = Reset
  • prefs: root = Sounds & path = Ringtone
  • prefs: root = Safari
  • prefs: root = General & path = Assistant
  • prefs: root = Sounds
  • prefs: root = General & path = SOFTWARE_UPDATE_LINK
  • prefs: root = STORE
  • prefs: root = TWITTER
  • prefs: root = General & path = USAGE
  • prefs: root = VIDEO
  • prefs: root = General & path = Network / VPN
  • prefs: root = Wallpaper
  • prefs: root = WIFI
  • prefs: root = INTERNET_TETHERING

54
Chỉ là một cảnh báo nhỏ, idownloadblog.com/2011/11/29/iphone-5-1-disables-shortcuts cho biết rằng tất cả các lược đồ url cho cài đặt iOS sẽ bị xóa trong iOS5.1 (vì vậy các url như prefs: root = General & path = Network sẽ không còn hoạt động) Vì vậy, hãy lưu ý.
Hlung 23/02/12

3
Chúng không hoàn toàn bị loại bỏ, bạn chỉ cần đặt các liên kết URL này vào một nút trong UIAlertView. Vì vậy, chỉ cần đặt một cảnh báo trong UIAlertView rằng ứng dụng này sẽ đi đến nền và các thiết lập sẽ mở ra và sau đó OK và Cancel, vv
zambono

4
Nó không còn hoạt động nữa, nó đã hoạt động trên một trong các ứng dụng của tôi một thời gian nhưng không còn nữa.
zambono

5
Tính đến iOS8 bạn có thể khởi động được xây dựng trong ứng dụng với các url Cài đặt:[NSURL URLWithString:UIApplicationOpenSettingsURLString]
Jason Moore

2
Bất kỳ giải pháp / thay thế cho ios10 xin vui lòng.
ranjit.x.singh

48

Kể từ iOS8, bạn có thể mở ứng dụng Cài đặt tích hợp bằng:

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

Chuỗi URL thực là @"app-settings:". Tôi đã thử nối các phần khác nhau vào chuỗi ("Bluetooth", "CHUNG", v.v.) nhưng dường như chỉ liên kết đến màn hình Cài đặt chính mới hoạt động. Đăng trả lời nếu bạn thấy khác.


10
Đó là bởi vì cuộc gọi cụ thể đó là URL khởi chạy cài đặt. Nó mở cài đặt tùy chỉnh của ứng dụng nếu chúng tồn tại. Nếu không, nó chỉ mở ứng dụng Cài đặt ra màn hình chính. developer.apple.com/library/ios/documentation/UIKit/Reference/…
JAL

1
Câu trả lời tuyệt vời nếu ứng dụng của bạn có cài đặt cụ thể mà bạn muốn bật / tắt. Tất cả ở một nơi và không phải điều hướng người dùng qua Cài đặt để đến cấu hình mong muốn. Cảm ơn!
kyleturner

1
@ FabianKöbel bạn có thể tìm thấy một cái cho TouchID & Mật mã không?
ShayanK

1
@AspersionCast: bạn có thể sử dụng cái này: prefs: root = TOUCHID_PASSCODE ( stackoverflow.com/questions/35410746/… )
Fabian Köbel

Đây dường như là phương pháp duy nhất hiện được Apple chấp thuận để khởi chạy ứng dụng Cài đặt.
u2Fan

42

Nếu bạn thêm lược đồ URL prefs vào ứng dụng iOS của mình, nó sẽ cho phép bạn sử dụng tất cả các lược đồ đó mà chúng tôi có thể có trong iOS 5. Tôi đã thử nghiệm nó trên iOS 9, nhưng tôi nghĩ nó cũng sẽ hoạt động trên các phiên bản cũ hơn.


Thủ thuật này chỉ hoạt động bắt đầu từ iOS 8 khi không cần thiết.
Valeriy Van

1
Nhưng tương tự trong iOS 8, bạn không được phép mở cài đặt WiFi, ví dụ: nếu bạn không thêm URL này vào ứng dụng của mình.
Pedro Tôrres

Vâng, bạn đã đúng. Không nghĩ về trường hợp sử dụng này.
Valeriy Van

9
@conorgriffin Đối với bạn và bất kỳ ai khác thắc mắc cài đặt này nằm trong: Mục tiêu | (Ứng dụng) | Thông tin | Các loại URL | +
Kevin Sylvestre

Ai đó nói rằng anh ta đã bị từ chối vì sử dụng url "prefs: root". stackoverflow.com/questions/8246070/…
Hlung

33

Cập nhật:

prefs: sẽ KHÔNG hoạt động kể từ iOS 10.


4
Giải pháp thay thế là gì?
OXXY

1
Thật là điên rồ, vì Apple Doc chính thức này ( developer.apple.com/library/ios/qa/qa1924/_index.html ) cố tình giải quyết vấn đề prefs và ngày 8/2/2016.
daspianist

1
Đó doc không nói chỉ sử dụng nó cho các thiết lập bàn phím (bất cứ điều gì khác hơn so với sử dụng cụ thể là vi phạm.)
Peter Johnson

Thật không may, nó dường như không hoạt động ngay cả đối với cài đặt bàn phím trong iOS 10.
Intrications

4
Trong khi prefs:không còn làm việc, sau đây làm (ít nhất là nói chung mở):App-Prefs::root=Settings&path=General
daspianist

22

Đúng, đã thấy điều này (và nhiều hơn nữa), thậm chí đã triển khai nó trong một ứng dụng thử nghiệm. Thực sự cần phải nhận được lời nói dứt khoát từ Apple, nhưng ý kiến ​​đồng thuận của cộng đồng là Apple đã không cho phép nó trong 5.1 sau khi nó được "phát hiện / công bố" công khai, vì vậy các ứng dụng có chứa nó sẽ không được chấp nhận.

Cập nhật 08/01/12: Đã hỏi Apple thông qua tài khoản nhà phát triển của tôi xem có cách nào để khởi chạy hộp thoại Cài đặt WiFi theo chương trình không. Đây là phản hồi:

"Các kỹ sư của chúng tôi đã xem xét yêu cầu của bạn và kết luận rằng không có cách nào được hỗ trợ để đạt được chức năng mong muốn dựa trên cấu hình hệ thống vận chuyển hiện tại."


9
Tôi khuyên bất kỳ ai cần tính năng này đăng nhập một báo cáo lỗi chính thức. Nó càng được báo cáo nhiều, nó sẽ càng hiển thị và có cơ hội tốt hơn để đưa ra một giải pháp được hỗ trợ trong tương lai. bugreport.apple.com
Matt Connolly

18

Trong iOS 9, nó hoạt động trở lại!

Để mở Cài đặt> Chung> Bàn phím , tôi sử dụng:

prefs:root=General&path=Keyboard

Hơn nữa, có thể tiến xa hơn đến Bàn phím :

prefs:root=General&path=Keyboard/KEYBOARDS

Tôi chỉ nhận thấy điều này trong ứng dụng PopKey. Tôi đã thử url cho Cài đặt> Cài đặt Wi-Fi và nó cũng hoạt động. Hãy hy vọng điều này vẫn còn.
Jamie McDaniel

Những chương trình này có cần được thêm LSApplicationQueriesSchemesvào info.plistkhông?
Warpling

2
Không, họ không. Chỉ cần sử dụng nó với phương thức openURL:.
Mikhail

1
Tôi đang cố gắng sử dụng điều này để liên kết đến cài đặt từ một trang web và nó dường như hoạt động trong Safari trên iPhone chứ không phải iPad. Cả hai đều trên 9.0.2. Nghiêm túc đấy, Apple?
Randy H.

3
Vẫn cần thêm lược đồ URL prefs để nhắm mục tiêu
shim

7

Tôi muốn mở Menu Bluetooth trong Ứng dụng Cài đặt và đường dẫn trên (prefs: root = General & path = Bluetooth) không hoạt động với tôi. Điều gì đã kết thúc với tôi là

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

Đảm bảo rằng bạn đã prefsxác định Lược đồ URL trước.


Điều này là do menu Bluetooth đã được di chuyển trong các phiên bản iOS gần đây. Bây giờ nó là một cài đặt cấp cao nhất, không phải trong General .
Nate

@Imran: Bạn quên prefs-stuff.
Michael Dorner

5

Giải pháp cho iOS10. Hoạt động tốt.

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

Thế này có hợp pháp không đấy? Gửi ứng dụng thành công không có nghĩa là điều này hợp pháp. Cuối cùng nó có thể thất bại trong tương lai ..
Stas

@Stas: Không, không phải vậy, vì nó là một API riêng.
Tejas K

4

Kể từ iOS10, bạn có thể sử dụng

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

để mở cài đặt chung.

Ngoài ra, bạn có thể thêm các url đã biết (bạn có thể thấy chúng trong câu trả lời được ủng hộ nhiều nhất) vào nó để mở các cài đặt cụ thể. Ví dụ: cái bên dưới mở touchID và mật mã.

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

1
"App-Prefs: root = TOUCHID_PASSCODE" không hoạt động trên iOS 11. Có giải pháp nào khác không?
myaug

App-Prefslà một API riêng tư sẽ dẫn đến ứng dụng bị từ chối trong quá trình xem xét.
Tejas K

2

Đây là một cái gì đó khác mà tôi tìm thấy:

  1. Sau khi tôi đã xác định Lược đồ URL "prefs", "prefs: root = Safari & path = ContentBlockers" đang hoạt động trên Simulator (iOS 9.1 tiếng Anh ), nhưng không hoạt động trên Simulator (tiếng Trung giản thể) . Nó chỉ chuyển đến Safari, nhưng không chuyển sang Trình chặn nội dung. Nếu ứng dụng của bạn là quốc tế, hãy cẩn thận.
    Cập nhật: Không biết tại sao, bây giờ tôi không thể nhảy vào ContentBlockers nữa, cùng một đoạn mã, cùng một phiên bản, giờ không hoạt động được. :(

  2. Trên thiết bị thực (của tôi là iPhone 6S & iPad mini 2), "Safari" phải là "SAFARI" , "Safari" không hoạt động trên thiết bị thực, "SAFARI" hiện đang hoạt động trên trình mô phỏng:

    #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. Cho đến nay, không tìm thấy bất kỳ sự khác biệt nào giữa iPhone và iPad.


Bạn đã bao giờ làm cho nó hoạt động trở lại? Thật là xấu hổ nếu không!
Ryan Brodie

@RyanBrodie Ý bạn là gì khi nói "thật xấu hổ"?
Kaiyuan Xu

Rằng đó là rất đáng tiếc, sẽ là tuyệt vời để liên kết trực tiếp vào các thiết lập Blocker Nội dung của Safari
Ryan Brodie

6
@RyanBrodie Ngay cả khi nó có thể hoạt động, tôi khuyên bạn không nên sử dụng nó cho Ứng dụng trên App Store ngay bây giờ, tôi vừa nhận được "từ chối" từ iTunes Connect sáng nay, vì "prefs: root" là một API riêng (có những ứng dụng sử dụng prefs: root trên App Store ... Thiên Chúa biết tại sao)
Kaiyuan Xu

Tôi đã không nhận ra rằng cảm ơn bạn rất nhiều vì những người đứng đầu!
Ryan Brodie

2

Hoạt động tốt cho cài đặt Thông báo ứng dụng trên IOS 10 (đã thử nghiệm)

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


0

Tôi đang cập nhật một tin tức ở đây. Chỉ sử dụng 'prefs:' KHÔNG bị Apple từ chối, tôi đã thử nghiệm nó và kiểm tra được chấp thuận cho cửa hàng ứng dụng (vào tháng 8 năm 2016). cám ơn.


tôi đang sử dụng cái này [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=DO_NOT_DISTURB"]];để mở Cài đặt DND của thiết bị. Apple sẽ từ chối điều này?
Shreyank

Nó chỉ vượt qua đánh giá hay nó cũng hoạt động? Ý tôi là openURL có đưa bạn đến cài đặt không? Nó đã không hoạt động về phía tôi.
Ahmet Akkök
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.