ฉันจะเปิดการตั้งค่าโทรศัพท์ได้อย่างไรเมื่อคลิกปุ่ม?


160

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

ฉันกำลังใช้ Swift และ Xcode

คำตอบ:


301

การใช้ UIApplication.openSettingsURLString

อัปเดตสำหรับ Swift 5.1

 override func viewDidAppear(_ animated: Bool) {
    let alertController = UIAlertController (title: "Title", message: "Go to Settings?", preferredStyle: .alert)

    let settingsAction = UIAlertAction(title: "Settings", style: .default) { (_) -> Void in

        guard let settingsUrl = URL(string: UIApplication.openSettingsURLString) else {
            return
        }

        if UIApplication.shared.canOpenURL(settingsUrl) {
            UIApplication.shared.open(settingsUrl, completionHandler: { (success) in
                print("Settings opened: \(success)") // Prints true
            })
        }
    }
    alertController.addAction(settingsAction)
    let cancelAction = UIAlertAction(title: "Cancel", style: .default, handler: nil)
    alertController.addAction(cancelAction)

    present(alertController, animated: true, completion: nil)
}

สวิฟท์ 4.2

override func viewDidAppear(_ animated: Bool) {
    let alertController = UIAlertController (title: "Title", message: "Go to Settings?", preferredStyle: .alert)

    let settingsAction = UIAlertAction(title: "Settings", style: .default) { (_) -> Void in

        guard let settingsUrl = URL(string: UIApplicationOpenSettingsURLString) else {
            return
        }

        if UIApplication.shared.canOpenURL(settingsUrl) {
            UIApplication.shared.open(settingsUrl, completionHandler: { (success) in
                print("Settings opened: \(success)") // Prints true
            })
        }
    }
    alertController.addAction(settingsAction)
    let cancelAction = UIAlertAction(title: "Cancel", style: .default, handler: nil)
    alertController.addAction(cancelAction)

    present(alertController, animated: true, completion: nil)
}

ฉันจะใช้สิ่งนั้นได้อย่างไร @Marius Fanu
โซโลมอน Ayoola

ใช้ iOS8 @Marius Fanu
Solomon Ayoola

@AyoolaSolomon ฉันได้อัปเดตคำตอบของฉันเพื่อเพิ่มการแจ้งเตือนเกี่ยวกับviewDidAppearวิธีการด้วยปุ่มSettingsและCancel
Marius Fanu

2
ไม่ฉันไม่คิดอย่างนั้น ในการไปที่แอปของคุณแอปพลิเคชันของคุณควรใช้รูปแบบ URL ที่กำหนดเองและโทรUIApplication.sharedApplication().openURL(yourCustomURL)จากแอปปัจจุบัน แต่คุณไม่สามารถเข้าถึงได้จากแอปการตั้งค่า
Marius Fanu

5
@PersianBlue ถูกต้องใน iOS 10.1.1 นี่ไม่สามารถเปิดแอพการตั้งค่า
Michael Garito

237

⚠️ระวัง!

คำตอบนี้ขึ้นอยู่กับ API ที่ไม่มีเอกสารและเมื่อเร็ว ๆ นี้ (ตั้งแต่ iOS12) Apple กำลังปฏิเสธแอพด้วยวิธีการนี้

คำตอบเดิมด้านล่าง

สวิฟท์ 5

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

สวิฟต์ 4

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

หมายเหตุ: วิธีการต่อไปนี้ใช้ได้กับทุกเวอร์ชั่นที่ต่ำกว่า iOS 11 สำหรับรุ่นที่สูงกว่าแอพอาจถูกปฏิเสธเนื่องจากเป็น API ส่วนตัว

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

ก่อนอื่นให้กำหนดค่าแบบแผน URL ในโครงการของคุณ คุณจะพบมันในเป้าหมาย -> ข้อมูล -> โครงการ URL คลิกที่ปุ่ม + และพิมพ์คำนำหน้าในแบบแผน URL

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

สวิฟท์ 5

UIApplication.shared.open(URL(string: "App-prefs:Bluetooth")!)

สวิฟท์ 3

