OStack程序员社区-中国程序员成长平台

标题: ios - 即使应用程序在同一个地方,信标的接近范围也会来回变化 [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-13 07:17
标题: ios - 即使应用程序在同一个地方,信标的接近范围也会来回变化

Beacon Proximity range 将接近响应更改为 Near - Immediate - Far,即使 ios 设备保持在同一位置。

当我在接近响应接近时打开 View 时。我来回得到接近响应,近 - 立即然后近。它一次又一次地显示 View

我们如何解决这个问题。是否有任何事件处理程序。

谢谢。



Best Answer-推荐答案


接近度和准确度值似乎很“嘈杂”。它也可能取决于您的环境。水(以及人)会吸收蓝牙使用的频率,因此移动的人可能会产生影响,但我观察到当两台设备都放在我的 table 上时,其距离在 1.2m 和 1.9m 之间。

我认为您将不得不处理应用程序中的噪音。 View 打开后,您应该将其保持打开状态,直到信标“远”(或您获得区域退出)一段时间。如果状态转换回接近或立即,则重置计时器。

你需要使用一些类似下面的代码-

-(void)locationManagerCLLocationManager *)manager
    didRangeBeaconsNSArray *)beacons
           inRegionCLBeaconRegion *)region {

    CLBeacon *beacon=beacons[0];

    switch (beacon.proximity) {

    case CLProximityFar:
        if (self.farTimer==nil) {
            self.farTimer=[NSTimer scheduledTimerWithTimeInterval:30 target:self selectorselector(farTimerFired userInfo:beacon repeats:NO];
        }
    break;

    case CLProximityNear:
    case CLProximityImmediate:
        if (self.farTimer!=nil) {
            [self.farTimer invalidate];
            self.farTimer=nil;
        }
    break;

    case CLProximityUnknown:
         NSLog(@"Beacon proximity is unknown");
    break;
   }
}

-(void) farTimerFiredNSTimer *)timer {
 CLBeacon *beacon=(CLBeacon *)timer.userInfo;
 NSLog(@"Beacon %@ is really far",beacon.proximityUUID.UUIDString);
 self.farTimer=nil;
}

关于ios - 即使应用程序在同一个地方,信标的接近范围也会来回变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22627580/






欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) Powered by Discuz! X3.4