【问题标题】:invoking application when not running and iBeacon in range未运行且 iBeacon 在范围内时调用应用程序
【发布时间】:2014-02-28 04:14:00
【问题描述】:

我正在开发一个 iPhone 应用程序,当用户进入 iBeacon 区域时通知用户。

我有几个同样的问题:

来自文档:

当进入 iBeacon 所在区域时,Monitoring 启动应用程序 监控。

但行为是:

它仅在手机被唤醒时起作用,即当显示器打开时。 但是,当应用程序未运行且显示屏关闭时,什么也不会发生,当显示屏打开且用户进入信标区域时,情况也是如此。

是否可以在用户进入/退出该区域时启动应用程序,即使显示屏关闭或打开,而不仅仅是在手机被唤醒时?

我检查了这个iBeacon Notification when the app is not running 链接,这表明它是可能的。我正在监视 iBeacon,但无法获得预期的行为。我错过了什么吗?

感谢任何帮助。

【问题讨论】:

    标签: ios iphone bluetooth-lowenergy ibeacon


    【解决方案1】:

    是的,您可以在后台获得进入区域的通知。只要:

    • 该应用已至少打开一次
    • 用户没有直接终止应用程序(通过退出进程,而不仅仅是关闭它)

    现在了解它的行为方式更加细微。

    在我的公司,我们对此进行了大量研究。事实上,我的一位同事写了一篇关于这种行为的精彩博文:iBeacon Monitoring in the Background and Foreground

    出乎意料的是在后台获取 didEnterRegion 需要多长时间:

    Condition                                      Max time to detect a region change
    --------------------------------------------   ----------------------------------
    Phone awakened,notifyEntryStateOnDisplay=YES   1 second
    Phone awakened, notifyEntryStateOnDisplay=NO   NEVER
    UIBackgroundModes=location ON                  up to 15 minutes
    UIBackgroundModes=location OFF                 up to 15 minutes
    

    【讨论】:

      【解决方案2】:

      您可以在 CLBeaconRegion 上设置几个属性,以更改您的应用何时会收到有关该区域相关用户位置更改的通知:

      • notifyOnEntry - 当用户进入该区域时,您将通过locationManager:didEnterRegion: 收到通知
      • notifyOnExit - 当用户退出该区域时,您将通过locationManager:didExitRegion: 收到通知
      • notifyEntryStateOnDisplay - 当用户唤醒他们设备的屏幕并且他们在区域内时,您将通过locationManager:didDetermineState:forRegion: 收到通知

      请注意,在再次调用 didEnterRegion: 之前,您必须完全退出区域,有时设备可能需要一分钟或更长时间才能正确注册您已离开区域。因为信标可以广播长达 30 或 50 米(或者更远),所以您要么必须远离信标离开一个区域,要么关闭信标,等待一分钟左右,然后返回on 触发更改。

      【讨论】:

      • 我知道当用户唤醒设备时它可以工作,但我的问题是当手机一直关闭或手机一直打开时会发生什么?
      • 只要手机处于开机状态(但屏幕可以关闭)并且用户没有强制退出应用程序,您将获得上述方法之一的回调。
      猜你喜欢
      • 1970-01-01
      • 2013-10-08
      • 1970-01-01
      • 2021-02-01
      • 2016-02-18
      • 2014-07-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多