UIApplication.shared.open(URL(string:"App-Prefs:root=General")!, options: [:], completionHandler: nil)

รวดเร็ว

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

Objective-C

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

และต่อไปนี้คือ URL ที่มีอยู่ทั้งหมด

** บน IOS <12 **

  • การตั้งค่า: ราก = ทั่วไปและเส้นทาง = เกี่ยวกับ
  • การตั้งค่า: ราก = ทั่วไปและเส้นทาง = การเข้าถึง
  • การตั้งค่า: ราก = AIRPLANE_MODE
  • การตั้งค่า: ราก = ทั่วไปและเส้นทาง = AUTOLOCK
  • การตั้งค่า: ราก = ทั่วไปและเส้นทางการใช้ = / CELLULAR_USAGE
  • การตั้งค่า: ราก = ความสว่าง
  • การตั้งค่า: ราก = บลูทู ธ
  • การตั้งค่า: ราก = ทั่วไปและเส้นทาง = DATE_AND_TIME
  • การตั้งค่า: ราก = FaceTime
  • การตั้งค่า: ราก = ทั่วไป
  • การตั้งค่า: ราก = ทั่วไปและเส้นทาง = แป้นพิมพ์
  • การตั้งค่า: ราก = CASTLE
  • การตั้งค่า: ราก = CASTLE และเส้นทาง = STORAGE_AND_BACKUP
  • การตั้งค่า: ราก = ทั่วไปและเส้นทาง = INTERNATIONAL
  • การตั้งค่า: ราก = LOCATION_SERVICES
  • การตั้งค่า: ราก = ACCOUNT_SETTINGS
  • การตั้งค่า: ราก = MUSIC
  • การตั้งค่า: ราก = MUSIC & path = EQ
  • การตั้งค่า: ราก = MUSIC & path = VolumeLimit
  • การตั้งค่า: ราก = ทั่วไปและเส้นทาง = เครือข่าย
  • การตั้งค่า: ราก = NIKE_PLUS_IPOD
  • การตั้งค่า: ราก = หมายเหตุ
  • การตั้งค่า: ราก = NOTIFICATIONS_ID
  • การตั้งค่า: ราก = โทรศัพท์
  • การตั้งค่า: ราก = ภาพถ่าย
  • การตั้งค่า: ราก = ทั่วไปและเส้นทาง = ManagedConfigurationList
  • การตั้งค่า: ราก = ทั่วไปและเส้นทาง = รีเซ็ต
  • การตั้งค่า: ราก = เสียงและเสียง path = ริงโทน
  • การตั้งค่า: ราก = ซาฟารี
  • การตั้งค่า: ราก = ทั่วไปและเส้นทาง = ผู้ช่วย
  • การตั้งค่า: ราก = เสียง
  • การตั้งค่า: ราก = ทั่วไปและเส้นทาง = SOFTWARE_UPDATE_LINK
  • การตั้งค่า: ราก = ร้านค้า
  • การตั้งค่า: ราก = TWITTER
  • การตั้งค่า: ราก = FACEBOOK
  • prefs: root = ทั่วไป & path = การใช้งาน prefs: root = วิดีโอ
  • การตั้งค่า: ราก = ทั่วไปและเส้นทาง = เครือข่าย / VPN
  • การตั้งค่า: ราก = วอลล์เปเปอร์
  • การตั้งค่า: ราก = WIFI
  • การตั้งค่า: ราก = INTERNET_TETHERING
  • การตั้งค่า: ราก = โทรศัพท์และเส้นทาง = ถูกบล็อค
  • การตั้งค่า: ราก = DO_NOT_DISTURB

