Mở ứng dụng Cài đặt từ một ứng dụng khác


180

Được rồi, tôi biết rằng có rất nhiều câu hỏi về nó, nhưng tất cả chúng đều từ nhiều thời gian trước.

Vì thế. Tôi biết rằng điều đó là có thể bởi vì ứng dụng Bản đồ thực hiện điều đó.

Trong ứng dụng Bản đồ nếu tôi tắt bản địa hóa cho ứng dụng này, nó sẽ gửi cho tôi một tin nhắn và nếu tôi nhấn ổn, "Ứng dụng cài đặt" sẽ được mở. Và câu hỏi của tôi là, làm thế nào điều này có thể? Làm cách nào tôi có thể mở "Cài đặt ứng dụng" từ ứng dụng của mình?

Về cơ bản tôi cần phải làm điều tương tự, nếu người dùng tắt vị trí cho ứng dụng của tôi, thì tôi sẽ hiển thị cho anh ta một thông báo nói điều gì đó sẽ mở "Cài đặt ứng dụng"



1
Bạn có thể mở ứng dụng cài đặt theo chương trình trong iOS8 (nhưng không phải trong các phiên bản thấp hơn của iOS) .code dưới đây trong câu trả lời.
Karan Dua

Câu trả lời:


291

Như Karan Dua đã đề cập, điều này hiện có thể có trong iOS8 bằng cách UIApplicationOpenSettingsURLStringxem Tài liệu của Apple .

Thí dụ:

Swift 4.2

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

Trong Swift 3:

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

Trong Swift 2:

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

Trong Mục tiêu-C

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

Trước iOS 8:

Bạn không thể. Như bạn đã nói điều này đã được đề cập nhiều lần và việc bật lên yêu cầu bạn bật các dịch vụ định vị được cung cấp bởi Apple chứ không phải bởi chính Ứng dụng. Đó là lý do tại sao nó có thể mở ứng dụng cài đặt.

Dưới đây là một vài câu hỏi và bài viết liên quan:

Có thể mở Ứng dụng Cài đặt bằng openURL không?

Lập trình mở ứng dụng cài đặt (iPhone)

Làm cách nào để mở ứng dụng Cài đặt khi người dùng nhấn nút?

iPhone: Mở Bảng tùy chọn ứng dụng từ ứng dụng

Mở UIPickerView bằng cách nhấp vào mục trong tùy chọn của ứng dụng - Cách thực hiện?

Mở ứng dụng Cài đặt?

iOS: Bạn đang cài đặt sai


Nếu bạn cần một câu trả lời có thẩm quyền hơn, bạn có thể thử hỏi trên diễn đàn Apple Developer < developer.apple.com/devforums > hoặc gửi lỗi tại < developer.apple.com/ormsreporter > - nếu đó là sự cố đã biết thì sẽ quay lại là "hành xử chính xác" hoặc một bản sao của lỗi ban đầu.
Vincent Gable


2
Điều này hiện có thể có trong iOS 8 bằng cách sử dụng [NSURL URLWithString: UIApplicationOpenSinstallURLString]
LightningStryk

1
trong swift 3 - UIApplication. Shared.openURL (URL (chuỗi: UIApplicationOpenSinstallURLString)!)
GMHSJ

1
Hãy cảnh giác khi sử dụng phương pháp này. Tôi đã sử dụng nó và một vài tháng sau, ứng dụng của tôi đã bị từ chối với thông báo sau từ Apple: Ứng dụng của bạn sử dụng lược đồ URL không công khai "prefs: root =", là một thực thể riêng tư. Việc sử dụng API không công khai không được phép trên App Store vì điều này có thể dẫn đến trải nghiệm người dùng kém nếu các API này thay đổi. Việc tiếp tục sử dụng hoặc che giấu các API không công khai trong các lần gửi tương lai của ứng dụng này có thể dẫn đến việc chấm dứt tài khoản Nhà phát triển Apple của bạn, cũng như xóa tất cả các ứng dụng được liên kết khỏi App Store.
Nick Kirsten

133

Từ câu trả lời của @Yediteshaless :

Bạn có thể mở ứng dụng cài đặt theo chương trình trong iOS8, nhưng không phải trong các phiên bản iOS trước đó.

Nhanh:

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

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

