ZYLocationManager 基于单例模式工作,但是支持多个发起者同时处理多个请求,同时反馈,失败重试。
- (void)getLocationCoordinate:(id)sponsor complete:(LocationCompleteBlock)completeBlock;
- (void)getCity:(id)sponsor complete:(CityCompleteBlock)completeBlock;
使用 ZYLocationManager 单例对象发起地图定位信息请求,一般传入发起者 controller 引用:
__weak __typeof(self) weakSelf = self;
[[ZYLocationManager shareManager] getLocationCoordinate:weakSelf complete:^(CLLocationCoordinate2D location, NSError *error) {
//do something
}];
利用 block 带回的参数信息
__weak __typeof(self) weakSelf = self;
[[ZYLocationManager shareManager] getLocationCoordinate:weakSelf complete:^(CLLocationCoordinate2D location, NSError *error) {
if (nil == error) {
//do something
} else {
//verify authority
authorityBlock(error, weakSelf);
}
}];
如果有错误信息,将其交给 authorityBlock,内部进行处理
1.如果错误原因为无权限,弹出 AlertView 询问用户是否跳转到应用权限设置页进行更改操作(需要在发起者遵守 UIAlertViewDelegate,并实现相应的代理方法)
2.如果错误为其他原因(信号不好,请求错误等),触发自动重试,默认为 1 秒,直至发起者的生命周期结束