當開啟藍芽後, 可進行搜索藍芽裝置.

(如何設定與開啟藍芽裝置請參考: 開啟藍芽)

 

Step 1: 偵測是否已開始搜尋藍芽

mCBCentralManager.isScanning

 

Step 2: 搜尋藍芽裝置

mCBCentralManager.scanForPeripheralsWithServices(nil, options: nil);

 

Step 3: 監聽搜尋裝置 

發現裝置時會經由callback function返回

(CBCentralManagerDelegate potocol's function)

func centralManager(central: CBCentralManager,

    didDiscoverPeripheral peripheral: CBPeripheral,

    advertisementData: [String : AnyObject],

    RSSI: NSNumber)

    }

 

Step 4: 停止搜尋裝置

 

mCBCentralManager.stopScan();

 

 

Source Code:

 

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]);

    }

    

    func isScanning() -> Bool {

        return mCBCentralManager.isScanning;

    }

    

    func startToScan() {

        if (mCBCentralManager.state == CBCentralManagerState.PoweredOff) {

            print("state is off");

            initCBCentralManager();

        } else {

            if (isScanning()) {

                print("state is scanning");

            } else {

                mCBCentralManager.scanForPeripheralsWithServices(nil, options: nil);

                print("start to scan: \(isScanning())");

            }

        }

    }

    

    func stopScanning() {

        mCBCentralManager.stopScan();

    }

 

}

 

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");

        }

    }

    

    func centralManager(central: CBCentralManager, didDiscoverPeripheral peripheral: CBPeripheral, advertisementData: [String : AnyObject], RSSI: NSNumber) {

        print("Device: \(peripheral.name) : \(peripheral.identifier.UUIDString)");

    }

}

 

 

文章標籤
創作者介紹
創作者 nickthomas55 的頭像
nickthomas55

Nick Carter

nickthomas55 發表在 痞客邦 留言(2) 人氣()


留言列表 (2)

發表留言
  • Calvin
  • 為何程式跑不進去 func isScanning() -> Bool { 這段呢?
  • nickthomas55
  • Hi, 您好
    請問您有在UI畫面中建立Button, 並設定Button與程式中 startToScan() 做連結嗎?

    以及藍芽是否有開啟呢?