Mục tiêu-C:

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

23
Điều này xuất hiện để mở phần ứng dụng của bạn trong ứng dụng Cài đặt. Người dùng sẽ phải nhấn Back một vài lần để xem màn hình chính của Cài đặt.
wjl

1
Chỉnh sửa nhỏ ..[[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];
Paito

10
@Paito Dòng trên đang hướng đến cài đặt riêng của ứng dụng . Có cách nào để chuyển trực tiếp đến phần riêng tư của cài đặt thiết bị không? Hãy bình luận nếu bạn biết. Chuyển hướng này là có thể, vì tôi đã tìm thấy nó trong ứng dụng bản đồ nơi nó hướng đến cài đặt vị trí trong phần riêng tư.
Pavan Kotesh

1
Chỉnh sửa Swift nhỏ: UIApplication. SharedApplication (). OpenURL (NSURL (chuỗi: UIApplicationOpenSinstallURLString)!)
vbezhenar

1
@ PavanKotesh- Có nhưng cài đặt ứng dụng sẽ có những gì bạn cần cho phép, trong trường hợp của tôi, tôi cần quyền truy cập vào danh bạ, xuất hiện trong cài đặt ứng dụng có mã ở trên.
Tejas K

58

ĐÚNG!! bạn có thể khởi chạy màn hình Cài đặt thiết bị, tôi đã thử nghiệm trên iOS 9.2

Bước 1. chúng ta cần thêm các lược đồ URL

Chuyển đến Cài đặt dự án -> Thông tin -> Loại URL -> Thêm lược đồ URL mới

nhập mô tả hình ảnh ở đây

Bước 2. Khởi chạy Cài đặt theo chương trình Nhờ @davidcann

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

Ngoài ra, chúng tôi cũng có thể khởi chạy các màn hình phụ như Âm nhạc, Vị trí, v.v. chỉ bằng cách sử dụng tên riêng

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

Xem danh sách tên đầy đủ ở đây được chia sẻ bởi Henri Normak


Cập nhật:

Theo nhận xét, mọi người đều muốn biết điều gì xảy ra sau khi thay đổi trạng thái nộp đơn này của tôi?

Vì thế YES!! I got successful update submission and application is available on store without any complain.

Chỉ cần xác nhận, tôi vừa tải xuống sáng nay và vô hiệu hóa dịch vụ Vị trí, sau đó khởi động ứng dụng, yêu cầu tôi cho phép vị trí và sau đó cửa sổ bật lên cảnh báo của tôi ở đó để gửi cho tôi trên cài đặt -> trang dịch vụ vị trí -> Đã bật -> Đó là nó!!

! [THÔNG BÁO: Ứng dụng của bạn có thể bị từ chối ... ngay cả khi được phê duyệt, ứng dụng có thể bị từ chối trong phiên bản tương lai nếu bạn sử dụng phương pháp này ...] 4


Cảm ơn, cũng hoạt động với tôi, trên iOS 6 và 7. Bạn đã thử tải nó qua quy trình đánh giá của Apple chưa?
Flo

1
@Flo Tôi sẽ cho bạn biết, vì hiện tại tôi đã đẩy mạnh thử nghiệm beta.
swiftBoy 17/03/2016

1
iOS 9.3. Làm việc như người ở. Tôi thậm chí còn thấy "Quay lại [tên ứng dụng của tôi]" trong ứng dụng cài đặt. Chắc chắn, điều này được hỗ trợ bởi vì tôi thấy rất nhiều ứng dụng khác làm được điều này!
EricWasTaken

13
Trên iOS 10, url mới không phải là "prefs: root = ...." mà là "App-Prefs: root = ...".
Drico

1
Ứng dụng của bạn có thể bị từ chối ... ngay cả khi nó được chấp thuận, nó có thể bị từ chối trong phiên bản tương lai nếu bạn sử dụng phương pháp này ...
Mihir Mehta

18

Bạn có thể sử dụng điều này trên iOS 5.0 trở lên: Điều này không còn hoạt động.

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

3
@MarkGranoff Không, nó dường như không có giấy tờ về mặt kỹ thuật, nhưng nó không tệ như một API không có giấy tờ thông thường, vì nó chỉ là một Lược đồ URL. Bạn có thể kiểm tra nó với canOpenURL: đầu tiên. Ngoài ra, có một chủ đề về nó ở đây: devforums.apple.com/message/543818
davidcann

3
Bạn có thể đến các khu vực khác nhau trong cài đặt theo bài viết này . Ví dụ: URL này sẽ đưa bạn đến cài đặt Bluetoothprefs:root=General&path=Bluetooth
progrmr

1
Tôi đã nhận được một ứng dụng bị từ chối vì sử dụng API riêng vì tôi đang mở url: @ "prefs: root = Brightness". Thông thường, không có tài liệu có nghĩa là riêng tư.
Guillaume

4
Apple đã tuyên bố rằng đây không phải là API công khai và không còn được hỗ trợ. Có một lỗi được gửi về vấn đề này, số 11253669.
Don Wilson

2
Tôi chỉ thấy rằng điều này hoạt động trong ứng dụng Strava. Tắt Bluetooth và sau đó bật nó trong ứng dụng. Sau đó, nó yêu cầu phải vào ứng dụng cài đặt và nó sẽ chuyển trực tiếp đến cài đặt Bluetooth. Đây là cho iOS5.1. Có cách nào để tìm ra chương trình họ đang sử dụng không?
Kiến

14

Cập nhật iOS 10

Apple đã thay đổi phương thức để mở async trên luồng chính. Tuy nhiên, từ giờ chỉ có thể mở cài đặt ứng dụng trong cài đặt gốc.

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

Cập nhật iOS 9

Bây giờ có thể đi trực tiếp đến menu cài đặt phụ. Tuy nhiên, một lược đồ URL phải được tạo. Nó có thể được thực hiện bằng hai cách:

  1. XCode - Bạn sẽ tìm thấy nó trong Target, Info, URL Scheme. Sau đó, chỉ cần gõ prefs.
  2. Thêm trực tiếp vào * -Info.plist. Thêm những điều sau: <key>CFBundleURLTypes</key> <array> <dict> <key>CFBundleTypeRole</key> <string>Editor</string> <key>CFBundleURLSchemes</key> <array> <string>prefs</string> </array> </dict> </array>

Sau đó, mã:

Nhanh

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

Mục tiêu-c

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


1
Tôi đã thử giải pháp iOS 10.x và nó không hoạt động với tôi - không có gì xảy ra.
Mark Peters

@MarkPeter, bạn đã tìm ra cách nào chưa? Nó có thể giúp đỡ rất nhiều. Cảm ơn.
Roohul Poolak

Không, tôi không có. Tôi vẫn không biết đó là lỗi iOS hay Apple chỉ gỡ bỏ tính năng này.
Mark Peters

Tôi nghĩ rằng, họ vẫn làm việc với Tiện ích mở rộng. Ứng dụng cũ có Magic Launchertrong Appstore.
Trident

4

Trong Swift 3 / iOS 10+, giờ đây nó trông giống như

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

Làm thế nào để đến màn hình thông báo? bởi vì if } nhưng tôi đã đi đến thông báo trong iPhone 6 không phải trong iPhone 7 plus?
3804063

