【问题标题】:iBeacon Technology (iOS Development)iBeacon 技术(iOS 开发)
【发布时间】:2015-02-22 07:14:20
【问题描述】:

我需要对 iBeacon 技术的支持。在我们的例子中,我想要一个持续扫描(测距)iBeacons 的功能,因为我们的应用程序是在前台或后台。我们知道使用 CLLocationManager 标准更新位置方法是可能的。但我们不想使用标准的位置更新(因为我们不想冒电池耗尽的风险)。是否有任何其他选项可以在不使用 CLLocationManager 的情况下启动 CLBeaconRegion 的连续测距?

【问题讨论】:

    标签: ios cllocationmanager ibeacon ios-bluetooth


    【解决方案1】:

    在 iOS 上检测 iBeacon 传输的唯一方法是使用 CoreLocation,您说得对,恒定测距确实会显着耗尽电池电量。

    理论上您可以使用 CoreBluetooth 来检测其他信标类型,例如 AltBeacon(CoreBluetooth 会阻止读取 iBeacon 广告详细信息),但电池使用情况仍然相似。

    在后台节省电池的标准方法是使用 CoreLocation 信标监控 API,这对电池来说更容易。然后,当这些监控 API 检测到信标时,即使您的应用在后台,您也可以开始测距。

    有关延长后台测距时间的更多信息,请参阅此处:http://developer.radiusnetworks.com/2014/11/13/extending-background-ranging-on-ios.html

    【讨论】:

    • 嗨,大卫,感谢您的回复。我浏览了您的文章,但它说我们只能将背景范围延长 3 分钟。我们的应用程序要求是持续扫描,直到它退出该区域。在iOS中是否可以在后台模式下(即使应用程序不存在)进行连续测距?通过使用 ClLocationManager 类的标准位置更新,我们正在后台实现连续扫描(即使应用程序不活跃)。我们甚至写了一份关于电池使用情况的免责声明,但 Apple 仍然拒绝了我们的应用。
    • 是的,Apple 拒绝它我并不感到惊讶。无论是对还是错,您通常都需要有一个直接且明显的目的来进行后台位置更新,以获得在 AppStore 中的应用程序中进行此类使用的批准。这通常意味着它必须是一个导航应用程序。说苹果不支持这个用例用于其他目的是一个公平的批评。我不能代表 Apple,但我相信理由只是为了延长电池寿命。
    【解决方案2】:

    我正在使用 Estimote Beacons,并且有可用的委托方法或 Estimate SDK(ESTBeaconManager 类)“https://github.com/Estimote/iOS-SDK”,每当信标进入范围或超出范围时,将在内部调用以下委托方法并帮助我们减少电池消耗。我们可以将接近检查放在 didEnterRegion 方法中:

    - (void)beaconManager:(ESTBeaconManager *)manager didEnterRegion:(ESTBeaconRegion *)region{}
    - (void)beaconManager:(ESTBeaconManager *)manager didExitRegion:(ESTBeaconRegion *)region{}
    - (void)beaconConnectionDidSucceeded:(ESTBeacon*)beacon{}
    - (void)beaconConnectionDidFail:(ESTBeacon*)beacon withError:(NSError*)error{}
    - (void)beaconManager:(ESTBeaconManager *)manager  didRangeBeacons:(NSArray *)beacons inRegion:(ESTBeaconRegion *)region{}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-19
      • 2011-02-18
      • 1970-01-01
      • 2010-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-13
      相关资源
      最近更新 更多