如何在 Swift 中點選按鈕時開啟手機設定?


在 Swift 中,您可以透過點選按鈕開啟手機設定頁面。要開啟設定,您可以使用 UIApplication.shared.open() 方法。在 Swift 中,您可以使用預定義的表示式來開啟應用程式外部的特定螢幕。此預定義表示式將幫助您從應用程式中開啟設定螢幕。這是 iOS 中一個非常有用的功能。

這是主函式

if let url = URL(string:UIApplication.openSettingsURLString) {
   if UIApplication.shared.canOpenURL(url) {
      UIApplication.shared.open(url, options: [:], completionHandler: nil)
   }
}

程式碼的工作原理

  • UIApplication.openSettingsURLString 常量用於獲取手機設定的 URL。

  • if 語句檢查共享應用程式例項是否可以開啟 URL。

  • 如果可以開啟 URL,則呼叫共享應用程式例項的 open 方法以開啟設定。

您可以將此程式碼放在按鈕的動作方法中,以便在點選按鈕時開啟手機設定。

示例

import UIKit
class TestController: UIViewController {
    
   private lazy var clickButton: UIButton = {
      let button = UIButton()
      button.addTarget(self, action: #selector(handleButtonClick), for: .touchUpInside)
      button.backgroundColor = .darkGray
      button.setTitle("Open Settings", for: .normal)
      button.setTitleColor(.white, for: .normal)
      button.titleLabel?.font = UIFont.systemFont(ofSize: 18, weight: .semibold)
      button.layer.cornerRadius = 5
      button.translatesAutoresizingMaskIntoConstraints = false
      return button
   }()
    
   override func viewDidLoad() {
      super.viewDidLoad()
      initialSetup()
   }    
   private func initialSetup() {
        
      view.backgroundColor = .white
      navigationItem.title = "Settings"
        
      view.addSubview(clickButton)
        
      clickButton.widthAnchor.constraint(equalToConstant: 150).isActive = true
      clickButton.heightAnchor.constraint(equalToConstant: 50).isActive = true
      clickButton.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true
      clickButton.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
   }    
   @objc private func handleButtonClick() {
      if let url = URL(string:UIApplication.openSettingsURLString) {
         if UIApplication.shared.canOpenURL(url) {
            UIApplication.shared.open(url, options: [:], completionHandler: nil)
         }
      }
   }
}

輸出

在 iOS Swift 中開啟手機設定時請注意

  • 在 iOS 8 及更高版本中,可以訪問 UIApplication.openSettingsURLString 常量。如果您的程式與舊版 iOS 相容,則可能需要採取替代方法來訪問手機設定。

  • 在啟動 open 函式之前,您應該始終驗證應用程式是否可以訪問手機設定的 URL。這是因為並非所有裝置都載入了手機設定應用程式,或者家長控制限制了對應用程式的訪問。

  • 當使用手機設定 URL 觸發 open 方法時,手機設定軟體會在不同的程序中啟動。這意味著如果裝置記憶體不足,您的軟體可能會被停止並掛起。

  • 當手機設定應用程式啟動或啟動嘗試失敗時,將觸發 open 方法的完成處理程式。此完成處理程式可用於處理任何錯誤或在您的應用程式中執行其他操作。

  • 最佳實踐是在開啟手機設定應用程式時通知使用者應用程式為何需要訪問手機設定。這可以減少混淆並改善使用者體驗。

結論

在導航手機設定時,請務必記住,UIApplication.openSettingsURLString 常量在 iOS 8 及更高版本中可用,並且您應該始終在呼叫 open 方法之前檢查應用程式是否可以開啟手機設定 URL。此外,最好向使用者提供一條訊息,解釋應用程式為何需要訪問手機設定,並使用 open 方法的完成處理程式在您的應用程式中處理任何錯誤或執行其他操作。

更新於: 2023年5月4日

3K+ 次瀏覽

啟動您的 職業生涯

透過完成課程獲得認證

開始學習
廣告