3
Điều này sẽ khiến ứng dụng của bạn bị từ chối. Họ đặt nó dưới sử dụng API riêng.
Bersaelor

Tôi đã từ chối ứng dụng của mình, sử dụng "Ứng dụng Prefs: root" này
Malder

1
Chỉ cần nhấn mạnh những gì người khác đề cập ở đây, không sử dụng phương pháp này, nó sẽ khiến ứng dụng của bạn bị từ chối. Liên tục gửi ứng dụng như vậy sẽ khiến tài khoản nhà phát triển của bạn bị đóng.
CodeBrew

4

Swift 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

Có vẻ như bạn có thể sử dụng prefs:<area>URL để mở cài đặt và đi đến các khu vực cụ thể. Apple có thể thay đổi những điều này và phá vỡ ứng dụng của bạn để luôn kiểm tra xem bạn có thể mở chúng trước không.

Từ bài viết này, họ đã liệt kê một số trong số chúng cho iOS 13.1:

Cài đặt URL

iCloud

  • iCloud: prefs:root=CASTLE
  • Sao lưu iCloud: prefs:root=CASTLE&path=BACKUP

Radio không dây

  • Wifi: prefs:root=WIFI
  • Bluetooth: prefs:root=Bluetooth
  • Di động: prefs:root=MOBILE_DATA_SETTINGS_ID

