Bleu
Bleu is a Bluetooth library. Bleu is the easiest way to operate CoreBluetooth.
Bleu is possible to operate by replacing Bluetooth 's Peripheral and Central with Server and Client. Bleu can be developed event-driven.
Installation
CocoaPods
- Insert
pod 'Bleu'to your Podfile. - Run
pod install.
Note: CocoaPods 1.1.0 is required to install Bleu.
Usage
Please customize Communicable+.swift.
uuidgen // create uuid
extension Communicable {
public var serviceUUID: CBUUID {
return CBUUID(string: "YOUR UUID")
}
}
struct GetUserIDItem: Communicable {
public var method: RequestMethod {
return .get(isNotified: false)
}
public var characteristicUUID: CBUUID {
return CBUUID(string: "YOUR UUID")
}
}
struct PostUserIDItem: Communicable {
public var method: RequestMethod {
return .post
}
public var characteristicUUID: CBUUID {
return CBUUID(string: "YOUR UUID")
}
}
😃
Get
Peripheral(Server)
Bleu.addReceiver(Receiver(GetUserID(), get: { [weak self] (manager, request) in
guard let text: String = self?.textField.text else {
manager.respond(to: request, withResult: .attributeNotFound)
return
}
request.value = text.data(using: .utf8)
manager.respond(to: request, withResult: .success)
}))
Bleu.startAdvertising()
Central(Client)
let request: Request = Request(communication: GetUserID()) { [weak self] (peripheral, characteristic, error) in
if let error = error {
debugPrint(error)
return
}
let data: Data = characteristic.value!
let text: String = String(data: data, encoding: .utf8)!
self?.centralTextField.text = text
}
Bleu.send([request]) { completedRequests, error in
if let error = error {
print("timeout")
}
}
😃
Post
Peripheral(Server)
Bleu.addReceiver(Receiver(PostUserID(), post: { (manager, request) in
let data: Data = request.value!
let text: String = String(data: data, encoding: .utf8)!
print(text)
manager.respond(to: request, withResult: .success)
}))
Bleu.startAdvertising()
Central(Client)
let data: Data = "Sample".data(using: .utf8)!
let request: Request = Request(communication: PostUserID()) { (peripheral, characteristic, error) in
if let error = error {
debugPrint(error)
return
}
print("success")
}
request.value = data
Bleu.send([request]) { completedRequests, error in
if let error = error {
print("timeout")
}
}
