iBeacons和本地通知

时间:2015-04-16 11:37:13

标签: ios objective-c notifications ibeacon

我开发了一个基于iBeacon的小应用程序,当应用程序检测到我们的一个iBeacons调用Web服务获取数据集并向用户发送本地通知时。这一切都正常。

我现在提出这样的想法,即这些本地通知可能会在短时间内发生变化,并带有新内容。问题是如果用户没有离开iBeacon的区域并重新进入,则应用程序将不会“唤醒”并且用户将不会收到新的更新通知。

我不知道这是否可以以某种方式解决,或者实际上制作类似的东西的方法与iBeacons的技术无关。

我真的迷路了,不知道是否有人会知道如何提高它。

2 个答案:

答案 0 :(得分:2)

您可以安排在特定时间投放本地通知:使用fireDate的{​​{1}}和timeZone属性,然后使用scheduleLocalNotification代替{ {1}} UIApplication的方法。

考虑到这一点,你可以这样做:在"输入"事件,检索一些通知,以便在用户保留在区域中时在一定时间段内向用户显示,适当安排它们并让iOS进行交付。

如果用户在显示所有通知之前退出区域,您可以使用UILocalNotificationpresentLocalNotificationNow方法取消剩余的本地通知。

答案 1 :(得分:1)

为了做到这一点,你需要让应用程序在后台运行而信标在附近。这将允许你定期检查与信标相关的更新内容然后在两种情况下显示通知:

  1. 当信标首次出现时,并且存在与该信标相关联的消息。
  2. 与信标相关联的消息在信标仍然可见时发生变化。
  3. 正如您所提到的,第二项是一个问题,因为您需要一种方法来持续检查是否有更新的内容尽管 iOS将在5秒内暂停您的应用的信标在后台检测。

    一些选项,每个选项都有缺点:

    1. 您可以使用自定义硬件信标,每隔几分钟左右更改其标识符(例如,次要信息在0和1之间来回切换)。这将允许您监视两个区域并在信标在附近的每一分钟重新触发。缺点:这需要建立一个定制的灯塔。

    2. 您可以让您的应用请求额外3分钟的后台运行时间,在此期间您可以检查更改的消息。缺点:您只需三分钟即可显示已更改的消息。

    3. 您可以在.plist中指定额外的背景模式,以便继续在后台运行。缺点:除非您有充分理由在后台运行(例如导航应用程序或音乐播放器应用程序),否则Apple不会批准您的应用程序在商店中分发。

    4. 您可以在每次邮件更改时向您的应用发送推送通知,这会在后台唤醒您的应用,以便在信标位于附近时显示更新的通知。缺点:设置推送通知有点复杂,交付速度很慢,无法保证。

    5. 请阅读此处以获取有关其中一些选项的更多信息:http://developer.radiusnetworks.com/2014/11/13/extending-background-ranging-on-ios.html