Xamarin-移动端定位知识整理

上一片文章中简单的说明了一下如何在Xamarin中引用Plugin.Geolocator来实现定位的开发,其中还有很多细节的内容将在这篇文章中进行整理,着重分析IOS的定位。以下都是个人开发中的一些心得与见解,若有分析不到位的地方欢迎留言指出。(文字内容较多,请小伙伴们提前准备好你们的“24K氪金*眼”<ω<)

1.IOS

1.1定位权限

Android的定位权限在上篇文章中已经做了详细的讲解,并且按照步骤进行设置即可。但是在IOS中的一些权限设置在不理解的情况下很容易出错,这里在开始前插一句, IOS开发中对应的一些权限若未开启则会导致审核不通过(如:相机权限、定位权限、麦克风权限等)。

所以在开发与权限相关的功能时,为了避免忘记设置权限而导致的审核不通过,第一步就是设置权限,因为实际项目中,由于反复审核不通过而导致的项目延期真的很难受(特别是IOS的审核,真是蛋疼,我相信做过IOS开发的小伙伴都能感同身受,要是第一次上线就能一次性审核通过,那天晚上绝对可以去搓一顿庆祝一下了(つ•̀ω•́)つ,记得叫上我)

首先,需要开启几个定位的权限,以便在用户使用的时候进行询问,用户允许后当前程序方可使用定位权限(有关权限开启的基础知识在这就不做详细讲解了),如下图为Xamarin中IOS的项目配置(info.plist):
在这里插入图片描述
配置完成后,用户在进入App时就会提示用户是否允许当前App使用定位权限,相应的当前App在系统设置中的定位权限如下图:
在这里插入图片描述
到此为止在IOS中的定位权限设置算是初步完成,可以确保你的App中开发的定位功能已经能通过审核并且用户能正常使用,但这仅仅是初步完成。

实际项目中的需求有很多种,有的要求你获取当前用户的一个定位点即可,但是有的项目中却需要你实时监控当前用户的定位信息,比如之前做过的一个物流项目,就需要在驾驶员操作的App中实时获取当前车辆的位置上传服务器,并在客户端画出行驶轨迹,这就需要你开发的App在后台常驻并实时更新当前的定位。

这个时候就需要设置另一个权限UIBackgroundModes,后面选择Location,表明当前的App需要在后台常驻,并且是用来获取地理位置的(或者音乐和下载),这样应用程序就可以在后他常驻并实现相应功能。
在这里插入图片描述
至此相关操作已经设置完毕。

1.2机制详解

移动端中我们常常提到后台,但其实在IOS中只有伪后台,也就是所谓的后台驻留但并不是执行中的程序,而是最近使用过的程序,就像我们浏览器中的历史记录一样。

我们平常按两下Home键,看到的只是打开App的记录,如果有小伙伴很费解,可以试试关机后再开机,然后按两下Home键还是能看到之前打开的App,因为那是你之前使用的程序记录。

我们平时一个一个刷掉“后台挂起“的程序,其实就和在浏览器中逐一删除浏览记录是一样的,这并没有什么意义,也并不会对手机的运行与电力有任何帮助。

之前在论坛中看到一位很有意思的评论,几句话概括了Android和IOS的后台区别,原话是这么说的Android的后台防君子不防小人,总有APP死皮赖脸不肯结束。iOS的后台,看谁不爽直接抽,APP想留都留不住。虽然有点搞笑,但也算是形象生动一针见血。

在IOS的后台当中以时间分类大致可分为三类:

  1. 三分钟:一般没有经过设置的App在后台的停留时间只有三分钟,在三分钟内随时打开,都处于关闭之前的页面。三分钟后则被IOS彻底干掉,再打开则是重新启动
  2. 十分钟:这与第一种只有时间上的差别,时间一到还是会被IOS干掉。至于延长时间,这当然是由开发人员在设计与提交程式时决定和声明
  3. 无限后台:需要设定对应的权限,并选择对应后台模式(Audio、Location、VoIP、Newsstand等)

2.Android

Android的一些定位知识在这里不做整理了(实现起来的坑不如IOS,当然不是黑IOS),度娘里面有很多整理的很完善的分析。我在这里记录一下当时开发完成后,一些实际操作对定位准确度造成的影响。

这里先总结一下移动端定位的几种方式:

  1. GPS:就是通过卫星定位,无需网络,无需SIM卡,只要当前移动设备装有GPS模块即可定位。缺点是有场地要求,无法在室内定位,定位时间较长且耗电。
  2. 基站:当前移动设备必须连接上数据网络才能获取定位信息,室内室外皆可定位,定位精度却决于当前移动设备周围的基站数。
  3. WI-FI:需打开当前移动设备的WI-FI,不一定要连上,可用于室内。

为什么单讲Android呢,因为当时博主自己在开发物流App的时候,再投入使用期间Android机型的客户出现了各种各样的问题,无法定位、定位不稳定、定位偏移较大等等,最后实际考察下来大多是一些手机设置造成的。
在这里插入图片描述
如上图,Android手机中的定位设置里一般会有这三个选项,会影响到手机的耗电情况和定位的准确性。

实际项目中,不开位置服务这个肯定不用说,是定位不到的,但是在开启的情况下如果没有选择高精度,最后实际定位出来的点的偏移量又是非常的大,如果长时间保持高精度并且不停的获取地理位置,低端的Android手机不仅耗电而且发热严重。
(这就是当时项目中比较难受的地方,物流公司的驾驶员使用的手机自然不会是很好的,苹果更是见不到,很多也是没有网络服务,无法准确定位和上传,还有很多不会设置,更有怕手机耗电而不开启设置的,实施起来的难度可想而知)

3.总结

定位的实际开发也许没有那么难,但将一个定位功能做到完善做到便民也是需要好好花时间设计与细节方面的推敲。

IOS吃透了权限那一套规则后一切都会变的顺利很多,因为实际开发中的代码实现错误与审核不通过大多都与权限有关。苹果要求严是好事,我们只要吃透规则就能顺利的推进项目。
Android的细节其实不比IOS少,后台Service,权限设置,用户提示的友好性等等,都能影响一个功能的好坏。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值