บน IOS 13

  • App-การตั้งค่าทั่วไปและเส้นทาง = เกี่ยวกับ
  • App-การตั้งค่า: AIRPLANE_MODE
  • App-การตั้งค่าทั่วไปและเส้นทาง = AUTOLOCK
  • App-การตั้งค่าบลูทู ธ
  • App-การตั้งค่าทั่วไปและเส้นทาง = DATE_AND_TIME
  • App-การตั้งค่า: FaceTime
  • App-การตั้งค่าทั่วไป
  • App-การตั้งค่าทั่วไปและเส้นทาง = แป้นพิมพ์
  • App-การตั้งค่า: CASTLE
  • App-การตั้งค่า: CASTLE และเส้นทาง = STORAGE_AND_BACKUP
  • App-การตั้งค่าทั่วไปและเส้นทาง = INTERNATIONAL
  • App-การตั้งค่า: เพลง
  • App-การตั้งค่า: หมายเหตุ
  • App-การตั้งค่า: NOTIFICATIONS_ID
  • App-การตั้งค่าโทรศัพท์
  • App-การตั้งค่า: รูปถ่าย
  • App-การตั้งค่าทั่วไปและเส้นทาง = ManagedConfigurationList
  • App-การตั้งค่าทั่วไปและเส้นทาง = รีเซ็ต
  • App-การตั้งค่า: เสียงและเสียง path = ริงโทน
  • App-การตั้งค่า: เสียง
  • App-การตั้งค่าทั่วไปและเส้นทาง = SOFTWARE_UPDATE_LINK
  • App-การตั้งค่า: ร้านค้า
  • App-การตั้งค่า: วอลล์เปเปอร์
  • App-การตั้งค่า: WIFI
  • App-การตั้งค่า: INTERNET_TETHERING
  • App-การตั้งค่า: DO_NOT_DISTURB

    ไม่ผ่านการทดสอบ

  • การตั้งค่าแอป: TWITTER (??)

  • การตั้งค่าแอป: FACEBOOK (??)
  • การตั้งค่าแอพ: NIKE_PLUS_IPOD (??)

หมายเหตุ:การตั้งค่าเครือข่ายจะไม่เปิดในโปรแกรมจำลอง แต่การเชื่อมโยงจะทำงานบนอุปกรณ์จริง


7
สิ่งนี้ใช้ไม่ได้กับ iOS 10 รันรหัสเดียวกันบน iOS 9.3 และการทำงานที่วิ่งบน iOS 10 และมันไม่ได้ (โดยไม่คำนึงถึง URL จะใช้)
Gruntcakes

18
สำหรับ iOS 10 ให้ใช้App-Prefsแทนprefsโครงร่างของสตริง URL เช่นApp-Prefs:root=WIFI
Desmond DAI

8
เมื่อเร็ว ๆ นี้ให้แอปตรวจสอบเพื่อเผยแพร่ใน App Store และ Apple ปฏิเสธเนื่องจากการใช้ "prefs: root" หรือ "App-Prefs: root" ฉันใช้มันเพื่อเปิดการตั้งค่า wifi เมื่อผู้ใช้ไม่มีการเชื่อมต่ออินเทอร์เน็ต
Marcel T

21
ตั้งแต่ iOS 12 ออกมาเร็ว ๆ นี้ Apple ปฏิเสธแอปซึ่งรวมถึงการเตรียมการเช่นนั้น โปรดระวังให้ดี แม้แต่แอปของฉันก็ถูกปฏิเสธด้วย
Thiha Aung

8
อย่าใช้App-Prefsหรือprefs:rootเนื่องจากเป็น API ส่วนตัวและถ้าคุณโชคดีมากแอปของคุณจะถูกปฏิเสธ
Tejas K

45

ใน iOS 8+ คุณสามารถทำสิ่งต่อไปนี้:

 func buttonClicked(sender:UIButton)
    {
        UIApplication.sharedApplication().openURL(NSURL(string: UIApplicationOpenSettingsURLString))
    }

สวิฟต์ 4

    let settingsUrl = URL(string: UIApplicationOpenSettingsURLString)!
    UIApplication.shared.open(settingsUrl)

16
สิ่งนี้จะนำคุณไปสู่การตั้งค่าเฉพาะแอพฉันจะนำพวกเขาไปยังหน้าการตั้งค่าทั่วไปหรือดียิ่งขึ้นไปยังส่วนสุขภาพได้อย่างไร
Ace Green

2
Swift 3 -UIApplication.shared.openURL(URL(string: UIApplicationOpenSettingsURLString)!)
Aviv Ben Shabat

