การเปิดแอปการตั้งค่าจากแอพอื่น


180

ตกลงฉันรู้ว่ามีคำถามมากมายเกี่ยวกับเรื่องนี้ แต่พวกเขาทั้งหมดมาจากเวลาที่ผ่านมา

ดังนั้น. ฉันรู้ว่ามันเป็นไปได้เพราะแอพ Map ทำ

ในแอพแผนที่หากฉันปิดการแปลสำหรับแอพนี้มันจะส่งข้อความถึงฉันและถ้าฉันกดตกลง "แอปตั้งค่า" จะเปิดขึ้น และคำถามของฉันคือเป็นไปได้อย่างไร ฉันจะเปิด "การตั้งค่าแอพ" จากแอพของฉันเองได้อย่างไร?

โดยพื้นฐานแล้วฉันต้องทำสิ่งเดียวกันหากผู้ใช้ปิดที่ตั้งสำหรับแอพของฉันจากนั้นฉันจะแสดงข้อความที่บอกสิ่งที่จะเปิด "การตั้งค่าแอพ" ให้เขา


ตรวจสอบหนึ่งstackoverflow.com/questions/377102/
Yatheesha BL

1
คุณสามารถเปิดแอปการตั้งค่าโดยทางโปรแกรมใน iOS8 (แต่ไม่ใช่ใน iOS เวอร์ชันต่ำกว่า). รหัสด้านล่างเพื่อรับคำตอบ
Karan Dua

คำตอบ:


291

ดังกล่าวโดยKaran Duaนี้อยู่ในขณะนี้เป็นไปได้ใน iOS8ใช้UIApplicationOpenSettingsURLStringดูเอกสารแอปเปิ้ล

ตัวอย่าง:

สวิฟท์ 4.2

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

ในสวิฟต์ 3:

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

ในสวิฟต์ 2:

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

ในวัตถุประสงค์ -C

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

ก่อนหน้ากับ iOS 8:

คุณไม่สามารถ. อย่างที่คุณบอกว่าสิ่งนี้ได้รับการคุ้มครองหลายครั้งและป๊อปอัปที่ขอให้คุณเปิดบริการระบุตำแหน่งนั้นจัดทำโดย Apple ไม่ใช่โดยตัวแอปเอง นี่คือสาเหตุที่สามารถเปิดแอปพลิเคชันการตั้งค่าได้

คำถามและบทความที่เกี่ยวข้องมีดังนี้:

เป็นไปได้หรือไม่ที่จะเปิดแอปการตั้งค่าโดยใช้ openURL

การเปิดแอปการตั้งค่า (iPhone) โดยทางโปรแกรม

ฉันจะเปิดแอพการตั้งค่าได้อย่างไรเมื่อผู้ใช้กดปุ่ม?

iPhone: การเปิดแผงการตั้งค่าแอปพลิเคชันจากแอพ

เปิด UIPickerView โดยคลิกที่รายการในการตั้งค่าของแอพ - ทำอย่างไร?

เปิดแอปการตั้งค่าหรือไม่

iOS: คุณกำลังตั้งค่าผิด


หากคุณต้องการคำตอบที่เชื่อถือได้มากขึ้นคุณอาจลองถามฟอรัมจาก Developer Developer ของ Apple < developer.apple.com/devforums > หรือยื่นข้อผิดพลาดที่ < developer.apple.com/bugreporter > - หากเป็นปัญหาที่ทราบแล้วควรกลับมาอีกครั้ง ในฐานะ "ทำงานอย่างถูกต้อง" หรือทำซ้ำข้อผิดพลาดเดิม
Vincent Gable


2
ตอนนี้สามารถทำได้ใน iOS 8 โดยใช้ [NSURL URLWithString: UIApplicationOpenSettingsURLString]
LightningStryk

1
ใน swift 3 - UIApplication.shared.openURL (URL (สตริง: UIApplicationOpenSettingsURLString)!)
GMHSJ

