iBeacons 和本地通知
iBeacons and local notifications
我开发了一个基于 iBeacon 的小型应用程序,当该应用程序检测到我们的一个 iBeacon 时,它会调用 Web 服务以获取数据集并向用户发送本地通知。所有这些都正常工作。
我现在提出了这样的想法,即这些本地通知可能会在很短的时间间隔内发生变化,并包含新内容。问题是,如果用户没有离开 iBeacon 的区域并重新进入,应用程序将不会 "wake up" 并且用户将不会收到新的更新通知。
我不知道这是否可以以某种方式解决,或者实际上制作类似东西的方法不应该与 iBeacons 技术相关。
我真的很迷茫,不知道有没有人知道怎么养。
您可以安排在特定时间发送本地通知:使用 UILocalNotification
的 fireDate
和 timeZone
属性,然后使用 scheduleLocalNotification
而不是UIApplication 的 presentLocalNotificationNow
方法。
考虑到这一点,您可以这样做:在 "enter" 事件发生时,检索一些通知,以便在用户留在该区域的特定时间段内向他们显示,适当地安排它们并让iOS 送货。
如果用户在显示所有通知之前退出该区域,您可以使用 cancelLocalNotification
或 cancelAllLocalNotifications
方法取消剩余的本地通知。
为此,当信标在附近时,您需要让应用程序在后台 运行。 这样您就可以定期检查获取与信标关联的更新内容,然后在两种情况下显示通知:
- 当信标首次出现时,并且有一条与该信标关联的消息。
- 在信标仍然可见期间,与上述信标关联的消息会发生变化。
正如您提到的,第二项是个问题,因为您需要一种方法来不断检查是否有更新的内容,尽管 iOS 会在后台信标检测 5 秒。
几个选项,每个选项都有缺点:
您可以使用自定义硬件信标,每分钟左右更改其标识符(例如,未成年人在 0 和 1 之间来回移动)。这将允许您监视两个区域并在信标在附近的每一分钟重新触发。缺点:这需要构建自定义信标。
您可以让您的应用请求额外 3 分钟的后台 运行宁时间,在此期间您可以检查是否有更改的消息。缺点:您只有三分钟的时间来显示已更改的消息。
您可以在 .plist 中指定额外的背景模式,以便您可以在后台继续 运行ning。缺点:Apple 不会批准您的应用程序在商店中分发,除非您有充分的理由在后台 运行(例如导航应用程序或音乐播放器应用程序。)
您可以在每次消息更改时向您的应用程序发送推送通知,这会在后台唤醒您的应用程序,这样您就可以在附近有信标时显示更新的通知。缺点:设置推送通知有点复杂,传送速度可能很慢,而且不能保证。
阅读此处了解有关其中一些选项的更多信息:http://developer.radiusnetworks.com/2014/11/13/extending-background-ranging-on-ios.html
我开发了一个基于 iBeacon 的小型应用程序,当该应用程序检测到我们的一个 iBeacon 时,它会调用 Web 服务以获取数据集并向用户发送本地通知。所有这些都正常工作。
我现在提出了这样的想法,即这些本地通知可能会在很短的时间间隔内发生变化,并包含新内容。问题是,如果用户没有离开 iBeacon 的区域并重新进入,应用程序将不会 "wake up" 并且用户将不会收到新的更新通知。
我不知道这是否可以以某种方式解决,或者实际上制作类似东西的方法不应该与 iBeacons 技术相关。
我真的很迷茫,不知道有没有人知道怎么养。
您可以安排在特定时间发送本地通知:使用 UILocalNotification
的 fireDate
和 timeZone
属性,然后使用 scheduleLocalNotification
而不是UIApplication 的 presentLocalNotificationNow
方法。
考虑到这一点,您可以这样做:在 "enter" 事件发生时,检索一些通知,以便在用户留在该区域的特定时间段内向他们显示,适当地安排它们并让iOS 送货。
如果用户在显示所有通知之前退出该区域,您可以使用 cancelLocalNotification
或 cancelAllLocalNotifications
方法取消剩余的本地通知。
为此,当信标在附近时,您需要让应用程序在后台 运行。 这样您就可以定期检查获取与信标关联的更新内容,然后在两种情况下显示通知:
- 当信标首次出现时,并且有一条与该信标关联的消息。
- 在信标仍然可见期间,与上述信标关联的消息会发生变化。
正如您提到的,第二项是个问题,因为您需要一种方法来不断检查是否有更新的内容,尽管 iOS 会在后台信标检测 5 秒。
几个选项,每个选项都有缺点:
您可以使用自定义硬件信标,每分钟左右更改其标识符(例如,未成年人在 0 和 1 之间来回移动)。这将允许您监视两个区域并在信标在附近的每一分钟重新触发。缺点:这需要构建自定义信标。
您可以让您的应用请求额外 3 分钟的后台 运行宁时间,在此期间您可以检查是否有更改的消息。缺点:您只有三分钟的时间来显示已更改的消息。
您可以在 .plist 中指定额外的背景模式,以便您可以在后台继续 运行ning。缺点:Apple 不会批准您的应用程序在商店中分发,除非您有充分的理由在后台 运行(例如导航应用程序或音乐播放器应用程序。)
您可以在每次消息更改时向您的应用程序发送推送通知,这会在后台唤醒您的应用程序,这样您就可以在附近有信标时显示更新的通知。缺点:设置推送通知有点复杂,传送速度可能很慢,而且不能保证。
阅读此处了解有关其中一些选项的更多信息:http://developer.radiusnetworks.com/2014/11/13/extending-background-ranging-on-ios.html