當藍牙位開啟時,iOS 限制使用者在APP可打開或關閉藍牙的權限。
因此目前只能進入設定來開啟或關閉。
當APP需要使用藍牙,但藍牙為關閉時,iOS會彈出訊息來提醒使用者。
Step 1: import CoreBluetooth
Step 2: 新增 Class : BtManage 並且 extension potocol : CBCentralManagerDelegate
Step 3: 新增參數 mCBCentralManager : CBCentralManager!
Step 4: 初始化 mCBCentralManager 並設定參數 CBCentralManagerOptionShowPowerAlertKey = true
CBCentralManagerOptionShowPowerAlertKey 參數預設值為 false, 當藍芽未開啟時, 並不會詢問使用者是否要開啟.
必須設定為 true , 當系統偵測到藍芽未開啟時, 才會詢問使用者.
Step 5: 監聽藍芽 State
當開啟或關閉, 會由callback function : centralManagerDidUpdateState 返回結果
Source Code
BtManager.swift1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| import Foundation import CoreBluetooth
class BtManager : NSObject { var mCBCentralManager: CBCentralManager!
override init() { super.init(); initCBCentralManager(); }
internal func initCBCentralManager() { mCBCentralManager = CBCentralManager(delegate: self, queue: nil, options:[CBCentralManagerOptionShowPowerAlertKey: true]); } }
extension BtManager : CBCentralManagerDelegate { func centralManagerDidUpdateState(central: CBCentralManager) { switch (central.state) { case CBCentralManagerState.PoweredOn: print("state On"); case CBCentralManagerState.PoweredOff: print("state Off"); case CBCentralManagerState.Unknown: fallthrough; default: print("state Unknow"); } } }
|
ViewController.swift1 2 3 4 5 6 7 8 9 10 11 12 13
| import UIKit class ViewController: UIViewController { var mBtManager : BtManager!;
override func viewDidLoad() { super.viewDidLoad() mBtManager = BtManager(); }
override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() } }
|