假使没有拉开定位澳门皇冠官网app ,那么是时候升级要求升级的第三方库了

自从苹果企业在4月17号开放升级的话,官方突显iOS8一度有46%的份额,微信,支付宝,今日头条搜狐等也早已包容iOS8,对于开发者来说,包容iOS8
也是毫无疑问的事情。下边说几点自己在包容iOS8时,发现的几点难题。

先添加Corelocation.framework框架

1、SDK 里面的少数API无法在iOS8下使用

设若,你的老品种在iOS8下运行,打开就闪退(iOS8事先没难点),那么“恭喜您”,你中招了,比如下边我遇上的,是因为旧版本的高德地图引用了
iOS8
里面不能够用的api,固然你也亟需接近的标题,那么是时候升级需求升级的第三方库了。
<pre><code>2014-09-28 14:32:25.576
WoZaiXianChang[4505:140022] *** Terminating app due to uncaught
exception ‘NSInvalidArgumentException’, reason: ‘-[UIDevice
asUniqueDeviceIdentifier]: unrecognized selector sent to instance
0x7c020080’ </code></pre>

在info.plist中添加

2、iOS8 上边定位效率选用改变了

以前版本的SDk是如此起步系统稳定的
<pre><code> // 判断定位操作是还是不是被允许
if([CLLocationManager locationServicesEnabled]) {
locationManager = [[CLLocationManager alloc] init];
locationManager.delegate = self;
[locationManager startUpdatingLocation];
}else {
//提醒用户不能开展固化操作
}
</code></pre>倘诺在iOS8下用这么的形式,你会意识无法稳定,那是因为iOS8下添加了新的点子
<pre><code> /表示使用应用程序期间 开启定位

  • (void)requestWhenInUseAuthorization
    //表示一直 开启定位
  • (void)requestAlwaysAuthorization </code></pre>

相互分别在于,iOS7 开端,有更强有力的后台运行效果,即使 用
requestAlwaysAuthorization 方法,则表示后台运行时也会用到稳定
iOS8 下行使系统定点如下:
<pre><code> // 判断定位操作是还是不是被允许
if([CLLocationManager locationServicesEnabled]) {
locationManager = [[CLLocationManager alloc] init];
locationManager.delegate = self;
//兼容iOS8定位
SEL requestSelector =
NSSelectorFromString(@”requestWhenInUseAuthorization”);
if ([CLLocationManager authorizationStatus] ==
kCLAuthorizationStatusNotDetermined &&
[locationManager respondsToSelector:requestSelector]) {
[locationManager requestWhenInUseAuthorization];
} else {
[locationManager startUpdatingLocation];
}
return YES;
}else {
//提醒用户不能进行一定操作
}
return NO; </code></pre>
与此同时还亟需添加新的格局,其余的都如出一辙
<pre><code> – (void)locationManager:(CLLocationManager
*)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status
{
if (status == kCLAuthorizationStatusAuthorizedWhenInUse) {
[locationManager startUpdatingLocation];
} else if (status == kCLAuthorizationStatusAuthorized) {
// iOS 7 will redundantly call this line.
[locationManager startUpdatingLocation];
} else if (status > kCLAuthorizationStatusNotDetermined) {
//…
[locationManager startUpdatingLocation];
}
} </code></pre>
除此之外那个,你还必要在 info.plist 里面添加新的键值,否则 也是心有余而力不足稳定的
<pre><code>//表示使用应用程序时期 开启定位

  • (void)requestWhenInUseAuthorization 对应
    NSLocationWhenInUseUsageDescription key
    //表示一贯 开启定位
  • (void)requestAlwaysAuthorization 对应
    NSLocationAlwaysUsageDescription key</code></pre>

中间,NSLocationWhenInUseUsageDescription(或者NSLocationAlwaysUsageDescription)
对应的文字会在首先次呼吁用户同意定位的时候出现,还有 设置 > 隐私 >
定位 > your app 里面也见面到,比如上边就是开启app时出现的

澳门皇冠官网app 1

Privacy – Location When In Use Usage Description        string
-要求你的同意 才能访问地点

3、iOS8 下报了名通告的改变

以此不要多说,直接看代码就知道了,有某些需求注意的是,黑色部分必需要加,不然就是能取的token值,app
接受到的推送也是冷清的。
<pre><code>//注册音信布告
if (IOS8After) {
[[UIApplication sharedApplication]
registerForRemoteNotifications];
<span style=”color:#3333ff;”>[[UIApplication
sharedApplication]
registerUserNotificationSettings:[UIUserNotificationSettings
settingsForTypes:UIUserNotificationTypeBadge |
UIUserNotificationTypeSound | UIUserNotificationTypeAlert
categories:nil]];</span>
}
else {
[[UIApplication sharedApplication]
registerForRemoteNotificationTypes:(UIRemoteNotificationTypeAlert |
UIRemoteNotificationTypeSound | UIRemoteNotificationTypeBadge)];
} </code></pre>

在APPdelegate.m中  那里 启动的时候唤醒一次

4、iOS8 cell 层级的改观

要是你像那样取cell 的row
的话,这您又要加个判断方式了,在iOS8下cell的层级又改了,基本上每升级一个本子,苹果都会对cell的协会举办调整,在此提议不用用这么的主意取cell
的row,而是用属性的法门保存 indexPath
<pre><code>NSUInteger curRow = 0;
if ([[MetaData getOSVersion] integerValue] == 7)
{
curRow = [(UITableView *)[[self superview] superview]
indexPathForCell:self].row;
}
else
{
curRow = [(UITableView *)[self superview]
indexPathForCell:self].row;
} </code></pre>

