V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
iOS 开发实用技术导航
NSHipster 中文版
http://nshipster.cn/
cocos2d 开源 2D 游戏引擎
http://www.cocos2d-iphone.org/
CocoaPods
http://cocoapods.org/
Google Analytics for Mobile 统计解决方案
http://code.google.com/mobile/analytics/
WWDC
https://developer.apple.com/wwdc/
Design Guides and Resources
https://developer.apple.com/design/
Transcripts of WWDC sessions
http://asciiwwdc.com
Cocoa with Love
http://cocoawithlove.com/
Cocoa Dev Central
http://cocoadevcentral.com/
NSHipster
http://nshipster.com/
Style Guides
Google Objective-C Style Guide
NYTimes Objective-C Style Guide
Useful Tools and Services
Charles Web Debugging Proxy
Smore
Sunnyyoung
V2EX  ›  iDev

[请教]iOS APP 的定位机制该怎样设计?

  •  
  •   Sunnyyoung · 2015-08-10 14:08:21 +08:00 · 2588 次点击
    这是一个创建于 3198 天前的主题,其中的信息可能已经有所发展或是发生改变。
    1. 被动方式:由用户点击事件触发定位,并更新位置信息保存下来,即时更新即时使用,更新失败的时候才用旧的位置信息
    2. 轮询方式:每隔一段时间自动更新位置信息保存下来,需要用到位置信息的时候直接读取已储存的位置信息

    BTW,想知道微信QQ等APP的定位机制是怎样的~
    4 条回复    2015-08-11 16:24:38 +08:00
    dorentus
        1
    dorentus  
       2015-08-10 15:55:12 +08:00
    我觉得 1 是比较符合直觉且可能更省电的方式,可以保证取到的一定是最新的位置,并且也能正常地在定位被禁用时提醒用户。

    用 2 这种方式,用户也许会奇怪为什么开着你的应用的时候定位图标会定期亮。

    另外,除非你的应用是类似游戏那种用户一直开在前台的,否则 2 的“优化”也没啥意义。这种优化应该由系统本身负责而不是由单个应用自己来做。
    Sunnyyoung
        2
    Sunnyyoung  
    OP
       2015-08-11 09:18:02 +08:00
    @dorentus
    嗯,但是1的话也会有些弊端,例如iOS的定位不一定每次都能成功的,失败情况有两种:直接失败和定位超时,如果定位超时获取之前成功定位的旧定位信息,这个过程就是由用户来等待这个超时的时间,降低了用户体验

    我也有想过把旧数据持久化保存下来,用户点进这个页面先显示旧的持久化内容,等定位信息更新成功之后再刷新一遍,不知道这种会不会好一点
    lawder
        3
    lawder  
       2015-08-11 11:35:05 +08:00
    @Sunnyyoung 观察了一下,微信在个人信息的地区设置里用的是即时定位,定位失败提示用户这种方式。其实就我使用 iPhone 的情况来看,App 在开启定位权限情况下定位失败的情形其实比较少见,所以我觉得缓存旧数据的意义不是太大。
    Sunnyyoung
        4
    Sunnyyoung  
    OP
       2015-08-11 16:24:38 +08:00
    @lawder
    再仔细观察平时使用微信的时候即使无任何操作,右上角都会有一个定位提示(当然不排除是系统等Apps调用定位,但是个人觉得不会那么巧吧=。=很多时候我都会发现在使用微信过程中会有定位标志)

    定位失败这个问题是有的,不算多也不算少,例如在地铁上会经常提示定位失败(定位服务正常开启,网络服务正常)甚至从地铁中走出来,定位失败这个问题也会持续一阵子。另外在室内室外发生定位失败这种情况比较少出现,每次出现就会持续一阵子~
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2864 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 08:16 · PVG 16:16 · LAX 01:16 · JFK 04:16
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.