1
ระวังการใช้วิธีนี้ ฉันใช้แล้วไม่กี่เดือนต่อมาแอปของฉันถูกปฏิเสธด้วยข้อความต่อไปนี้จาก Apple: แอปของคุณใช้รูปแบบ "prefs: root =" ที่ไม่ใช่แบบสาธารณะซึ่งเป็นเอนทิตีส่วนตัว การใช้ API ที่ไม่ใช่แบบสาธารณะนั้นไม่ได้รับอนุญาตบน App Store เพราะอาจนำไปสู่ประสบการณ์การใช้งานที่ไม่ดีหาก API เหล่านี้เปลี่ยนไป การใช้หรือปิดบัง API ที่ไม่ใช่แบบสาธารณะอย่างต่อเนื่องในการส่งแอพนี้ในอนาคตอาจส่งผลให้บัญชี Apple Developer ของคุณถูกยกเลิกรวมถึงการลบแอพที่เกี่ยวข้องทั้งหมดออกจาก App Store
Nick Kirsten

133

จากคำตอบของ@Yatheeshaless :

คุณสามารถเปิดแอปตั้งค่าโดยทางโปรแกรมใน iOS8 แต่ไม่ใช่ใน iOS เวอร์ชันก่อนหน้า

สวิฟท์:

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

สวิฟท์ 4:

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

Swift 4.2 (เบต้า):

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
ดูเหมือนว่าจะเปิดส่วนแอปของคุณในแอพการตั้งค่า ผู้ใช้จะต้องกด Back สองสามครั้งเพื่อดูหน้าจอหลักของการตั้งค่า
wjl

