Estimote SDK를 사용하여 iOS 10에 앱을 제작하고 있습니다. 나는 주변의 비컨을 탐지하기 위해 범위 모드를 사용하고 싶다. 지역 및 비콘의 UUID는 작은 샘플 프로젝트에서 확인 된대로 올바르게 설정됩니다.RACSignal for didRangeBeacons : inRegion : not working
내가 지금 짓고있는 응용 프로그램은 이상한 동작을 보이고 있습니다. 응용 프로그램을 시작한 후 beaconManager:didRangeBeacons:inRegion:
메서드는 호출 신호 옆에있는 경우에도 호출되지 않습니다.
블루투스를 사용/사용 중지하면 즉시 실행됩니다. 앱을 일시 중지하고 디버거를 사용하여 앱을 다시 시작하는 경우에도 마찬가지입니다.
어떤 문제가 있습니까? 매번 실행될 때마다 권한을 요청하고 콜백이 모니터링을 시작할 때까지 기다립니다 (설명서에 명시된대로). 나는 이미 더 많은 startRanging/stopRanging 호출 (필사적!)을 시도했지만 성공하지는 못했다.
아이디어가 있으십니까?
@implementation Model {}
- (instancetype)init {
self = [super init];
if (self) {
self.beaconManager = [ESTBeaconManager new];
self.beaconManager.delegate = self;
self.beaconRegion = [[CLBeaconRegion alloc]
initWithProximityUUID:[[NSUUID alloc]
initWithUUIDString:proximityUUID]
identifier:@"Playground"];
[self.beaconManager requestWhenInUseAuthorization];
self.beaconSignal = [self rac_signalForSelector:@selector(beaconManager:didRangeBeacons:inRegion:) fromProtocol:@protocol(ESTBeaconManagerDelegate)];
[[self.beaconSignal throttle:1]
subscribeNext:^(id x) {
NSLog(@"Did range fired");
}];
}
return self;
}
- (void)start {
[self.beaconManager startRangingBeaconsInRegion:self.beaconRegion];
}
- (void)beaconManager:(id)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status {
if(status == kCLAuthorizationStatusAuthorizedWhenInUse){
[self start];
}
}