2014-07-10 1 views
0

나는 두 개의 kontakt.io 비콘을 가지고 있습니다. AppStore에서 사용할 수있는 기본 Kontakt.io 앱을 사용하여 찾을 수 있습니다. 하지만 SDK를 사용하여 내 맞춤 앱에서 SDK를 찾으면 앱에서 블루투스를 요청합니다. 즉, 블루투스가 무언가를 수행하지만 비컨은 발견되지 않습니다.iOS kontakt.io beaconons 검색

documentation에 따르면 KTKBeaconManager 클래스의 개체를 만들고 KTKBeaconManagerDelegate를 지정하고 startFindingDevices 메서드를 호출해야합니다. 그 후에는 범위 내의 장치가 변경 될 때마다 대리인이 콜백을 수신해야합니다. 나는 KTKBeaconManager를 BeaconManager라는 클래스로 확장했다. 여기에 코드가 있습니다 (예, 모든 것을 가져오고 코드를 컴파일했습니다. 공간을 절약하기 위해 여기에 넣지 않았습니다.). 검색을 시작

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

beaconManager는 생성 직후 할당이 취소되었을 가능성이 큽니다. 인스턴스 변수로 이동해야합니다.

0

직접 쓰는 것은 아니지만 개체의 삶의 범위가 무엇인지 알아야합니다. 항상 작동하도록하려면 속성이어야합니다.

+0

예, 그렇습니다. 저는 Objective-C의 초보자였습니다. 그리고 Java로 작업하기 전에, 이렇게 작동하는 곳에서 작동했기 때문에 그것이 작동 할 것이라고 생각했습니다. – Adogeon

+0

이상한, 내가 알고있는 모든 프로그래밍 언어에서, 프로그램은 범위가 존재하는 메소드를 떠날 때 할당 해제됩니다. 내가 아는 한 자바에서도 마찬가지입니다. –

+0

맞아요, 할당이 해제되고 참조가 파기되므로 참조 카운터는 실제로 그 객체에서 실행중인 코드가 있더라도 전체 객체를 파괴합니다. Java는 콜백을 제공하는 참조가있는 객체에 대한 참조가 없더라도 실행중인 객체의 코드를 유지합니다. – Adogeon