Điểm truy cập cá nhân

  • Điểm nóng cá nhân: prefs:root=INTERNET_TETHERING
  • Điểm truy cập cá nhân Sharing Chia sẻ gia đình: prefs:root=INTERNET_TETHERING&path=Family%20Sharing
  • Điểm truy cập cá nhân Password Mật ​​khẩu Wi-Fi: prefs:root=INTERNET_TETHERING&path=Wi-Fi%20Password

VPN

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

Thông báo

  • Thông báo: prefs:root=NOTIFICATIONS_ID
  • Thông báo Suggest Gợi ý Siri: prefs:root=NOTIFICATIONS_ID&path=Siri%20Suggestions

Âm thanh

  • Âm thanh: prefs:root=Sounds
  • Nhạc chuông: prefs:root=Sounds&path=Ringtone

Đừng làm phiền

  • Đừng làm phiền: prefs:root=DO_NOT_DISTURB
  • Không làm phiền Cho phép các cuộc gọi từ: prefs:root=DO_NOT_DISTURB&path=Allow%20Calls%20From

Thời gian trên màn hình

  • Thời gian trên màn hình: prefs:root=SCREEN_TIME
  • Thời gian trên màn hình Thời gian chết: prefs:root=SCREEN_TIME&path=DOWNTIME
  • Thời gian trên màn hình Lim Giới hạn ứng dụng: prefs:root=SCREEN_TIME&path=APP_LIMITS
  • Thời gian trên màn hình ⇾ Luôn được phép: prefs:root=SCREEN_TIME&path=ALWAYS_ALLOWED

Chung

  • Chung: prefs:root=General
  • Chung ⇾ Giới thiệu: prefs:root=General&path=About
  • Chung Cập nhật phần mềm: prefs:root=General&path=SOFTWARE_UPDATE_LINK
  • Chung ⇾ CarPlay: prefs:root=General&path=CARPLAY
  • Chung Làm mới ứng dụng nền: prefs:root=General&path=AUTO_CONTENT_DOWNLOAD
  • Chung Đa nhiệm (chỉ dành cho iPad): prefs:root=General&path=MULTITASKING
  • Chung Ngày & Giờ: prefs:root=General&path=DATE_AND_TIME
  • Chung Bàn phím: prefs:root=General&path=Keyboard
  • Chung Bàn phím Bàn phím: prefs:root=General&path=Keyboard/KEYBOARDS
  • Chung Bàn phím Keyboard Bàn phím phần cứng: prefs:root=General&path=Keyboard/Hardware%20Keyboard
  • Chung Bàn phím Replacement Thay thế văn bản: prefs:root=General&path=Keyboard/USER_DICTIONARY
  • Chung Bàn phím Keyboard Bàn phím một tay: prefs:root=General&path=Keyboard/ReachableKeyboard
  • Chung Ngôn ngữ & khu vực: prefs:root=General&path=INTERNATIONAL
  • Chung General Từ điển: prefs:root=General&path=DICTIONARY
  • Chung Hồ sơ: prefs:root=General&path=ManagedConfigurationList
  • Chung Đặt lại: prefs:root=General&path=Reset

Trung tâm điều khiển

  • Trung tâm điều khiển: prefs:root=ControlCenter
  • Trung tâm điều khiển ⇾ Tùy chỉnh điều khiển: prefs:root=ControlCenter&path=CUSTOMIZE_CONTROLS

Trưng bày

  • Trưng bày: prefs:root=DISPLAY
  • Hiển thị Lock Khóa tự động: prefs:root=DISPLAY&path=AUTOLOCK
  • Hiển thị Size Kích thước văn bản: prefs:root=DISPLAY&path=TEXT_SIZE

Khả năng tiếp cận

  • Khả năng tiếp cận: prefs:root=ACCESSIBILITY

Hình nền

  • Hình nền: prefs:root=Wallpaper

Siri

  • Thưa ngài: prefs:root=SIRI

Bút chì Apple

  • Apple Pencil (chỉ dành cho iPad): prefs:root=Pencil

ID mặt

  • ID mặt: prefs:root=PASSCODE