@ AceGreen คุณทำส่วนสุขภาพหรือไม่
Saad

คุณจะเปิดเฉพาะแอพการตั้งค่าได้อย่างไร "หน้าแรก" ของมัน
Daniel Springer

ไม่มี "!" ลงชื่อURL(string: UIApplication.openSettingsURLString).map { UIApplication.shared.open($0, options: [:], completionHandler: nil) }
ober

21

การใช้คำใบ้ของ @ vivek ฉันพัฒนาคลาส utils ตามSwift 3หวังว่าคุณจะซาบซึ้ง!

import Foundation
import UIKit

public enum PreferenceType: String {

    case about = "General&path=About"
    case accessibility = "General&path=ACCESSIBILITY"
    case airplaneMode = "AIRPLANE_MODE"
    case autolock = "General&path=AUTOLOCK"
    case cellularUsage = "General&path=USAGE/CELLULAR_USAGE"
    case brightness = "Brightness"
    case bluetooth = "Bluetooth"
    case dateAndTime = "General&path=DATE_AND_TIME"
    case facetime = "FACETIME"
    case general = "General"
    case keyboard = "General&path=Keyboard"
    case castle = "CASTLE"
    case storageAndBackup = "CASTLE&path=STORAGE_AND_BACKUP"
    case international = "General&path=INTERNATIONAL"
    case locationServices = "LOCATION_SERVICES"
    case accountSettings = "ACCOUNT_SETTINGS"
    case music = "MUSIC"
    case equalizer = "MUSIC&path=EQ"
    case volumeLimit = "MUSIC&path=VolumeLimit"
    case network = "General&path=Network"
    case nikePlusIPod = "NIKE_PLUS_IPOD"
    case notes = "NOTES"
    case notificationsId = "NOTIFICATIONS_ID"
    case phone = "Phone"
    case photos = "Photos"
    case managedConfigurationList = "General&path=ManagedConfigurationList"
    case reset = "General&path=Reset"
    case ringtone = "Sounds&path=Ringtone"
    case safari = "Safari"
    case assistant = "General&path=Assistant"
    case sounds = "Sounds"
    case softwareUpdateLink = "General&path=SOFTWARE_UPDATE_LINK"
    case store = "STORE"
    case twitter = "TWITTER"
    case facebook = "FACEBOOK"
    case usage = "General&path=USAGE"
    case video = "VIDEO"
    case vpn = "General&path=Network/VPN"
    case wallpaper = "Wallpaper"
    case wifi = "WIFI"
    case tethering = "INTERNET_TETHERING"
    case blocked = "Phone&path=Blocked"
    case doNotDisturb = "DO_NOT_DISTURB"

}

enum PreferenceExplorerError: Error {
    case notFound(String)
}

open class PreferencesExplorer {

    // MARK: - Class properties -

    static private let preferencePath = "App-Prefs:root"

    // MARK: - Class methods -

    static func open(_ preferenceType: PreferenceType) throws {
        let appPath = "\(PreferencesExplorer.preferencePath)=\(preferenceType.rawValue)"
        if let url = URL(string: appPath) {
            if #available(iOS 10.0, *) {
                UIApplication.shared.open(url, options: [:], completionHandler: nil)
            } else {
               UIApplication.shared.openURL(url)
            }
        } else {
            throw PreferenceExplorerError.notFound(appPath)
        }
    }

}

สิ่งนี้มีประโยชน์มากเนื่องจาก API นั้นจะเปลี่ยนไปอย่างแน่นอนและคุณสามารถปรับโครงสร้างใหม่ได้ครั้งเดียวและเร็วมาก!


5
นี่จะผ่านการตรวจสอบของ Apple หรือไม่
L_Sonic

ฉันจะเพิ่มอีกหนึ่งสิ่งเพื่อให้ดีขึ้นเล็กน้อย ใน enum คุณสามารถสร้างตัวแปรชนิดสตริงด้วยชื่อ urlString จากนั้นส่งคืน "App-Prefs: root =" = self.rawValue สิ่งนี้จะลบความจำเป็นในการ appPath และการอนุญาตส่วนตัวแบบคงที่ ไชโย
mn1

