zoukankan      html  css  js  c++  java
  • iOS开发 适配iOS10以及Xcode8

    现在在苹果的官网上,我们已经可以下载到Xcode8的GM版本了,加上9.14日凌晨,苹果就要正式推出iOS10系统的推送了,在此之际,iOS10的适配已经迫在眉睫啦,不知道Xcode8 beat版本,童鞋们有木有下载过来试试呢?就我的使用来说,总体觉得苹果还是坑不断,但是也在一直进步的啦。下面我就来说说,iOS10的适配以及Xcode8使用上的一些注意点。

    一、证书管理

    用Xcode8打开工程后,比较明显的就是下图了,这个是苹果的新特性,可以帮助我们自动管理证书。建议大家勾选这个Automatically manage signing(Ps.但是在beat2版本我用的时候,完全不可以,GM版本竟然神奇的又好了。)


    QQ20160913-8.png-96.9kB

    下面我来说说可能会出现的问题:

    1.Xcode未设置开发者账号情况下的截图


    QQ20160913-0.png-38.5kB


    解决办法是:大家在Xcode的偏好设置中,添加苹果账号,即可。

    2.设备机器未添加进开发者的Device情况下的截图


    QQ20160913-2.png-33.7kB


    解决办法是:大家在官网将设备添加进开发机后,陪下描述文件重新下个描述文件即可。

    3.正常情况:Xcode配置登录开发者账号后的图片,耐心等待即可。


    QQ20160913-1.png-25.1kB


    等待完成之后的图


    QQ20160913-3.png-27kB

    二、Xib文件的注意事项

    使用Xcode8打开xib文件后,会出现下图的提示。


    QQ20160913-9.png-41.7kB


    大家选择Choose Device即可。
    之后大家会发现布局啊,frame乱了,只需要更新一下frame即可。如下图


    QQ20160913-11.png-113.2kB
    • 注意:如果按上面的步骤操作后,在用Xcode7打开Xib会报一下错误,

    QQ20160913-12.png-32.3kB
    • 解决办法:需要删除Xib里面
      <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
      这句话,以及把< document >中的toolsVersion和< plugIn >中的version改成你正常的xib文件中的值
      ,不过不建议这么做,在Xcode8出来后,希望大家都快速上手,全员更新。这就跟Xcode5到Xcode6一样,有变动,但是还是要尽早学习,尽快适应哟!

    三、代码及Api注意

    使用Xcode8之后,有些代码可能就编译不过去了,具体我就说说我碰到的问题。
    1.UIWebView的代理方法:
    **注意要删除NSError前面的 nullable,否则报错。

    - (void)webView:(UIWebView *)webView didFailLoadWithError:(nullable NSError *)error
    {
        [self hideHud];
    }

    四、代码注释不能用的解决办法

    这个是因为苹果解决xcode ghost,把插件屏蔽了。
    解决方法
    打开终端,命令运行: sudo /usr/libexec/xpccachectl
    然后必须重启电脑后生效

    注意:Xcode8内置了开启注释的功能,位置在这里


    QQ20160914-3.png

    快捷键的设置在这里


    QQ20160914-2.png

    貌似Xcode8取消了三方插件的功能,具体可以查阅下Xcode8 Source Editor

    五、权限以及相关设置

    注意,添加的时候,末尾不要有空格
    我们需要打开info.plist文件添加相应权限的说明,否则程序在iOS10上会出现崩溃。
    具体如下图:


    QQ20160914-0.png

    麦克风权限:Privacy - Microphone Usage Description 是否允许此App使用你的麦克风?
    相机权限: Privacy - Camera Usage Description 是否允许此App使用你的相机?
    相册权限: Privacy - Photo Library Usage Description 是否允许此App访问你的媒体资料库?通讯录权限: Privacy - Contacts Usage Description 是否允许此App访问你的通讯录?
    蓝牙权限:Privacy - Bluetooth Peripheral Usage Description 是否许允此App使用蓝牙?

    语音转文字权限:Privacy - Speech Recognition Usage Description 是否允许此App使用语音识别?
    日历权限:Privacy - Calendars Usage Description 是否允许此App使用日历?

    定位权限:Privacy - Location When In Use Usage Description 我们需要通过您的地理位置信息获取您周边的相关数据
    定位权限: Privacy - Location Always Usage Description 我们需要通过您的地理位置信息获取您周边的相关数据
    定位的需要这么写,防止上架被拒。

    六、字体变大,原有frame需要适配

    经有的朋友提醒,发现程序内原来2个字的宽度是24,现在2个字需要27的宽度来显示了。。
    希望有解决办法的朋友,评论告我一下耶,谢谢啦

    七、推送

    如下图的部分,不要忘记打开。所有的推送平台,不管是极光还是什么的,要想收到推送,这个是必须打开的哟✌️


    QQ20160914-4.png

    之后就应该可以收到推送了。另外,极光推送也推出新版本了,大家也可以更新下。

    PS.苹果这次对推送做了很大的变化,希望大家多查阅查阅,处理推送的代理方法也变化了。

    // 推送的代理
    [<UNUserNotificationCenterDelegate>]

    iOS10收到通知不再是在
    [application: didReceiveRemoteNotification:]方法去处理, iOS10推出新的代理方法,接收和处理各类通知(本地或者远程)

    - (void)userNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions))completionHandler { //应用在前台收到通知 NSLog(@"========%@", notification);}- (void)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void (^)())completionHandler { //点击通知进入应用 NSLog(@"response:%@", response);}

    稍后我会更新文章,对推送做一个详细的讲解。

    8.屏蔽杂乱无章的bug

    更新Xcode8之后,新建立工程,都会打印一堆莫名其妙看不懂的Log.
    如这些

    subsystem: com.apple.UIKit, category: HIDEventFiltered, enable_level: 0, persist_level: 0, default_ttl: 0, info_ttl: 0, debug_ttl: 0, generate_symptoms: 0, enable_oversize: 1,

    屏蔽的方法如下:
    Xcode8里边 Edit Scheme-> Run -> Arguments, 在Environment Variables里边添加
    OS_ACTIVITY_MODE = Disable


     

    如果写了之后还是打印log,请重新勾选对勾,就可以解决了



    文/徐不同(简书作者)
    原文链接:http://www.jianshu.com/p/9756992a35ca
    著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
  • 相关阅读:
    ExtJS小技巧
    Oracle 表的行数、表占用空间大小,列的非空行数、列占用空间大小 查询
    NPM 私服
    IDEA 不编译java以外的文件
    SQL 引号中的问号在PrepareStatement 中不被看作是占位符
    Chrome 浏览器自动填表呈现淡黄色解决
    批量删除Maven 仓库未下载成功.lastupdate 的文件
    Oracle 11g 监听很慢,由于监听日志文件太大引起的问题(Windows 下)
    Hibernate 自动更新表出错 建表或添加列,提示标识符无效
    Hibernate 自动更新表出错 More than one table found in namespace
  • 原文地址:https://www.cnblogs.com/xiao-love-meng/p/5881560.html
Copyright © 2011-2022 走看看