iOS - 開啟藍芽

當藍牙位開啟時,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.swift
1
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.swift
1
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()
}
}
作者

Nick Lin

發表於

2016-07-05

更新於

2023-01-18

許可協議


評論