我有两个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的示例代码,但它不起作用。任何人都会经历类似的事情,并且知道该怎么做?
答案 0 :(得分:2)
您的beaconManager很可能在创建之后被解除分配。您必须将其移动到实例变量。
答案 1 :(得分:0)
它不是直接写的,但你应该知道对象的生活范围 - 如果你想让它一直工作等它应该是一个属性。