iBeacon行为分析 - jy_king

jyking 2021-08-06 原文


iBeacon行为分析


研究iBeacon也有段时间了, 总结一下这段时间对于ibeaacon行为的分析。 

 

  1. iOS 7.0及以后的版本开始支持iBeacon。 
  2. 硬件方面, iPhone4S 及以后, ipad 3代及以后, ipad Mini及以后, ipod 5及以后。
  3. iOS7.1与7.0的提升在于, ios 7.1在应用被kill掉后, 以及设备重启后, 仍然能继续监控iBeacon的边缘触发及点亮触发行为,而ios7.0在程序被kill掉后以及设备重启后不再进行监控
  4. 通过iBeacon唤醒的应用,只会在后台运行10秒钟,当然也可以通过beginBackgoundTask来执行一些需要长时间执行的任务, 不管应用之前是处于后台, 还是被kill掉, 10秒内,应用的状态就是在后台运行。 10秒后, 理论上讲程序仍然是处于后台运行, 但这个时候也可能会因为系统资源的原因而直接把程序再次kill掉。 
  5. ios7.1版本及以后,要进行后台及kill掉仍然可以监控,需要用户把蓝牙打开,后台应用应用程序刷新功能打开,以及定位服务中该应用的定位功能打开(不打开这个功能将不能进行iBeacon 的didRange方法的回调)
  6. didEnter和didExit的调用是以uuid为单位来触发的, 因为iBeacon可以有相同的uuid, 不同的major和不同的minor。 如果A,B是两个相同uuid, major和minor不同的两个iBeacon设备,用户从A区域走到B区域,不会引发didEnter和didExit事件。
  7. 而且测试发现iBeacon的didEnter和didExit的调用并不准确。因为在同一秒内出现了先调didExit然后又调用了didEnter方法, 所以这两个方法存在不可靠性。
  8. 好的方法应该是依赖于didRange来进行beacon的统计与代码调用, 因为系统只要唤醒后就会调用didRange。 在didRange中可以取当前系统的状态,以过滤掉应用在前台的情况。
  9. 点亮屏幕唤起应用的行为需要在点亮的那个时刻,用户周围能检测到ibeacon设备, 否则不会触发唤醒应用的操作。
  10. 进入区域来唤醒应用,则说明周围一定有iBeacon设备, 退出区域来唤醒应用,唤醒时周围可以没有iBeacon设备。进入区域和退出区域事件均能唤醒应用。
  11. ibeacon的边缘触发可以是ios设备在移动,也可以是ibeacon设备在移动。
  12. 直接在ios程序中使用蓝牙功能进行ibeacon设备的扫描, 如果此时蓝牙处于关闭状态, 则会弹出提示, 提示用户:”打开蓝牙来允许“XXX应用“连接到配件”提示, 相信不少用户看到这个提示都会比较担心这是一个什么样的应用。 所以最好的办法是, 在程序中使用ibeacon, 如果ibeacon能使用, 则蓝牙功能必然处于打开状态,如果ibeacon不能使用, 先判断后台刷新是否打开, 以及用户是否授权, 如果没有问题, 则有可能是因为蓝牙没有打开。 但是不能确定一定就是蓝牙没打开。
  13. 测试ibeacon离开的区域只需约15米即可, 最好是有障碍物, 不能直接让手机与ibeacon相互可见即可。
  14. 如果不需要把当前ios设备模拟成iBeacon设备,是不需要打开Target的background mode并进行设置的。(网上好些文章什么都没有解释,直接告诉要打开这个,然后再设置bluetooth啥的,以及location update等。打开这个会导致程序在按下Home键后,进入后台会继续运行好长一段时间,测试发现最长可以运行25分钟左右。这样的应用,苹果如果审得较严的情况下,比较难以通过审核。)

 

 
0
posted on
2016-05-06 14:56 
jy_king 
阅读(278
评论(0
编辑 
收藏 
举报

 

版权声明:本文为jyking原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/jyking/p/5465629.html

iBeacon行为分析 - jy_king的更多相关文章

  1. SQLServer入门基础(定时器) – 半夏秋年

    SQLServer入门基础(定时器) 管理–>维护计划–>右键新建维护计划 […]...

  2. 10个优秀的 Web UI库/框架 – 大柠子

    10个优秀的 Web UI库/框架 UI(User Interface)即用户界面,也称人机界面。是指用户和某 […]...

  3. Linux Busybox Minicom简单用法 – 紫枫术河

    Linux Busybox Minicom简单用法 在嵌入式平台下,如果有集成minicom软件,那调试串口就 […]...

  4. matlab练习之级数与方程符号求解 – 薛向峰

    17 级数求和 symsum(u,n,a,b)的功能是计算级数和。其中u是包含符号变量n的表达式,是待求和级数 […]...

  5. 扫描工具——Nmap用法详解 – 芦苇の

    扫描工具——Nmap用法详解 Nmap是主机扫描工具,他的图形化界面是Zenmap,分布式框架为Dnamp。 […]...

  6. 删除Ubuntu多余的开机启动项(旧的内核) – 深蓝工作室

    删除Ubuntu多余的开机启动项(旧的内核) 当linux有新的内核发布时,ubuntu会把当前的内核更新为最 […]...

  7. lwip socket探秘之bind – 日拱一卒编程大法

    lwip socket探秘之bind 一个基本的socket建立顺序是 Server端: socket() b […]...

  8. Java 创建 Excel 数据透视表 – Jazzz

    Java 创建 Excel 数据透视表 Excel 数据透视表具有强大的数据处理功能,能够使表格中的数据更加直 […]...

随机推荐

  1. 【动画消消乐】HTML+CSS 自定义加载动画 064(currentColor的妙用!)

    前言 Hello!小伙伴! 非常感谢您阅读海轰的文章,倘若文中有错误的地方,欢迎您指出~ 自我介绍ଘ(੭ˊᵕˋ […]...

  2. C++界面库(十几种,很全)

      刚开始用C++做界面的时候,根本不知道怎么用简陋的MFC控件做出比较美观的界面,后来就开始逐渐接触到BCG […]...

  3. 公众号消息会话开发

    目录 1    概要    2 1.1    关于Magicodes.WeChat.SDK    3 2    […]...

  4. Asp.Net Core 基于QuartzNet任务管理系统

    之前一直想搞个后台任务管理系统,零零散散的搞到现在,也算完成了。 这里发布出来,请园里的dalao批评指导! […]...

  5. iOS 导入通讯录开发代码

    (self) #import <AddressBook/AddressBook.h> #impor […]...

  6. 详解Vue中的插槽

    详解Vue中的插槽~ 作者: 小土豆 博客园:https://www.cnblogs.com/HouJiao/ […]...

  7. 随机生成不重复随机数

    java的Random对象提供随机方法,可在指定范围内随机产生随机数 如: //接收随机后的随机数集合 Lis […]...

  8. 反编译学习

    反编译学习  最近开始学习基于arm反编译,而至于学习反汇编的原因,或许是头脑发热所做的决定吧…… 由于不同平 […]...

展开目录

目录导航