Cấp cứu khẩn cấp

  • Cấp cứu khẩn cấp: prefs:root=EMERGENCY_SOS

Ắc quy

  • Ắc quy: prefs:root=BATTERY_USAGE
  • Pin Health Sức khỏe của pin (chỉ dành cho iPhone): prefs:root=BATTERY_USAGE&path=BATTERY_HEALTH

Riêng tư

  • Riêng tư: prefs:root=Privacy
  • Quyền riêng tư Dịch vụ định vị: prefs:root=Privacy&path=LOCATION
  • Quyền riêng tư ⇾ Liên hệ: prefs:root=Privacy&path=CONTACTS
  • Quyền riêng tư Lịch: prefs:root=Privacy&path=CALENDARS
  • Quyền riêng tư ⇾ Nhắc nhở: prefs:root=Privacy&path=REMINDERS
  • Quyền riêng tư ⇾ Ảnh: prefs:root=Privacy&path=PHOTOS
  • Quyền riêng tư ⇾ Micrô: prefs:root=Privacy&path=MICROPHONE
  • Quyền riêng tư Nhận dạng giọng nói: prefs:root=Privacy&path=SPEECH_RECOGNITION
  • Quyền riêng tư ⇾ Camera: prefs:root=Privacy&path=CAMERA
  • Quyền riêng tư ⇾ Chuyển động: prefs:root=Privacy&path=MOTION\

Cửa hàng ứng dụng

  • Cửa hàng ứng dụng: prefs:root=STORE
  • Cửa hàng ứng dụng Downloads Tải xuống ứng dụng: prefs:root=STORE&path=App%20Downloads
  • Cửa hàng ứng dụng Aut Tự động phát video: prefs:root=STORE&path=Video%20Autoplay

Ví tiền

  • Ví tiền: prefs:root=PASSBOOK

Mật khẩu & Tài khoản

  • Mật khẩu & Tài khoản: prefs:root=ACCOUNTS_AND_PASSWORDS
  • Mật khẩu & Tài khoản ⇾ Lấy dữ liệu mới: prefs:root=ACCOUNTS_AND_PASSWORDS&path=FETCH_NEW_DATA
  • Mật khẩu & Tài khoản ⇾ Thêm tài khoản: prefs:root=ACCOUNTS_AND_PASSWORDS&path=ADD_ACCOUNT

Thư

  • Thư: prefs:root=MAIL
  • Thư ⇾ Xem trước: prefs:root=MAIL&path=Preview
  • Mail Options Tùy chọn vuốt: prefs:root=MAIL&path=Swipe%20Options
  • Thư Thông báo: prefs:root=MAIL&path=NOTIFICATIONS
  • Thư Bị chặn: prefs:root=MAIL&path=Blocked
  • Thư Action Hành động chủ đề bị tắt tiếng: prefs:root=MAIL&path=Muted%20Thread%20Action
  • Mail Tùy chọn người gửi bị chặn: prefs:root=MAIL&path=Blocked%20Sender%20Options
  • Mail Đánh dấu địa chỉ: prefs:root=MAIL&path=Mark%20Addresses
  • Mail Tăng mức trích dẫn: prefs:root=MAIL&path=Increase%20Quote%20Level
  • Mail Bao gồm tệp đính kèm với câu trả lời: prefs:root=MAIL&path=Include%20Attachments%20with%20Replies
  • Thư Chữ ký: prefs:root=MAIL&path=Signature
  • Thư Account Tài khoản mặc định: prefs:root=MAIL&path=Default%20Account

Liên lạc

  • Liên lạc: prefs:root=CONTACTS

Lịch

  • Lịch: prefs:root=CALENDAR
  • Lịch Lịch thay thế: prefs:root=CALENDAR&path=Alternate%20Calendars
  • Lịch Đồng bộ hóa: prefs:root=CALENDAR&path=Sync
  • Lịch Thời gian cảnh báo mặc định: prefs:root=CALENDAR&path=Default%20Alert%20Times
  • Lịch Calendar Lịch mặc định: prefs:root=CALENDAR&path=Default%20Calendar

