Push Notification系列概括:

1.Push Notification简介和证书说明及生成配置

2.Push Notification的iOS处理代码和Provider详解

3.Push Notification的移动客户端定位服务

正文:

Push Notification的移动客户端定位服务

继上一篇文档后,消息推送功能基本可以实现了。这篇的内容主要是总结一下iOS的定位服务功能,再与消息推送功能结合,满足更丰富的推送体验。

先啰嗦一点定位服务的基础:

iOS设备提供了3种不同的途径进行定位:Wi-Fi、蜂窝式移动电话基站和GPS卫星。

GPS定位的优点是准确和覆盖面广,但是在建筑物里面不易收到GPS卫星信号,同时比较费电。蜂窝基站不仅误差比较大,而且会耗费用户较多流量。Wi-Fi定位是最经济实惠的。

iOS的定位服务编程不像Android系统可以指定采用哪种途径进行定位,因为API把底层这些细节屏蔽了,所以开发者和用户并不知道设备正在采用哪种方式定位,不过系统会采取最优方案,一般优先考虑GPS定位,其次为Wi-Fi,最后才会采用蜂窝基站定位。

在编程中,主要使用Core Location框架,定位时主要使用CLLocationManager、CLLocationManagerDelegate和CLLocation这3个类。

LLocationManager能够提供位置信息和高度信息,也可以监控设备进入或离开某个区域,还可以获得设备的运行方向。

CLLocationManagerDelegate是上述类的委托协议

CLLocation封装了位置和高度信息

如推送服务一样,在应用第一次安装后请求位置时,系统会自动提示用户。如果用户拒绝定位服务,最好有代码处理关闭定位服务,不然就算是侵犯了隐私权O_O

下面结合我写的一个demo来具体说说:

这是我的demo文件目录。这里要介绍的主要内容在ViewController.m中。

新建一个定位服务的demo,需要添加CoreLocation.framework框架。

 

上图是故事板的界面,做得比较简单,主要用来熟悉定位服务本身的。右边还有一个界面,是实现地图导航的,在此就不多介绍了。

这里是实现文件的属性,注意添加委托协议<CLLocationManagerDelegate>

 

初始化定位服务管理对象。

简要说明:

(1)desiredAccuracy属性是用来确定定位精度的,共有6个常量:

kCLLocationAccuracyNearestTenMeters

kCLLocationAccuracyHundredMeters

kCLLocationAccuracyKilometers

kCLLocationAccuracyThreeKilometers

kCLLocationAccuracyBest  设备使用电池供电时候最高的精度

kCLLocationAccuracyBestForNavigation 导航最高精度,一般在有外接电源时候才能使用。

精度越高,耗电越多,需要慎重调节定位精度。但是对于即刻定位后马上就关闭的情况,当然采用最高精度。

(2)distanceFilter属性是距离过滤器,定义了设备移动多少距离才获取一次位置更新信息,单位是米。这样可以避免无谓的位置更新请求。

初始化后,需要开启和关闭更新位置信息,最好的代码位置就是viewWillAppear方法和viewWillDisappear里面。方法分别为:startUpdatingLocation和stopUpdatingLocation。这里是针对一直需要定位服务的本demo来说的。

上图中还有监听键盘显示和隐藏的通知和显示键盘的代码,目的是不遮挡地址关键字输入栏。隐藏键盘的时候,将地址关键字输入栏恢复到初始位置

这里是比较重要的委托方法。负责位置信息更新以后的代码处理。我的demo是将位置的经纬度和海拔显示到界面上,并进行地理信息反编码,得到位置的文字描述信息。

错误处理方法中,有判断更新失败的原因,如果为用户禁止,则关闭位置更新服务。

我是在模拟器中运行,可以自定义位置经纬度,如图。

上面提到了地理信息反编码,代码如下:

相应的,也有地理信息编码查询,即是输入地址关键字,查询到详细地址和对应位置信息。如下图:

写到这里,定位服务的介绍和总结也结束了。了解了这个demo,我想和推送服务结合,获取目标用户的位置信息,应该也没有什么问题了。

这个系列也结束了。作为学习iOS开发以来,做的第一个系列总结,心里还是有点小激动呢0^_^0