1
การแก้ไข[[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];
เล็กน้อย

10
@Paito บรรทัดด้านบนกำลังนำไปสู่การตั้งค่าส่วนตัวของแอพ มีวิธีใดตรงไปยังส่วนความเป็นส่วนตัวของการตั้งค่าอุปกรณ์หรือไม่ โปรดแสดงความคิดเห็นถ้าคุณรู้ การเปลี่ยนเส้นทางนี้เป็นไปได้เนื่องจากฉันพบในแอพแผนที่ซึ่งนำไปสู่การตั้งค่าตำแหน่งในส่วนความเป็นส่วนตัว
Pavan Kotesh

1
การแก้ไข Swift ขนาดเล็ก: UIApplication.sharedApplication (). openURL (NSURL (สตริง: UIApplicationOpenSettingsURLString))
vbezhenar

1
@ PavanKotesh- ใช่ แต่การตั้งค่าแอพจะมีสิ่งที่คุณต้องได้รับอนุญาตในกรณีของฉันฉันจำเป็นต้องเข้าถึงผู้ติดต่อซึ่งจะปรากฏในการตั้งค่าแอพด้วยรหัสด้านบน
Tejas K

58

ใช่!! คุณสามารถเปิดหน้าจอการตั้งค่าอุปกรณ์ฉันได้ทดสอบบน iOS 9.2

ขั้นตอนที่ 1เราต้องเพิ่มโครงร่าง URL

ไปที่การตั้งค่าโครงการ -> ข้อมูล -> ประเภท URL -> เพิ่มโครงร่าง URL ใหม่

ป้อนคำอธิบายรูปภาพที่นี่

ขั้นตอนที่ 2เปิดใช้งานการตั้งค่าโดยทางโปรแกรมด้วย@davidcann

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

นอกจากนี้เราสามารถเปิดหน้าจอย่อยเช่นเพลง, ที่ตั้งและอื่น ๆ ได้เช่นกันโดยใช้ชื่อที่เหมาะสม

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

ดูรายชื่อเต็มได้ที่นี่แบ่งปันโดย Henri Normak


ปรับปรุง:

ตามความคิดเห็นทุกคนต้องการทราบว่าเกิดอะไรขึ้นหลังจากการเปลี่ยนแปลงสถานะการส่งใบสมัครของฉัน?

ดังนั้น YES!! I got successful update submission and application is available on store without any complain.

เพิ่งจะยืนยันฉันเพิ่งดาวน์โหลดเมื่อเช้านี้และปิดใช้บริการตำแหน่งแล้วเริ่มแอพซึ่งขออนุญาตจากตำแหน่งจากนั้นป๊อปอัพการแจ้งเตือนของฉันอยู่ที่นั่นเพื่อส่งการตั้งค่า -> หน้าบริการระบุตำแหน่ง -> เปิดใช้งาน -> แค่นั้นแหละ!!

! [ประกาศ: แอปของคุณอาจถูกปฏิเสธ ... แม้ว่าจะได้รับการอนุมัติก็สามารถถูกปฏิเสธในเวอร์ชันอนาคตหากคุณใช้วิธีนี้ ... ] 4


ขอขอบคุณสำหรับฉันด้วยบน iOS 6 และ 7 ด้วย คุณลองผ่านกระบวนการตรวจสอบของ Apple หรือยัง
Flo

1
@Flo ฉันจะแจ้งให้คุณทราบเพราะปัจจุบันฉันได้ผลักดันการทดสอบเบต้า
swiftBoy

1
iOS 9.3 ทำงานเหมือนจับใจ ฉันยังเห็น "กลับไปที่ [ชื่อแอพของฉัน]" ภายในแอพการตั้งค่า แน่นอนว่านี่รองรับเพราะฉันเห็นแอพอื่นมากมายที่ทำสิ่งนี้!
EricWasTaken

13
ใน iOS 10 URL ใหม่ไม่ใช่ "prefs: root = .... " แต่ "App-Prefs: root = ... "
Drico

1
แอปของคุณอาจถูกปฏิเสธ ... แม้ว่าจะได้รับการอนุมัติก็สามารถถูกปฏิเสธในเวอร์ชันในอนาคตหากคุณใช้วิธีนี้ ...
Mihir Mehta

18

คุณสามารถใช้สิ่งนี้ใน iOS 5.0 และใหม่กว่า:สิ่งนี้ใช้ไม่ได้อีกต่อไป

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

3
@ MarkGranoff ไม่ดูเหมือนว่าจะไม่มีเอกสารทางเทคนิค แต่ก็ไม่ได้เลวร้ายเท่า API ที่ไม่มีเอกสารทั่วไปเนื่องจากเป็นเพียงแผนการ URL คุณสามารถตรวจสอบด้วย canOpenURL: ก่อน นอกจากนี้ยังมีหัวข้อเกี่ยวกับที่นี่: devforums.apple.com/message/543818
davidcann

3
คุณจะได้รับไปยังพื้นที่ที่แตกต่างกันในการตั้งค่าตามบทความนี้ ตัวอย่างเช่น URL นี้จะนำคุณไปสู่การตั้งค่าบลูทู ธprefs:root=General&path=Bluetooth
progrmr

1
ฉันได้รับแอปพลิเคชันที่ปฏิเสธการใช้ API ส่วนตัวเนื่องจากเปิด url: @ "prefs: root = Brightness" โดยปกติแล้วไม่มีเอกสารหมายถึงส่วนตัว
Guillaume

4
Apple ระบุว่านี่ไม่ใช่ API สาธารณะและไม่ได้รับการสนับสนุนอีกต่อไป มีข้อผิดพลาดในการยื่นเรื่องนี้หมายเลข 11253669
Don Wilson

2
ฉันเพิ่งเห็นว่ามันใช้งานได้ในแอพ Strava ปิดบลูทู ธ แล้วเปิดในแอพ จากนั้นมันจะขอให้ไปที่แอพตั้งค่า & มันไปที่การตั้งค่าบลูทู ธ นี่สำหรับ iOS5.1 มีวิธีที่จะทราบว่าพวกเขากำลังใช้รูปแบบใด?
มด

14

อัปเดต iOS 10

Apple เปลี่ยนวิธีการเปิด async บนเธรดหลัก อย่างไรก็ตามจากนี้ไปจะสามารถเปิดการตั้งค่าแอพได้ในการตั้งค่าพื้นฐานเท่านั้น

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

การอัปเดต iOS 9

ตอนนี้คุณสามารถไปที่เมนูการตั้งค่าย่อยได้โดยตรง อย่างไรก็ตามต้องสร้างชุดรูปแบบ URL สามารถทำได้สองวิธี:

  1. XCode - คุณจะพบมันใน Target, Info, Scheme URL จากนั้นให้พิมพ์ prefs
  2. เพิ่มไปยัง * -Info.plist โดยตรง เพิ่มรายการต่อไปนี้: <key>CFBundleURLTypes</key> <array> <dict> <key>CFBundleTypeRole</key> <string>Editor</string> <key>CFBundleURLSchemes</key> <array> <string>prefs</string> </array> </dict> </array>

จากนั้นรหัส:

รวดเร็ว

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

Objective-C

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


1
ฉันลองใช้วิธีการแก้ปัญหา iOS 10.x และมันไม่ได้ผลสำหรับฉัน - ไม่มีอะไรเกิดขึ้น
Mark Peters

@ MarkPeters คุณคิดออกยังไงบ้าง? มันอาจช่วยได้มาก ขอบคุณ
Roohul Poolak

ไม่ฉันไม่ได้ ฉันยังไม่รู้ว่าเป็นบั๊กของ iOS หรือหาก Apple เพิ่งลบฟีเจอร์นี้ออก
Mark Peters

ฉันคิดว่าพวกเขายังคงทำงานร่วมกับส่วนขยาย แอพตัวอย่างอยู่Magic Launcherใน Appstore
ตรีศูล

4

ใน Swift 3 / iOS 10+ ตอนนี้ดูเหมือนว่า

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

จะไปที่หน้าจอแจ้งเตือนได้อย่างไร เพราะถ้าปล่อย url = URL (สตริง: "App-Prefs: root = NOTIFICATIONS_ID & path = io.artup.artup") {ถ้า #available (iOS 10.0, *) {UIApplication.shared.open (url, completeHandler: .none)} } แต่ฉันไปที่การแจ้งเตือนใน iPhone 6 ไม่ใช่ใน iPhone 7 plus?
user3804063

3
นี่จะทำให้แอปของคุณถูกปฏิเสธ พวกเขาวางไว้ภายใต้การใช้งาน API ส่วนตัว
Bersaelor

ฉันได้ปฏิเสธแอปของฉันโดยใช้ "การตั้งค่าแอพ: รูท" นี้
Malder

1
เพียงเน้นสิ่งที่คนอื่นพูดถึงที่นี่อย่าใช้วิธีนี้มันจะทำให้แอปของคุณถูกปฏิเสธ การส่งแอพซ้ำ ๆ ซ้ำ ๆ จะเป็นการปิดบัญชีนักพัฒนาซอฟต์แวร์ของคุณ
CodeBrew

4

สวิฟท์ 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

ดูเหมือนว่าคุณสามารถใช้prefs:<area>URL เพื่อเปิดการตั้งค่าและไปที่พื้นที่เฉพาะ Apple สามารถเปลี่ยนสิ่งเหล่านี้และทำลายแอปของคุณดังนั้นโปรดตรวจสอบว่าคุณสามารถเปิดได้ก่อนหรือไม่

จากบทความนี้พวกเขามีรายชื่อบางส่วนสำหรับ iOS 13.1:

URL การตั้งค่า

iCloud

  • iCloud: prefs:root=CASTLE
  • การสำรองข้อมูล iCloud: prefs:root=CASTLE&path=BACKUP

วิทยุไร้สาย

  • Wi-Fi: prefs:root=WIFI
  • บลูทู ธ: prefs:root=Bluetooth
  • มือถือ: prefs:root=MOBILE_DATA_SETTINGS_ID

ฮอตสปอตส่วนบุคคล

  • ฮอตสปอตส่วนบุคคล: prefs:root=INTERNET_TETHERING
  • ฮอตสปอตส่วนบุคคล Sharing แชร์ครอบครัว: prefs:root=INTERNET_TETHERING&path=Family%20Sharing
  • ฮอตสปอตส่วนบุคคล Password รหัสผ่าน Wi-Fi: prefs:root=INTERNET_TETHERING&path=Wi-Fi%20Password

VPN

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

การแจ้งเตือน

  • การแจ้งเตือน: prefs:root=NOTIFICATIONS_ID
  • การแจ้งเตือน Sugg ข้อเสนอแนะ Siri: prefs:root=NOTIFICATIONS_ID&path=Siri%20Suggestions

เสียง

  • เสียง: prefs:root=Sounds
  • เสียงเรียกเข้า: prefs:root=Sounds&path=Ringtone

ห้ามรบกวน

  • ห้ามรบกวน: prefs:root=DO_NOT_DISTURB
  • ห้ามรบกวน⇾อนุญาตให้โทรจาก: prefs:root=DO_NOT_DISTURB&path=Allow%20Calls%20From

เวลาหน้าจอ

  • เวลาหน้าจอ: prefs:root=SCREEN_TIME
  • เวลาหน้าจอ⇾การหยุดทำงาน: prefs:root=SCREEN_TIME&path=DOWNTIME
  • เวลาหน้าจอ⇾ข้อ จำกัด ของแอพ: prefs:root=SCREEN_TIME&path=APP_LIMITS
  • เวลาหน้าจอ Allow อนุญาตเสมอ: prefs:root=SCREEN_TIME&path=ALWAYS_ALLOWED

ทั่วไป

  • ทั่วไป: prefs:root=General
  • ทั่วไป⇾เกี่ยวกับ: prefs:root=General&path=About
  • ทั่วไป Update การอัปเดตซอฟต์แวร์: prefs:root=General&path=SOFTWARE_UPDATE_LINK
  • ทั่วไป⇾ CarPlay: prefs:root=General&path=CARPLAY
  • การรีเฟรชแอปพื้นหลังทั่วไป:: prefs:root=General&path=AUTO_CONTENT_DOWNLOAD
  • ทั่วไป⇾การทำงานหลายอย่าง (เฉพาะ iPad): prefs:root=General&path=MULTITASKING
  • ทั่วไป⇾วันที่และเวลา: prefs:root=General&path=DATE_AND_TIME
  • แป้นพิมพ์ทั่วไป⇾: prefs:root=General&path=Keyboard
  • ทั่วไป⇾แป้นพิมพ์⇾แป้นพิมพ์: prefs:root=General&path=Keyboard/KEYBOARDS
  • ทั่วไป⇾คีย์บอร์ด⇾คีย์บอร์ดฮาร์ดแวร์: prefs:root=General&path=Keyboard/Hardware%20Keyboard
  • ทั่วไป⇾คีย์บอร์ด⇾การแทนที่ข้อความ: prefs:root=General&path=Keyboard/USER_DICTIONARY
  • ทั่วไป⇾คีย์บอร์ด⇾คีย์บอร์ดมือเดียว: prefs:root=General&path=Keyboard/ReachableKeyboard
  • ทั่วไป⇾ภาษาและภูมิภาค: prefs:root=General&path=INTERNATIONAL
  • ทั่วไป⇾พจนานุกรม: prefs:root=General&path=DICTIONARY
  • โปรไฟล์⇾ทั่วไป: prefs:root=General&path=ManagedConfigurationList
  • ทั่วไป⇾รีเซ็ต: prefs:root=General&path=Reset

ศูนย์กลางการควบคุม

  • ศูนย์กลางการควบคุม: prefs:root=ControlCenter
  • ศูนย์ควบคุม⇾ปรับแต่งการควบคุม: prefs:root=ControlCenter&path=CUSTOMIZE_CONTROLS

แสดง

  • แสดง: prefs:root=DISPLAY
  • จอแสดงผล Lock ล็อคอัตโนมัติ: prefs:root=DISPLAY&path=AUTOLOCK
  • แสดง⇾ขนาดตัวอักษร: prefs:root=DISPLAY&path=TEXT_SIZE

การเข้าถึง

  • การเข้าถึง: prefs:root=ACCESSIBILITY

วอลล์เปเปอร์

  • วอลล์เปเปอร์: prefs:root=Wallpaper

สิริ

  • Siri: prefs:root=SIRI

ดินสอแอปเปิ้ล

  • Apple Pencil (สำหรับ iPad เท่านั้น): prefs:root=Pencil

รหัสประจำตัว

  • ID ใบหน้า: prefs:root=PASSCODE

SOS ฉุกเฉิน

  • SOS ฉุกเฉิน: prefs:root=EMERGENCY_SOS

แบตเตอรี่

  • แบตเตอรี่: prefs:root=BATTERY_USAGE
  • แบตเตอรี่ Health ความแข็งแรงของแบตเตอรี่ (สำหรับ iPhone เท่านั้น): prefs:root=BATTERY_USAGE&path=BATTERY_HEALTH

ความเป็นส่วนตัว

  • ความเป็นส่วนตัว: prefs:root=Privacy
  • ความเป็นส่วนตัว⇾บริการตำแหน่ง: prefs:root=Privacy&path=LOCATION
  • ความเป็นส่วนตัว⇾ติดต่อ: prefs:root=Privacy&path=CONTACTS
  • ความเป็นส่วนตัว⇾ปฏิทิน: prefs:root=Privacy&path=CALENDARS
  • ความเป็นส่วนตัว⇾การแจ้งเตือน: prefs:root=Privacy&path=REMINDERS
  • ความเป็นส่วนตัว⇾ภาพถ่าย: prefs:root=Privacy&path=PHOTOS
  • ความเป็นส่วนตัว⇾ไมโครโฟน: prefs:root=Privacy&path=MICROPHONE
  • ความเป็นส่วนตัว⇾การรู้จำเสียง: prefs:root=Privacy&path=SPEECH_RECOGNITION
  • ความเป็นส่วนตัว⇾กล้อง: prefs:root=Privacy&path=CAMERA
  • ความเป็นส่วนตัว⇾เคลื่อนไหว: prefs:root=Privacy&path=MOTION\

แอพสโตร์

  • แอพสโตร์: prefs:root=STORE
  • App Store ⇾ดาวน์โหลดแอพ: prefs:root=STORE&path=App%20Downloads
  • App Store ⇾การเล่นอัตโนมัติวิดีโอ: prefs:root=STORE&path=Video%20Autoplay

กระเป๋าสตางค์

  • กระเป๋าสตางค์: prefs:root=PASSBOOK

รหัสผ่านและบัญชี

  • รหัสผ่านและบัญชี: prefs:root=ACCOUNTS_AND_PASSWORDS
  • รหัสผ่านและบัญชี etch ดึงข้อมูลใหม่: prefs:root=ACCOUNTS_AND_PASSWORDS&path=FETCH_NEW_DATA
  • รหัสผ่านและบัญชี⇾เพิ่มบัญชี: prefs:root=ACCOUNTS_AND_PASSWORDS&path=ADD_ACCOUNT

จดหมาย

  • mail: prefs:root=MAIL
  • เมล⇾ดูตัวอย่าง: prefs:root=MAIL&path=Preview
  • เมล⇾ตัวเลือกปัด: prefs:root=MAIL&path=Swipe%20Options
  • เมล⇾การแจ้งเตือน: prefs:root=MAIL&path=NOTIFICATIONS
  • เมล⇾ถูกบล็อค: prefs:root=MAIL&path=Blocked
  • เมล Action ปิดการกระทำเธรด: prefs:root=MAIL&path=Muted%20Thread%20Action
  • เมล Options ตัวเลือกของผู้ส่งที่ถูกบล็อก: prefs:root=MAIL&path=Blocked%20Sender%20Options
  • เมล⇾ทำเครื่องหมายที่อยู่: prefs:root=MAIL&path=Mark%20Addresses
  • Mail ⇾เพิ่มระดับการอ้างอิง: prefs:root=MAIL&path=Increase%20Quote%20Level
  • เมล⇾รวมไฟล์แนบพร้อมคำตอบ: prefs:root=MAIL&path=Include%20Attachments%20with%20Replies
  • จดหมาย⇾ลายเซ็น: prefs:root=MAIL&path=Signature
  • เมล⇾บัญชีเริ่มต้น: prefs:root=MAIL&path=Default%20Account

รายชื่อผู้ติดต่อ

  • ติดต่อ: prefs:root=CONTACTS

ปฏิทิน

  • ปฏิทิน: prefs:root=CALENDAR
  • ปฏิทิน⇾ปฏิทินสำรอง: prefs:root=CALENDAR&path=Alternate%20Calendars
  • ปฏิทิน⇾ซิงค์: prefs:root=CALENDAR&path=Sync
  • ปฏิทิน⇾เวลาเตือนเริ่มต้น: prefs:root=CALENDAR&path=Default%20Alert%20Times
  • ปฏิทิน⇾ปฏิทินเริ่มต้น: prefs:root=CALENDAR&path=Default%20Calendar

หมายเหตุ

  • หมายเหตุ: prefs:root=NOTES
  • หมายเหตุ Account บัญชีเริ่มต้น: prefs:root=NOTES&path=Default%20Account
  • หมายเหตุ⇾รหัสผ่าน: prefs:root=NOTES&path=Password
  • Notes ⇾เรียงลำดับหมายเหตุโดย: prefs:root=NOTES&path=Sort%20Notes%20By
  • โน้ต⇾โน้ตใหม่เริ่มต้นด้วย: prefs:root=NOTES&path=New%20Notes%20Start%20With
  • หมายเหตุ⇾เรียงรายการที่ตรวจสอบแล้ว: prefs:root=NOTES&path=Sort%20Checked%20Items
  • หมายเหตุ⇾เส้นและกริด: prefs:root=NOTES&path=Lines%20%26%20Grids
  • หมายเหตุ⇾เข้าถึงบันทึกจากหน้าจอล็อค: prefs:root=NOTES&path=Access%20Notes%20from%20Lock%20Screen

การแจ้งเตือน

  • การแจ้งเตือน: prefs:root=REMINDERS
  • การแจ้งเตือน⇾รายการเริ่มต้น: prefs:root=REMINDERS&path=DEFAULT_LIST

บันทึกเสียง

  • บันทึกเสียง: prefs:root=VOICE_MEMOS

โทรศัพท์

  • โทรศัพท์: prefs:root=Phone

ข้อความ

  • ข้อความ: prefs:root=MESSAGES

FaceTime

  • FaceTime: prefs:root=FACETIME

แผนที่

  • แผนที่: prefs:root=MAPS
  • แผนที่⇾การขับขี่ & การนำทาง: prefs:root=MAPS&path=Driving%20%26%20Navigation
  • แผนที่⇾แผนการเดินทาง: prefs:root=MAPS&path=Transit

เข็มทิศ

  • เข็มทิศ: prefs:root=COMPASS

วัด

  • วัด: prefs:root=MEASURE

การแข่งรถวิบาก

  • Safari: prefs:root=SAFARI
  • Safari Block บล็อคเนื้อหา: prefs:root=SAFARI&path=Content%20Blockers
  • Safari ⇾ดาวน์โหลด: prefs:root=SAFARI&path=DOWNLOADS
  • Safari ⇾ปิดแท็บ: prefs:root=SAFARI&path=Close%20Tabs
  • Safari ⇾ล้างประวัติและข้อมูล: prefs:root=SAFARI&path=CLEAR_HISTORY_AND_DATA
  • Safari ⇾ Page Zoom: prefs:root=SAFARI&path=Page%20Zoom
  • Safari ⇾ขอเว็บไซต์เดสก์ท็อป: prefs:root=SAFARI&path=Request%20Desktop%20Website
  • Safari ⇾ Reader: prefs:root=SAFARI&path=Reader
  • Safari ⇾กล้อง: prefs:root=SAFARI&path=Camera
  • Safari ⇾ไมโครโฟน: prefs:root=SAFARI&path=Microphone
  • Safari ⇾ที่ตั้ง: prefs:root=SAFARI&path=Location
  • Safari ⇾ขั้นสูง: prefs:root=SAFARI&path=ADVANCED

ข่าว

  • ข่าว: prefs:root=NEWS

สุขภาพ

  • สุขภาพ: prefs:root=HEALTH

ทางลัด

  • ทางลัด: prefs:root=SHORTCUTS

เพลง

  • เพลง: prefs:root=MUSIC
  • เพลง Data ข้อมูลมือถือ: prefs:root=MUSIC&path=com.apple.Music:CellularData
  • เพลง⇾เพิ่มประสิทธิภาพการจัดเก็บ: prefs:root=MUSIC&path=com.apple.Music:OptimizeStorage
  • เพลง⇾ EQ: prefs:root=MUSIC&path=com.apple.Music:EQ
  • เพลง Limit จำกัด ระดับเสียง: prefs:root=MUSIC&path=com.apple.Music:VolumeLimit

โทรทัศน์

  • การตั้งค่า⇾ทีวี: prefs:root=TVAPP

ภาพถ่าย

  • รูปภาพ: prefs:root=Photos

กล้อง

  • กล้อง: prefs:root=CAMERA
  • กล้อง⇾บันทึกวิดีโอ: prefs:root=CAMERA&path=Record%20Video
  • กล้อง⇾บันทึก Slo-mo: prefs:root=CAMERA&path=Record%20Slo-mo

หนังสือ

  • หนังสือ: prefs:root=IBOOKS

ศูนย์เกม

  • ศูนย์เกม: prefs:root=GAMECENTER

3

UIApplicationOpenSettingsURLStringสิ่งนี้จะใช้งานได้หากคุณอนุญาตก่อนหน้านี้เพื่อขออนุญาตใด ๆ ตัวอย่างเช่นตำแหน่งที่ตั้งภาพถ่ายผู้ติดต่อการแจ้งเตือนแบบพุช ดังนั้นหากคุณไม่ได้รับอนุญาตจากผู้ใช้:

ถ้าiOS ของคุณ 10 หรือสูงกว่า ,

มันจะเปิดการตั้งค่า แต่ก็ผิดพลาด เหตุผลไม่มีอะไรในการตั้งค่าสำหรับแอปของคุณ

รหัสด้านล่างจะเปิดการตั้งค่าแอปพลิเคชันของคุณภายในการตั้งค่า iOS

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

เนื่องจากอุปกรณ์ไม่พร้อมใช้งานฉันจึงไม่สามารถตรวจสอบสิ่งนี้บน iOS <10

นอกจากนี้ฉันสามารถค้นหาโค้ดด้านล่างจากส่วนสำคัญและทำงานได้ดีบน iOS 10 เช่นกัน แต่ฉันไม่แน่ใจว่าจะอนุมัติโดยทีมตรวจสอบของ Apple หรือไม่

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


3

ใน Swift 3 ทั้งหมดที่ฉันต้องการคือนี่ (ตัวอย่างเช่นเปลี่ยนเส้นทางไปยังการแจ้งเตือนแอปของฉัน):

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

ที่มา: phynet สรุปสาระสำคัญ

สิ่งนี้ใช้ได้กับฉันก็ต่อเมื่อการตั้งค่าอยู่ในพื้นหลัง มันจะนำคุณไปสู่การตั้งค่าการแจ้งเตือนแอปของคุณ แต่หากการตั้งค่าไม่ได้ทำงานในพื้นหลังเพียงแค่เปลี่ยนเส้นทางคุณไปยังการตั้งค่าการแจ้งเตือนโดยทั่วไป


1

คุณสามารถใช้รหัสด้านล่างสำหรับมัน

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

1

SWIFT 4.0

'openURL' เลิกใช้แล้วใน iOS 10.0: โปรดใช้ openURL: ตัวเลือก: completeHandler: แทน

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

1

สวิฟท์ 4

ฉันชอบเปิดการตั้งค่าในวิธีที่ปลอดภัยกว่า

if let settingUrl = URL(string:UIApplicationOpenSettingsURLString) {

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

0

Swift คุณสามารถใช้ฟังก์ชั่นต่อไปนี้เพื่อเปิดแอปตั้งค่าด้วยหน้าบลูทู ธ

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

สิ่งนี้จะไม่เปิดการตั้งค่าของแอพ นี่จะเป็นการเปิดแอปการตั้งค่าด้วยบลูทู ธ เพราะนี่เป็นการเชื่อมโยงลึกไปยังบลูทู


0

ทดสอบกับ iOS 10 ที่ใช้งานได้

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

Happy Coding :)


3
นี่จะทำให้แอปของคุณถูกปฏิเสธ เพิ่งเกิดขึ้นกับฉัน
Bersaelor

เป็นเช่นนั้น แต่บรรทัดของรหัสนี้จะนำคุณไปยังตำแหน่งที่ต้องการโดยตรง
Praveen Sharma

1
ใช่มันจะพาคุณไปที่นั่น ฉันไม่ได้บอกว่ามันใช้งานไม่ได้ฉันแค่ชี้ให้เห็นว่ามันจะทำให้คุณถูกปฏิเสธระหว่างการตรวจสอบแอป "prefs: root" เป็นรูปแบบ URL ส่วนตัวตามสิ่งที่ทีมตรวจสอบบอกเรา (คุณอาจได้รับโชคดีและพวกเขาไม่ได้สังเกตเห็นสักพักเรามีคุณสมบัติในขณะนี้และผ่านการตรวจสอบหลายครั้งก่อนที่ผู้ตรวจสอบจะสังเกตเห็น)
Bersaelor

ขอบคุณสำหรับข้อมูลที่ฉันจะลองอย่างอื่น แต่ตอนนี้ฉันติดอยู่ในการเชื่อมต่อ VPN หาวิธีแก้ปัญหานี้
Praveen Sharma

0

วิธีเพิ่มคำตอบที่ยอมรับ: (จากเอกสารสำหรับนักพัฒนาแอปเปิ้ล) "เมื่อคุณเปิด URL ที่สร้างขึ้นจากสตริงนี้ (openSettingsURLString) ระบบจะเปิดแอปการตั้งค่าและแสดงการตั้งค่าที่กำหนดเองของแอปหากมี ดังนั้นหากคุณต้องการเปิดการตั้งค่าสำหรับแอพของคุณให้สร้าง Settings.bundle ของคุณเอง


-1

เพิ่มในชั้นเรียนของคุณ

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

โทรแบบนี้

YourClass.showSettingsAlert("App would like to access camera", message: "App would like to access camera desc", onVC: fromViewController, onCancel: {
  print("canceled")
})
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.