Ghi chú

  • Ghi chú: prefs:root=NOTES
  • Ghi chú Account Tài khoản mặc định: prefs:root=NOTES&path=Default%20Account
  • Ghi chú Mật khẩu: prefs:root=NOTES&path=Password
  • Ghi chú Sắp xếp ghi chú theo: prefs:root=NOTES&path=Sort%20Notes%20By
  • Ghi chú Ghi chú mới Bắt đầu bằng: prefs:root=NOTES&path=New%20Notes%20Start%20With
  • Ghi chú Sắp xếp các mục đã kiểm tra: prefs:root=NOTES&path=Sort%20Checked%20Items
  • Ghi chú Dòng & Lưới: prefs:root=NOTES&path=Lines%20%26%20Grids
  • Ghi chú Ghi chú truy cập từ Màn hình khóa: prefs:root=NOTES&path=Access%20Notes%20from%20Lock%20Screen

Nhắc nhở

  • Nhắc nhở: prefs:root=REMINDERS
  • Nhắc nhở Danh sách mặc định: prefs:root=REMINDERS&path=DEFAULT_LIST

Bản ghi nhớ giọng nói

  • Bản ghi nhớ giọng nói: prefs:root=VOICE_MEMOS

Điện thoại

  • Điện thoại: prefs:root=Phone

Tin nhắn

  • Tin nhắn: prefs:root=MESSAGES

FaceTime

  • FaceTime: prefs:root=FACETIME

Bản đồ

  • Bản đồ: prefs:root=MAPS
  • Bản đồ ⇾ Lái xe & Điều hướng: prefs:root=MAPS&path=Driving%20%26%20Navigation
  • Bản đồ ⇾ Quá cảnh: prefs:root=MAPS&path=Transit

La bàn

  • La bàn: prefs:root=COMPASS

Đo lường

  • Đo lường: prefs:root=MEASURE

Safari

  • Safari: prefs:root=SAFARI
  • Safari Trình chặn nội dung: prefs:root=SAFARI&path=Content%20Blockers
  • Safari ⇾ Tải xuống: prefs:root=SAFARI&path=DOWNLOADS
  • Safari ⇾ Đóng Tab: prefs:root=SAFARI&path=Close%20Tabs
  • Safari ⇾ Xóa lịch sử và dữ liệu: prefs:root=SAFARI&path=CLEAR_HISTORY_AND_DATA
  • Safari Zoom Thu phóng trang: prefs:root=SAFARI&path=Page%20Zoom
  • Safari ⇾ Yêu cầu trang web máy tính để bàn: prefs:root=SAFARI&path=Request%20Desktop%20Website
  • Safari ⇾ Trình đọc: prefs:root=SAFARI&path=Reader
  • Safari ⇾ Camera: prefs:root=SAFARI&path=Camera
  • Safari ⇾ Micrô: prefs:root=SAFARI&path=Microphone
  • Safari ⇾ Địa điểm: prefs:root=SAFARI&path=Location
  • Safari ⇾ Nâng cao: prefs:root=SAFARI&path=ADVANCED

Tin tức

  • Tin tức: prefs:root=NEWS

Sức khỏe

  • Sức khỏe: prefs:root=HEALTH

Phím tắt

  • Phím tắt: prefs:root=SHORTCUTS

Âm nhạc

  • Âm nhạc: prefs:root=MUSIC
  • Âm nhạc Data Dữ liệu di động: prefs:root=MUSIC&path=com.apple.Music:CellularData
  • Âm nhạc ⇾ Tối ưu hóa lưu trữ: prefs:root=MUSIC&path=com.apple.Music:OptimizeStorage
  • Âm nhạc EQ: prefs:root=MUSIC&path=com.apple.Music:EQ
  • Âm nhạc Giới hạn âm lượng: prefs:root=MUSIC&path=com.apple.Music:VolumeLimit

truyền hình

  • Cài đặt ⇾ TV: prefs:root=TVAPP

Hình ảnh

  • Ảnh: prefs:root=Photos

Máy ảnh

  • Máy ảnh: prefs:root=CAMERA
  • Camera Quay video: prefs:root=CAMERA&path=Record%20Video
  • Camera ⇾ Ghi Slo-mo: prefs:root=CAMERA&path=Record%20Slo-mo

Sách

  • Sách: prefs:root=IBOOKS

Trung tâm trò chơi

  • Trung tâm trò chơi: prefs:root=GAMECENTER

