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.
- Insert
pod 'Bleu'
to your Podfile. - Run
pod install
.
Note: CocoaPods 1.1.0 is required to install Bleu.
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")
}
}
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()
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")
}
}
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()
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")
}
}