#import <CoreLocation/CoreLocation.h>  

5、UIActionSheet and UIAlertView 的升级

在iOS8内部,官方提供了新的类UIAlertController来替换UIActionSheet and
UIAlertView。
以身作则代码如下:
<pre><code>
UIAlertController* alert = [UIAlertController
alertControllerWithTitle:@”My Alert”
message:@”This is an alert.”
preferredStyle:UIAlertControllerStyleAlert];

UIAlertAction* defaultAction = [UIAlertAction actionWithTitle:@”OK”
style:UIAlertActionStyleDefault
handler:^(UIAlertAction * action) {}];

[self presentViewController:alert animated:YES completion:nil];
</pre></code>
有关为啥为加这几个类,本人估量是和iOS8新加的size
classes有关,目标是联合屏幕在各类尺寸各样方向上的显示。如若您在iOS 8
里面使用UIActionSheet and UIAlertView
可能会冒出局地很想得到的难题,指出在iOS 8 里面使用UIAlertController,iOS
8 此前使用UIActionSheet and UIAlertView
那是近期为止发现的 iOS8 包容性难题,大家发现其他兼容性难题,一起座谈哦
正文在csdn上边也有揭橥:http://blog.csdn.net/wangyangyangcc/article/details/39637787

加上代理CLLocationManagerDelegate

@property(nonatomic,strong)CLLocationManager *locationManager;

 

if ([CLLocationManager locationServicesEnabled]) {

        _locationManager = [[CLLocationManager alloc]init];

        _locationManager.delegate = self;

        [_locationManager requestAlwaysAuthorization];

        

        [_locationManager requestWhenInUseAuthorization];      

        //设置寻址精度

        _locationManager.desiredAccuracy = kCLLocationAccuracyBest;

        _locationManager.distanceFilter = 5.0;

        [_locationManager startUpdatingLocation];

    }

   倘若没有打开定位 

在要求稳定的地点 

#import <CoreLocation/CoreLocation.h>  

添加代办CLLocationManagerDelegate

@property(nonatomic,strong)CLLocationManager *locationManager;//定位

  if ([CLLocationManager locationServicesEnabled]) {

        _locationManager = [[CLLocationManager alloc]init];

        _locationManager.delegate = self;

        [_locationManager requestAlwaysAuthorization];

        [_locationManager requestWhenInUseAuthorization];

        //设置寻址精度

        _locationManager.desiredAccuracy = kCLLocationAccuracyBest;

        _locationManager.distanceFilter = 5.0;

        [_locationManager startUpdatingLocation];

    }

#pragma mark ——定位败北

/*身份失败则履行此代理方法*/

/*固化失利弹出提示窗,点击打开定位按钮
按钮,会打开系统装置,提示打开定位服务*/

-(void)locationManager:(CLLocationManager *)manager
didFailWithError:(NSError *)error{

    /*安装提示提醒用户打开定位服务*/

    UIAlertController * alert = [UIAlertController
alertControllerWithTitle:@”获取一定才能创制简历”
message:@”请在设置中开辟定位”
preferredStyle:UIAlertControllerStyleAlert];

    UIAlertAction * ok =[UIAlertAction actionWithTitle:@”打开定位”
style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull
action) {

        /*打开定位装置*/

        NSURL * settingsURL = [NSURL
URLWithString:UIApplicationOpenSettingsURLString];

        [[UIApplication sharedApplication]openURL:settingsURL];

    }];

    UIAlertAction * cacel = [UIAlertAction actionWithTitle:@”取消”
style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull
action) {

        

    }];

    [alert addAction:ok];

    [alert addAction:cacel];

    [self presentViewController:alert animated:YES completion:nil];

}

/*一定打响后则举行此代理方法*/

#pragma mark 定位打响

-(void)locationManager:(CLLocationManager *)manager
didUpdateLocations:(NSArray<CLLocation *> *)locations{

    [_locationManager stopUpdatingLocation];

    /*旧值*/

    CLLocation * currentLocation = [locations lastObject];

    // CLGeocoder * geoCoder = [[CLGeocoder alloc]init];

    /*打印当前经纬度*/

   
NSLog(@”%f%f”,currentLocation.coordinate.latitude,currentLocation.coordinate.longitude);

    

    latitudeStr = [NSString
stringWithFormat:@”%f”,currentLocation.coordinate.latitude];

    longitudeStr = [NSString
stringWithFormat:@”%f”,currentLocation.coordinate.longitude];

    

}

 在急需的地点写下

        if (latitudeStr == nil) {

            /*安装提示提醒用户打开定位服务*/

            UIAlertController * alert = [UIAlertController
alertControllerWithTitle:@”获取一定才能创设简历”
message:@”请在安装中开辟定位”
preferredStyle:UIAlertControllerStyleAlert];

            UIAlertAction * ok =[UIAlertAction
actionWithTitle:@”打开定位” style:UIAlertActionStyleDefault
handler:^(UIAlertAction * _Nonnull action) {

                /*打开定位装置*/

                NSURL * settingsURL = [NSURL
URLWithString:UIApplicationOpenSettingsURLString];

                [[UIApplication
sharedApplication]openURL:settingsURL];

            }];

            UIAlertAction * cacel = [UIAlertAction
actionWithTitle:@”取消” style:UIAlertActionStyleCancel
handler:^(UIAlertAction * _Nonnull action) {

    

            }];

            [alert addAction:ok];

            [alert addAction:cacel];

            [self presentViewController:alert animated:YES
completion:nil];

    

            return;

        }

 

相关文章