Push Notification总结系列之移动客户端定位服务的更多相关文章

  1. Push Notification总结系列(二)

    Push Notification系列概括: 1.Push Notification简介和证书说明及生成配置 2.Push Notification的iOS处理代码和Provider详解 3.Push ...

  2. Push Notification总结系列(一)

    Notification系列概括: 1.Push Notification简介和证书说明及生成配置 2.Push Notification的iOS处理代码和Provider详解 3.Push Noti ...

  3. 苹果推送通知服务Push Notification探究总结(序)

    刚才发了两篇几个月前写的文档,觉得太敷衍了,想了想,还是来一发实在的. 再者,刚好上周研究了苹果的推送通知服务Push Notification,还是很有心得的,赶紧趁热打铁,记录一下,望与大家谈论下 ...

  4. (转)在SAE使用Apple Push Notification Service服务开发iOS应用, 实现消息推送

    在SAE使用Apple Push Notification Service服务开发iOS应用, 实现消息推送 From: http://saeapns.sinaapp.com/doc.html 1,在 ...

  5. (转)苹果推送通知服务教程 Apple Push Notification Services Tutorial

    本文译自http://www.raywenderlich.com/.原文由iOS教程团队 Matthijs Hollemans 撰写,经原网站管理员授权本博翻译. 在iOS系统,考虑到手机电池电量,应 ...

  6. 导出pem证书给服务端Push Notification使用

    1. 钥匙串创建Push证书的证书签名请求文件(CSR文件). 如下图所示: 2.创建App ID,创建Provisioning Profile,下载安装到XCode. 苹果开发者后台页面,创建Pus ...

  7. Missing Push Notification Entitlement 问题

    最近打包上传是遇到一个问题: 描述: Missing Push Notification Entitlement - Your app includes an API for Apple's Push ...

  8. 远程通知APNs(Apple Push Notification Server)

    推送通知是由应用服务提供商发起的,通过苹果的APNs(Apple Push Notification Server)发送到应用客户端.下面是苹果官方关于推送通知的过程示意图: 推送通知的过程可以分为以 ...

  9. Android Push Notification实现信息推送使用

    本贴在http://www.cnblogs.com/hanyonglu/archive/2012/03/16/2399655.html下略为改动. Apndroid Push Notification ...

随机推荐

  1. Android中的“再按一次返回键退出程序”实现[转]

    用户退出应用前给出一个提示是很有必要的,因为可能是用户并不真的想退出,而只是一不小心按下了返回键,大部分应用的做法是在应用退出去前给出一个Dialog,我觉得这样不太友好,用户还得移动手指去按dial ...

  2. React.js终探(七)(完)

    我们在前面介绍了组件的各种特性,这一节我们来说说多组件的情况. 在实际开发中,我们的组件难免会遇到有公共部分的情况,如果是个别情况还好,但如果数量比较多的话,那这时候,就需要公用了. 怎么公用呢? R ...

  3. Cocos2d-x 3.2 大富翁游戏项目开发-第五部分 单机游戏-级别选择ScrollView

    于MenuScene.cpp 点击单机游戏后会调用 Director::getInstance()->pushScene(MapChooseScene::createScene()); 进入到关 ...

  4. JBPM——MyEclipse开发环境的搭建

    第一次接触JBPM我不知道如何在工程中的应用.查了一些资料.大约在JBPM随着时代的发展有一定的了解.首先JBPM它是JBoss件平台的一个组成部分.是一个灵活的,易扩展的工作流管理系统,仅仅只是这个 ...

  5. linux_安装_安装编译phantomjs 2.0的方法_转

    项目中要对数据公式webkit渲染,phantmjs 2.0的效果好比1.9好不少. 安装过程中 坑比较多. 转载文章: phantomjs 2.0最新版的官方不提供编译好的文件下载,只能自己编译,有 ...

  6. css布局之选择切换按钮

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  7. app后端设计(0)--总文件夹

    原文:http://blog.csdn.net/newjueqi/article/details/19003775 做了接近两年app相关的系统架构,api设计,先后在两个创业公司中工作,经历过手机网 ...

  8. Linux线程 之 线程 线程组 进程 轻量级进程(LWP)

    Thread Local Storage,线程本地存储,大神Ulrich Drepper有篇PDF文档是讲TLS的,我曾经努力过三次尝试搞清楚TLS的原理,均没有彻底搞清楚.这一次是第三次,我沉浸gl ...

  9. DataTable与实体类的转换

    多年前写的DataTable与实体类的转换,已放github 阅读目录 介绍 起因 代码 UnitTest GitHub 介绍 很多年前一直使用Ado.net,后来慢慢转型到其他的orm,在转型过程中 ...

  10. Socket 学习(三).1 tcp 通讯

    实现了,局域网客户端 对客户端 的通讯. 实际上这是 一个 客户端 兼 服务端 . 2个阿里云服务器测试 效果图: 本地效果图: using System; using System.Collecti ...