iOS kontakt.io beacons搜索

时间:2014-07-10 09:16:31

标签: ios objective-c bluetooth

我有两个kontakt.io Beacons。我可以使用AppStore中提供的默认Kontakt.io应用程序找到它。但是当我使用SDK并尝试在我的自定义应用程序中找到它时,应用程序会请求蓝牙,这意味着它会对其执行某些操作,但不会找到信标。

根据documentation,我必须只创建一个KTKBeaconManager类的对象,分配一个KTKBeaconManagerDelegate并调用startFindingDevices方法。之后,只要设备在范围内发生变化,代理就会收到回调。我使用名为BeaconManager的类扩展了KTKBeaconManager。这是它的代码(是的,我已经导入了所有内容和代码编译。我没有把它放在这里以节省空间。)。

BeaconManager.h

@interface BeaconManager : KTKBeaconManager <KTKBluetoothManagerDelegate>
@end

BeaconManager.m

@implementation BeaconManager
- (instancetype)init
{
    self = [super init];
    if (self) {
        //Setting the delegate to self
        self.delegate = self;
    }
    return self;
}

- (void)bluetoothManager:(KTKBluetoothManager *)bluetoothManager didChangeDevices:(NSSet *)devices {
    NSLog(@"Entered didChangeDevices. Devices size: %d", devices.count);
}
@end

开始搜索。

BeaconManager *beaconManager = [BeaconManager new];
[beaconManager startFindingDevices];
[beaconManager reloadDevices]; //Tells the manager to forget all devices and start searching again.

这实际上是来自documentation的示例代码,但它不起作用。任何人都会经历类似的事情,并且知道该怎么做?

2 个答案:

答案 0 :(得分:2)

您的beaconManager很可能在创建之后被解除分配。您必须将其移动到实例变量。

答案 1 :(得分:0)

它不是直接写的,但你应该知道对象的生活范围 - 如果你想让它一直工作等它应该是一个属性。