1.定位
定位是定位,地图是地图,在iOS中 CLLocation是专门负责定位或者获取位置信息的;而MAPkit是专门负责地图显示的
位置管理器(CLLocationManager) :负责获取,同时负责监控用户位置发生变化
//[注意] 位置管理器一定要写成属性,不是属性出栈就没有了
_manager = [[CLLocationManager alloc] init];
//设置位置管理器代理 <CLLocationManagerDelegate>
_manager.delegate = self;
//设置最小更新位置
_manager.distanceFilter = 50.0f; //单位 是 “米”
//设置定位精确度,精确度越高 越费电
_manager.desiredAccuracy = kCLLocationAccuracyBest;
[注:]苹果在iOS8里面修改了定位授权协议,也就意味着你原来的app在iOS8上很可能无法定位。目前最好的办法就是在app启动的时候调用IOS8的定位授权API来获取用户的授权,这样就不要在其他地方做修改了,如下
[_manager requestAlwaysAuthorization];
[_manager requestWhenInUseAuthorization];
[注:] 还需要在plist文件里面对 NSLocationAlwaysUsageDescription,NSLocationWhenInUseDescription 俩个属性进行添加,value可以为空;
//让位置管理器生效,开始更新位置变化
[_manager startUpdatingLocation];
2.消息推送API的修改
iOS常用的第三方推送服务器常用的有极光和信鸽;本次介绍信鸽服务器
从上图可以看出:
1.首先在你的app中注册通知, 注册通知时区别就在iOS8前后,区别如下
//[注]如果你的系统是iOS8或者之后的
if ([[UIDevice currentDevice].systemVersion floatValue] >= 8.0) {
//设置用户通知的表现形式
[[UIApplication sharedApplication] registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeAlert | UIUserNotificationTypeBadge | UIUserNotificationTypeSound) categories:nil]];
//注册远程通知 申请 device token
[[UIApplication sharedApplication] registerForRemoteNotifications];
} else {
//[注]注册一个远程通知,这个远程通知,有文字,角标,声音
[[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound)];
}
//注册信鸽服务 只有注册这个服务后,之后的数据才会发往信鸽服务器,只有注册后,信鸽服务器才可以向这个app 推送消息
+(void)startApp:(uint32_t)appId appKey:(NSString *)appKey;
参数说明:
Access Id: 通过xg.qq.com注册app时得到的Access Id。
Access key:通过xg.qq.com注册app时得到的Access key。
例如: [XGPush startApp:1234567 appKey:@"IF3W91AV58NC"];
2、接收到 APNS 服务器返回给我们的 device token
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken{
//向信鸽注册这个设备标示符
//注册之后信鸽的设备列表中才有你的这个真机
NSString *token = [XGPush registerDevice:deviceToken];
NSLog(@"token: %@",token);
}
3、应用程序将device token发送给PUSH服务端程序。
4、服务端程序向APNS服务发送消息。
5、APNS服务将消息发送给iPhone应用程序。