2015-01-08 1 views
0

Я новичок в быстром. Я не в состоянии получить обратный вызов centralManagerDidUpdateState :: ж/следующий игровой площадке (т.е .: я думал, что инициализация будет перезванивать в centralManagerDidUpdateState):Невозможно получить Core Bluetooth для работы в игровой площадке Swift iOS

import CoreBluetooth 
class BTDiscovery:NSObject, 
CBCentralManagerDelegate { 

    func centralManagerDidUpdateState(central: CBCentralManager!) { 
     println("here") 
    } 
} 

var bt = BTDiscovery() 

ли Ядро Bluetooth поддержки на детской площадке IOS Swift? Я пробовал это для игровой площадки OSX и IOBluetooth. Это тоже не сработало. Что я делаю не так?

спасибо.

ответ

2

Я думаю, что вы сталкиваетесь с тем, что игровая площадка является синхронной, а обнаружение BlueTooth является асинхронным. Для того, чтобы позволить ему работать, вы должны добавить некоторые вещи к вашей детской площадке, чтобы асинхронная операция:

import XCPlayground 
XCPSetExecutionShouldContinueIndefinitely(continueIndefinitely: true) 

Также обратите внимание, что поскольку площадка IOS выполняется на тренажере, я бы не обязательно ожидать CB работать там все.

У вас также есть более фундаментальные проблемы в том, что вы ничего не делаете, чтобы фактически вызвать обнаружение. Вам нужно создать экземпляр CBCentralManager и использовать его, чтобы управлять процессом обнаружения:

import Cocoa 
import XCPlayground 
import CoreBluetooth 

class BTDiscovery:NSObject, CBCentralManagerDelegate { 

    func centralManagerDidUpdateState(central: CBCentralManager!) { 
     println("here") 
    } 

} 

var bt = BTDiscovery() 
var central = CBCentralManager(delegate: bt, queue: dispatch_get_main_queue()) 

XCPSetExecutionShouldContinueIndefinitely(continueIndefinitely: true) 
+0

спасибо. Единственная коррекция вашего комментария - пока нет открытия, потому что я хотел посмотреть, была ли инициализация (var bt = BTDiscovery() получена в DidUpdateState. Когда этого не произошло, я понял, что что-то не работает. на OSX с IOBluetooth.Я теперь попробую еще раз.Я согласен с вашей репутацией: симулятор/нет поддержки Core Bluetooth. Снова, СПАСИБО. – user1255603

+0

didUpdateState не будет вызываться в вашем примере, потому что без CBCentralManager нечего звонить он (в дополнение к асинхронным вопросам) –

1

Вы можете использовать только Bluetooth Core, на реальном устройстве IOS; он не поддерживается в симуляторе и, кроме того, он не поддерживается на игровой площадке, так как это также выполняется на вашем Mac, а не на устройстве iOS.

Смежные вопросы