3

UIApplicationOpenSettingsURLStringđiều này sẽ chỉ hoạt động nếu trước đây bạn đã cho phép bất kỳ sự cho phép. Ví dụ: Địa điểm, Ảnh, Liên hệ, Truy cập thông báo đẩy. Vì vậy, nếu bạn không có sự cho phép như vậy từ người dùng:

Nếu iOS 10 trở lên ,

Nó sẽ mở Cài đặt nhưng sau đó sập nó. Lý do, không có gì trong cài đặt cho ứng dụng của bạn.

Mã bên dưới sẽ mở cài đặt ứng dụng của bạn bên trong Cài đặt iOS.

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

Do không có thiết bị, tôi không thể kiểm tra điều này trên iOS <10.

Ngoài ra, tôi có thể tìm thấy mã bên dưới từ một số ý chính và nó cũng hoạt động tốt trên iOS 10. Nhưng tôi không chắc liệu điều này có được nhóm đánh giá của Apple chấp thuận hay không.

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


3

Trong Swift 3 tất cả những gì tôi cần là thế này (ví dụ ở đây là chuyển hướng đến thông báo ứng dụng của tôi):

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

Nguồn: phynet chính .

Điều này chỉ làm việc với tôi khi cài đặt ở chế độ nền. Nó sẽ chuyển hướng bạn đến cài đặt thông báo ứng dụng của bạn nhưng nếu cài đặt không chạy trong nền thì nó sẽ chỉ chuyển hướng bạn đến cài đặt thông báo nói chung.


1

Bạn có thể sử dụng mã dưới đây cho nó.

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

1

Chuyển đổi 4.0

'openURL' không được dùng nữa trong iOS 10.0: Vui lòng sử dụng openURL: tùy chọn: xongHandler: thay vào đó

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

1

Swift 4

Tôi thích mở cài đặt theo cách an toàn hơn,

if let settingUrl = URL(string:UIApplicationOpenSettingsURLString) {

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

0

Swift Bạn có thể sử dụng chức năng sau để mở Ứng dụng cài đặt với Trang Bluetooth

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

Một lần nữa, điều này sẽ không mở Cài đặt của ứng dụng. Điều này sẽ mở ứng dụng cài đặt với Bluetooth vì đây là liên kết sâu với bluetooth.


0

Đã thử nghiệm với iOS 10. Hoạt động

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

Chúc mừng mã hóa :)


3
Điều này sẽ khiến ứng dụng của bạn bị từ chối. Chỉ cần nó xảy ra với tôi.
Bersaelor

Có phải vậy không, nhưng dòng mã này sẽ trực tiếp đưa bạn đến vị trí mong muốn
Praveen Sharma

1
Vâng, nó sẽ đưa bạn đến đó. Tôi không nói rằng nó không hoạt động, tôi chỉ chỉ ra rằng nó sẽ khiến bạn bị từ chối trong quá trình đánh giá ứng dụng. "prefs: root" là một lược đồ url riêng theo những gì nhóm đánh giá đã nói với chúng tôi. (Bạn có thể gặp may mắn và họ không để ý trong một thời gian, chúng tôi đã có tính năng này trong một thời gian và đã vượt qua một số đánh giá trước khi người đánh giá nhận thấy nó)
Bersaelor

Cảm ơn thông tin, tôi sẽ thử một cái gì đó khác, nhưng ngay bây giờ tôi bị mắc kẹt trong kết nối VPN, Tìm giải pháp cho việc này.
Praveen Sharma

0

Để thêm vào câu trả lời được chấp nhận: (từ tài liệu dành cho nhà phát triển của apple) "Khi bạn mở URL được xây dựng từ chuỗi này (openSinstallURLString), hệ thống sẽ khởi chạy ứng dụng Cài đặt và hiển thị các cài đặt tùy chỉnh của ứng dụng, nếu có." Vì vậy, nếu bạn muốn mở cài đặt cho ứng dụng của mình, hãy tạo Cài đặt của riêng bạn.


-1

Thêm phần này vào lớp của bạn,

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

Gọi như thế này,

YourClass.showSettingsAlert("App would like to access camera", message: "App would like to access camera desc", onVC: fromViewController, onCancel: {
  print("canceled")
})
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.