(0003) iOS 开发之App 适配iOS 10

来源:互联网 发布:端口共享 编辑:程序博客网 时间:2024/04/20 02:38

iOS  10 给开发者带来的变化


顺便加一句:我是第一时间更新Xcode 8正式版的,一切正常,注释快捷键也没有网上说的问题。运行速度更快了,不容易崩溃了!


App 做了哪些兼容:


1.UI 兼容,没想到好的方法,一处一处改了。不过再保留思考。


2.权限兼容。info.plist 中添加 (以下仅列取使用到的:)

相机权限: Privacy - Camera Usage Description 是否允许此App使用你的相机?

相册权限: Privacy - Photo Library Usage Description 是否允许此App访问你的媒体资料库?

通讯录权限: Privacy - Contacts Usage Description 是否允许此App访问你的通讯录?

日历权限:Privacy - Calendars Usage Description 是否允许此App使用日历?

定位权限:Privacy - Location When In Use Usage Description 我们需要通过您的地理位置信息获取您周边的相关数据



3.后台模式

或者在Xcode里选中当前的target,选择Capabilities,找到Background Modes,打开它,在里面选择对应权限.

我的app里只用到RemoteNotification ,打勾即可!



4. UIApplication对象中openUrl被废iOS 做了兼容

iOS 10 干掉了所有系统设置的 URL Scheme,这意味着你再也不可能直接跳转到系统设置页面(比如 WiFi、蜂窝数据、定位等)。

在iOS 10.0以前,我们要想使用应用程序去打开一个网页或者进行跳转,直接使用[[UIApplication sharedApplication] openURL 方法。

在iOS 10全新的推出了[UIApplication sharedApplication] openURL:nil options:nil completionHandler:^(BOOL success);有一个成功的回调block 可以进行监视。暂时不知道怎么用!


根据系统版本号<10.0的正常跳转。否则提示用户自己去设置里设置即可。

-对于app用到的其他(例如:相机,定位,通讯录等)的跳转设置开关。直接使用:

+ (void)openSettingsURLString

{

    NSURL *url = [NSURLURLWithString:UIApplicationOpenSettingsURLString];

    if([[UIApplicationsharedApplication]canOpenURL:url]) {

        [[UIApplicationsharedApplication]openURL:url];

    }

}


5. User Notifications 用户通知

iOS 10 中以前杂乱的和通知相关的 API 都被统一了,现在开发者可以使用独立的 UserNotifications.framework 来集中管理和使用 iOS 系统中通知的功能。在 iOS 10 中,开发者的服务器有机会在本地或者远程通知发送给用户之前再进行修改。在此基础上,Apple 还增加了撤回单条通知,更新已展示通知,中途修改通知内容,在通知中展示图片视频,自定义通知 UI 等一系列新功能,非常强大。


6. 屏蔽杂乱无章的log

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

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

真机调试时,控制台有没有打印,又把OS_ACTIVITY_MODE 前面的对勾去掉。运行真机测试,控制台打印出来了!哈哈哈,,,


7.WWDC 15 提出的 ATS (App Transport Security) Apple在推进网络通讯安全的一个重要方式。在 iOS 9 OS X 10.11中,默认情况下非 HTTPS的网络访问是被禁止的。当然,因为这样的推进影响面非常广,作为缓冲,我们可以在 Info.plist中添加NSAppTransportSecurity字典并且将NSAllowsArbitraryLoads设置为YES来禁用 ATS。不过,WWDC 16中,Apple表示将继续在 iOS 10 macOS 10.12里收紧对普通 HTTP的访问限制。从 2017 1 1日起,所有的新提交 app默认是不允许使用NSAllowsArbitraryLoads来绕过 ATS限制的,也就是说,我们最好保证 app的所有网络请求都是 HTTPS加密的,否则可能会在应用审核时遇到麻烦。


总结一下就是,对于 API 请求,基本上是必须使用 HTTPS的;我们的服务器已经是HTTPS了。这里也暂不改变。


8.iOS 10之前没添加白名单,分享正常,iOS 10后分享遇到问题:

报:-22005 之类的错误。

解决办法:添加白名单。

当你的应用使用 QQ/QQ空间/支付宝/微信SDK 的相关能力(分享、收藏、支付、登录等)时,

需要在“Info.plist”里增加如下代码:(根据自己的平台需要添加:)

 <key>LSApplicationQueriesSchemes</key> <array>    <!-- 微信 URL Scheme 白名单-->    <string>wechat</string>    <string>weixin</string>    <!-- 新浪微博 URL Scheme 白名单-->    <string>sinaweibohd</string>    <string>sinaweibo</string>    <string>sinaweibosso</string>    <string>weibosdk</string>    <string>weibosdk2.5</string>    <!-- QQ、Qzone URL Scheme 白名单-->    <string>mqqapi</string>    <string>mqq</string>    <string>mqqOpensdkSSoLogin</string>    <string>mqqconnect</string>    <string>mqqopensdkdataline</string>    <string>mqqopensdkgrouptribeshare</string>    <string>mqqopensdkfriend</string>    <string>mqqopensdkapi</string>    <string>mqqopensdkapiV2</string>    <string>mqqopensdkapiV3</string>    <string>mqzoneopensdk</string>    <string>wtloginmqq</string>    <string>wtloginmqq2</string>    <string>mqqwpa</string>    <string>mqzone</string>    <string>mqzonev2</string>    <string>mqzoneshare</string>    <string>wtloginqzone</string>    <string>mqzonewx</string>    <string>mqzoneopensdkapiV2</string>    <string>mqzoneopensdkapi19</string>    <string>mqzoneopensdkapi</string>    <string>mqzoneopensdk</string>    <!-- 支付宝  URL Scheme 白名单-->    <string>alipay</string>    <string>alipayshare</string></array>




0 0
原创粉丝点击