Hallo Leute,
ich hätte da eine Frage bezüglich der Implementierung einer Bluetooth
Verbindung zwischen meiner iPhone6 App und einem anderen device. In
diesem Fall handelt es sich dabei um ein MacBook Pro (Retina, Mitte
2012).
Der unten eingefügte Swift Quellcode sollen beim Start der App alle
Bluetooth Devices in der Umgebung suchen und sich dann nach Möglichkeit
mit meinem MacBook verbinden. Leider gibt es dazu von meinerseits noch
einige Unklarheiten und Dinge die nicht Funktionieren:
1. Mein MacBook wird nicht gefunden. Es ist sichtbar und sollte BT 4.0
unterstützen. In den Einstellungen vom iPhone kann ich es auch manuell
suchen und finden.
2. (MARK 1)
Was macht die aufgeführte Methode scanForPeripherals wirklich? Sucht
diese Funktion alle Geräte in der Nähe oder bricht sie die Suche nach
einem Gerät ab?
3. (MARK 2)
Nach dem Scan Vorgang spring das Programm wie gewünscht in die Funktion:
centralManager(central: CBCentralManager, didDiscoverPeripheral
peripheral: CBPeripheral, advertisementData: [String : AnyObject], RSSI:
NSNumber)
Jedoch wird auch bei mehreren Geräten in der Umgebung immer nur eins
angezeigt (nur mein MacBook nicht)? Deshalb Frage 1... Naja aber soweit
so gut, auch mit nur irgendeinem anderen Gerät sollte ja zumindest ein
Verbindungsaufbau erfolgen...
4. (MARK 3)
Die Methode connectPeripheral wird zwar ausgeführt, jedoch passiert
nichts danach. Nach meinem Verständnis müsste doch eins der unten
aufgeführten Ereignisse in jedem Fall aufgerufen werden oder nicht?
Selbst bei einem gescheiterten Verbindungsversuch gehe ich davon aus,
dass die Funktion:
func centralManager(central: CBCentralManager,
didFailToConnectPeripheral peripheral: CBPeripheral, error: NSError?)
{print("Failed")}
ausgeführt wird... leider passiert gar nichts...
Ziemlich viele Fragen, aber ich hoffe, ihr könnt mir trotzdem helfen...
Vielen Dank!
1 | import UIKit
|
2 | import CoreBluetooth
|
3 | import Foundation
|
4 |
|
5 | class ViewController: UIViewController, CBCentralManagerDelegate, CBPeripheralDelegate {
|
6 |
|
7 | override func viewDidLoad() {
|
8 | super.viewDidLoad()
|
9 | // Do any additional setup after loading the view, typically from a nib.
|
10 | manager = CBCentralManager(delegate: self, queue: nil);
|
11 |
|
12 | }
|
13 |
|
14 | override func didReceiveMemoryWarning() {
|
15 | super.didReceiveMemoryWarning()
|
16 | // Dispose of any resources that can be recreated.
|
17 | }
|
18 |
|
19 | var manager: CBCentralManager!
|
20 |
|
21 |
|
22 | func centralManagerDidUpdateState(central: CBCentralManager) {
|
23 |
|
24 | //Überprüfe ob Bluetooth verfügbar und an ist!
|
25 | switch(central.state) {
|
26 | case .PoweredOn:
|
27 | print("Power onn!")
|
28 | //Bluetooth ist an und es soll nach Geräten gesucht werden!
|
29 | //MARK 1:
|
30 | manager.scanForPeripheralsWithServices(nil, options: nil)
|
31 | case .PoweredOff:
|
32 | print("Power off!")
|
33 | case .Resetting:
|
34 | print("Resetting!")
|
35 | case .Unauthorized:
|
36 | print("Unauthorized!")
|
37 | case .Unknown:
|
38 | print("Unknown!")
|
39 | case .Unsupported:
|
40 | print("Unsupported!")
|
41 | }
|
42 | }
|
43 |
|
44 |
|
45 | func centralManager(central: CBCentralManager, didDiscoverPeripheral peripheral: CBPeripheral, advertisementData: [String : AnyObject], RSSI: NSNumber) {
|
46 | //Gebe die Gefundenen Peripherals aus!
|
47 | //MARK 2:
|
48 | print("\(peripheral)")
|
49 | //Verbinde mit dem gefundenen Gerät
|
50 | //MARK 3:
|
51 | manager.connectPeripheral(peripheral, options: nil)
|
52 | print("Connect")
|
53 | }
|
54 |
|
55 |
|
56 | func centralManager(central: CBCentralManager, didConnectPeripheral peripheral: CBPeripheral) {
|
57 | print("Passt")
|
58 | }
|
59 |
|
60 | func centralManager(central: CBCentralManager, didFailToConnectPeripheral peripheral: CBPeripheral, error: NSError?) {
|
61 | print("Failed")
|
62 | }
|
63 |
|
64 | func centralManager(central: CBCentralManager, willRestoreState dict: [String : AnyObject]) {
|
65 | print("Restore")
|
66 | }
|
67 |
|
68 | func centralManager(central: CBCentralManager, didDisconnectPeripheral peripheral: CBPeripheral, error: NSError?) {
|
69 | print("Disconnected")
|
70 | }
|
71 | }
|