การตั้งค่าการแจ้งเตือนไม่เปิดใน iOS 11
Metin Atalay

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

1
@L_Sonic ไม่มันจะไม่ผ่านการตรวจสอบและถ้าเป็นเช่นนั้นก็อาจได้รับการตั้งค่าสถานะแบบสุ่มในการปรับปรุงในอนาคตใด ๆ ที่คุณผลักดัน
RP Carson

16

การตอบสนองครั้งแรกจากScheme URL เฉพาะแอปทำงานสำหรับฉันใน iOS 10.3

if let appSettings = URL(string: UIApplicationOpenSettingsURLString + Bundle.main.bundleIdentifier!) {
    if UIApplication.shared.canOpenURL(appSettings) {
      UIApplication.shared.open(appSettings)
    }
  }

นี่ควรจะเปิดอะไร
Daniel Springer

12

App-Prefs:root=Privacy&path=LOCATIONทำงานให้ฉันเพื่อไปที่การตั้งค่าตำแหน่งทั่วไป หมายเหตุ: ใช้งานได้บนอุปกรณ์เท่านั้น


12
สิ่งนี้ถูกปฏิเสธ
Daniel Springer

7

ใน ios10 / Xcode 8 ในโปรแกรมจำลอง:

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

โรงงาน

UIApplication.shared.openURL(URL(string:"prefs:root=General")!)

ไม่.


มีNSคำนำหน้าถูกลบออกใน iOS 10?
JC Rocamonde

2
วิธีนี้จะใช้งานได้หากแอปของคุณมีไฟล์. bundle (การตั้งค่าแอพของคุณ)
Sophy Swicz

@Sophy Swicz ฉันจะเพิ่มไฟล์. bundle ได้อย่างไร
นักพัฒนา

1
@Developer github.com/phynet/SettingBundleiOSProject นอกจากนี้การตั้งค่าแอพของคุณยังเป็นบริการทั้งหมดที่แอปของคุณอนุญาตให้ใช้และแสดงใน General -> การตั้งค่าแอปของคุณ
Sophy Swicz

7

ฉันเห็นโค้ดบรรทัดนี้แล้ว

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

ไม่ทำงานมันไม่ได้ผลสำหรับฉันใน ios10 / Xcode 8 เพียงแค่ความแตกต่างของรหัสเล็กน้อยโปรดแทนที่ด้วย

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

Swift3

UIApplication.shared.openURL(URL(string:"prefs:root=General")!)

แทนที่ด้วย

UIApplication.shared.openURL(URL(string:"App-Prefs:root=General")!)

หวังว่ามันจะช่วย ไชโย


1
สาเหตุ: แอปถูกปฏิเสธ
ergunkocak

7

คำเตือน: prefs:rootหรือApp-Prefs:rootแผนการ URL ถือว่าเป็น API ส่วนตัว Apple อาจปฏิเสธแอปของคุณหากคุณใช้แอปเหล่านี้คือสิ่งที่คุณอาจได้รับเมื่อส่งแอปของคุณ:

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

ขั้นตอนถัดไป

หากต้องการแก้ไขปัญหานี้โปรดแก้ไขแอปของคุณเพื่อมอบฟังก์ชันการทำงานที่เกี่ยวข้องโดยใช้ API สาธารณะหรือลบฟังก์ชันการทำงานโดยใช้รูปแบบ URL "prefs: root" หรือ "App-Prefs: root"

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


ไม่มีวิธีที่ได้รับการสนับสนุนในการเปิดการตั้งค่าเป็น 'หน้า' Wi-Fi / ภาษา / ตำแหน่ง ความจริงที่ว่าสิ่งนี้ทำงานได้ใน iOS 9 เป็นข้อผิดพลาดที่ได้รับการแก้ไขใน iOS 10 สำหรับข้อมูลเพิ่มเติมโปรดดูฟอรั่ม.developer.apple.com/message/186656#186656
Mohit Kumar

6

Swift 4.2, iOS 12

