菜鸟教程小白 发表于 2022-12-13 10:27:02

ios - 在后台关闭 iBeacons 监控并关闭应用程序


                                            <p><p>我正在使用 IBeacon 构建一个简单的 ios 应用程序,我使用 startMonitoringForRegion 来检测信标。那是 AppDelegte.m 代码:​​</p>

<pre><code>    NSUUID *beaconUUID = [ initWithUUIDString:@&#34;0040C159-12F6-4FC3-9189-87C069FFE5CF&#34;];
    NSString *regionIdentifier = @&#34;iBeacons region 1&#34;;
    self.beaconRegion = [ initWithProximityUUID: beaconUUID identifier: regionIdentifier ];
    self.beaconRegion.notifyEntryStateOnDisplay = YES;
    self.locationManager = [init];
    self.locationManager.delegate = self;
    self.locationManager.pausesLocationUpdatesAutomatically = NO;
    ;
    ;
</code></pre>

<p>然后在 didDetermineState 回调:</p>

<pre><code>- (void)locationManager:(CLLocationManager *)manager didDetermineState:(CLRegionState)state forRegion:(CLRegion *)region{

    if (state == CLRegionStateInside) {
      //Start Ranging
      ;
      NSLog(@&#34;didDetermineState --&gt;enter region&#34;);
    }
    else{
      //Stop Ranging
      ;
      NSLog(@&#34;didDetermineState --&gt;exit region&#34;);
    }

}
</code></pre>

<p>当 iBeacons 彼此远离时,这在前台、后台或关闭应用程序时都可以正常工作。但是当 iBeacons 彼此靠近时,我发现了一些问题。</p>

<p>在执行了几次测试后,我得出结论,RangingBeaconsInRegion 在后台或应用程序关闭时无法正常工作,只能进行监控。 </p>

<p>当您进入或退出信标区域时,应用程序将在后台启动约 5 秒,并会收到对 didDetermineState: forRegion: 方法的回调。您可以在这 5 秒内在后台进行测距,之后 iOS 将再次暂停您的应用。</p>

<p>当 iBeacons 彼此远离时,这是完美的。当 iBeacon 距离太近,回调 didDetermineState: not called 退出 iBeacon 区域,然后进入下一个 iBeacon 区域时,就会出现问题。</p>

<p>有没有办法手动强制区域退出?或者其他解决这个问题的方法?</p>

<p>谢谢!</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>这是一个真正的问题。当信标具有重叠传输并且您的区域包含所有它们时,您将不会收到进入/退出事件,因为一个消失而另一个出现。</p>

<p>有很多方法可以解决这个问题,但没有一个是完美的解决方案。你可以:</p>

<ul>
<li>在后台将测距延长至 3 分钟。</li>
<li>构建您的信标标识符和区域,以便您尽可能多地获得退出/进入事件。</li>
</ul>

<p>您可以在此处阅读第一种技术的更详细讨论:<a href="http://developer.radiusnetworks.com/2014/11/13/extending-background-ranging-on-ios.html" rel="noreferrer noopener nofollow">http://developer.radiusnetworks.com/2014/11/13/extending-background-ranging-on-ios.html</a> </p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 在后台关闭 iBeacons 监控并关闭应用程序,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/29264178/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/29264178/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 在后台关闭 iBeacons 监控并关闭应用程序