Xcode8 适配

一、 Xcode老版本的问题
Xcode8已经不提供ios7的sdk以及iphone4s设备的选取,但是由于项目的需要得继续适配低版本,这样工程从Xcode8版本转旧版本调试iphone4s时,xib文件会出现如下问题


Xcode8 适配_第1张图片
xib_error.png

解决方法:
右击xib文件 --> Open As --> Source Code
删除即可

二、 极光推送版本更新问题

  1. 首先开启推送设置


    Xcode8 适配_第2张图片
    notification_Setting.png
  1. 新版本更新后,(Alias)别名和(Tags)的设置
    ios10更新后,最新极sdk的api也发生了改变,具体查看官方文档
    项目换上最新sdk后,发现推送不上,后台打印如下
    "app not registed, give up set tag:xxx alias:xxx"
    这样是因为网速较慢时,推送还未注册便调用了设置Tags和Alias的方法,可通过对极光推送的添加监听后调用设置Tags和Alias的方法,代码如下:
 NSNotificationCenter *defaultCenter = [NSNotificationCenter defaultCenter];
 [defaultCenter addObserver:self
                    selector:@selector(setHgAlias)
                        name:kJPFNetworkDidSetupNotification
                      object:nil];

-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
    NSMutableSet *set = [NSMutableSet set];
    [set addObject:@"test"];
    NSString *alias = @"12345678";
    [JPUSHService setTags:set alias:alias fetchCompletionHandle:^(int iResCode, NSSet *iTags, NSString *iAlias) {
        NSLog(@"rescode: %d, \ntags: %@, \nalias: %@\n", iResCode, iTags, iAlias);
    }];
}

3)ios10通知代理方法

- (void)jpushNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(NSInteger))completionHandler {
    NSDictionary  *userInfo = notification.request.content.userInfo;
    [JPUSHService handleRemoteNotification:userInfo];
    NSLog(@"%@",userInfo);    

    if ([UIApplication sharedApplication].applicationState == UIApplicationStateActive) {
        //自定义声效处理
        [self showMessageSound];
    }
}

你可能感兴趣的:(Xcode8 适配)