open(url:options:completionHandler:)วิธีการได้รับการปรับปรุงให้มีตัวเลือกที่ไม่ใช่ศูนย์พจนานุกรมซึ่งเป็นของโพสต์นี้มีเพียงหนึ่งตัวเลือกที่เป็นไปได้ของชนิดUIApplication.OpenExternalURLOptionsKey(ในตัวอย่าง)

@objc func openAppSpecificSettings() {

    guard let url = URL(string: UIApplication.openSettingsURLString),
        UIApplication.shared.canOpenURL(url) else {
            return
    }

    let optionsKeyDictionary = [UIApplication.OpenExternalURLOptionsKey(rawValue: "universalLinksOnly"): NSNumber(value: true)]

    UIApplication.shared.open(url, options: optionsKeyDictionary, completionHandler: nil)

}

การสร้าง URL อย่างชัดเจนเช่น "App-Prefs" นั้นมี AFAIK ทำให้แอพบางตัวถูกปฏิเสธจากร้านค้า


ฉันยืนยันสิ่งนี้แอปพลิเคชันใช้ได้กับ "App-Prefs" มาก่อน แต่หลังจากเหตุการณ์พิเศษของ Apple การอัปเดตของฉันถูกปฏิเสธกลับไปที่ UIApplicationOpenSettingsURLString
Vitalii

5

กำลังเพิ่มไปยัง @Luca Davanzo

iOS 11, การตั้งค่าการอนุญาตบางอย่างได้ย้ายไปที่เส้นทางแอพ:

รองรับ iOS 11

 static func open(_ preferenceType: PreferenceType) throws {
    var preferencePath: String
    if #available(iOS 11.0, *), preferenceType == .video || preferenceType == .locationServices || preferenceType == .photos {
        preferencePath = UIApplicationOpenSettingsURLString
    } else {
        preferencePath = "\(PreferencesExplorer.preferencePath)=\(preferenceType.rawValue)"
    }

    if let url = URL(string: preferencePath) {
        if #available(iOS 10.0, *) {
            UIApplication.shared.open(url, options: [:], completionHandler: nil)
        } else {
            UIApplication.shared.openURL(url)
        }
    } else {
        throw PreferenceExplorerError.notFound(preferencePath)
    }
}

2
สามารถผ่านรีวิวของ Apple ได้หรือไม่ ฉันหมายความว่าสิ่งนี้จะนำไปสู่การปฏิเสธแอปหรือไม่
Aakash Dave

4
เมื่อฉันเรียกใช้รหัสนี้ฉันเพิ่งพาฉันไปที่หน้าการตั้งค่า ไม่ใช่แท็บการตั้งค่าเฉพาะในนั้น
Aakash Dave

2

SWIFT 4

การดำเนินการนี้อาจใช้การตั้งค่าเฉพาะของแอปหากเป็นสิ่งที่คุณต้องการ

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

ขอบคุณ ... ฉันทำงานอย่างนั้น ... แต่ฉันต้องการเปลี่ยนการตั้งค่าในแอพที่พัฒนาโดยผู้พัฒนารายอื่น ตัวอย่างเช่นกดปุ่มและเปลี่ยนการตั้งค่าการแจ้งเตือนของ Facebook เพื่อไม่ให้มีข้อความในระหว่างการประชุม ฉันคาดการณ์ว่าอาจมีโซลูชัน MDM ... หรือไม่
IrishGringo

@IrishGringo วิธีเดียวในการเปลี่ยนการตั้งค่าของแอพ Facebook สำหรับผู้ใช้เพื่อเปิดการตั้งค่าของแอพ Facebook ด้วยตัวเองโดยการนำทางผ่านการตั้งค่าทั่วไป >> การแจ้งเตือน >> Facebook
BennyTheNerd

0

ดังที่ @niravdesai กล่าวว่าการตั้งค่าแอพ ฉันพบว่าใช้App-Prefs:งานได้กับอุปกรณ์ iOS 9, 10 และ 11 ที่ทดสอบแล้ว ในขณะที่prefs:ทำงานเฉพาะบน iOS 9

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.