iOS10 新特性
SiriKit
SiriKit的功能非常強(qiáng)大,支持音頻、視頻、消息發(fā)送接收、搜索照片、預(yù)訂行程、管理鍛煉等等。在用到此服務(wù)時(shí),siri會(huì)發(fā)送Intent對(duì)象,里面包括用戶的請(qǐng)求和各種數(shù)據(jù),可以對(duì)這個(gè)intent處理選擇適當(dāng)?shù)捻憫?yīng)。 這個(gè)功能主要是看這兩個(gè)頭文件(#import
Proactive Suggestions 系統(tǒng)預(yù)先建議
背景就是iOS9的時(shí)候系統(tǒng)給予的主動(dòng)建議會(huì)通過:Spolight搜索,Safari搜索,Handoff,或者siri建議。 在iOS10之后新增了,鍵盤QuickType建議,地圖,車載娛樂,應(yīng)用切換,siri交互,鎖屏播放。 比如你正在一個(gè)應(yīng)用里看一個(gè)酒店,可以使用mapitem屬性保存正在查看的這個(gè)酒店的位置,然后你切換旅行或地圖App時(shí)這個(gè)位置可以自動(dòng)提供使用。 如果你需要這樣利用系統(tǒng)來共享一個(gè)位置,那你需要指定這個(gè)位置的經(jīng)緯度,地名,電話等屬性 來便于siri的直接調(diào)起。
User Notifications 用戶通知
總體的意思就是支持了很多用戶定義的通知,并且可以捕捉到各個(gè)通知狀態(tài)的回調(diào)。以往通知的概念是:大家想接收的都提前做好準(zhǔn)備,然后一下全量分發(fā),沒收到也不管了,也不關(guān)心發(fā)送者。現(xiàn)在用戶通知做成了和網(wǎng)絡(luò)請(qǐng)求有點(diǎn)像 一個(gè)先發(fā)request再得到response的流程,甚至封裝了error,可以在各個(gè)狀態(tài)的方法中做一些額外操作,并且也能取到一些字段,如發(fā)送者等。這個(gè)功能的頭文件是:#import
#import <UserNotifications/NSString+UserNotifications.h>#import <UserNotifications/UNError.h>#import <UserNotifications/UNNotification.h>#import <UserNotifications/UNNotificationAction.h>#import <UserNotifications/UNNotificationAttachment.h>#import <UserNotifications/UNNotificationCategory.h>#import <UserNotifications/UNNotificationContent.h>#import <UserNotifications/UNNotificationRequest.h>#import <UserNotifications/UNNotificationResponse.h>#import <UserNotifications/UNNotificationSettings.h>#import <UserNotifications/UNNotificationSound.h>#import <UserNotifications/UNNotificationTrigger.h>#import <UserNotifications/UNUserNotificationCenter.h>#import <UserNotifications/UNNotificationServiceExtension.h>
UITextField
在iOS 10 中,UITextField新增了textContentType字段,是UITextContentType類型,它是一個(gè)枚舉,作用是可以指定輸入框的類型,以便系統(tǒng)可以分析出用戶的語義.是電話類型就建議一些電話,是地址類型就建議一些地址.可以在#import
UIKIT_EXTERN UITextContentType const UITextContentTypeName NS_AVAILABLE_IOS(10_0);UIKIT_EXTERN UITextContentType const UITextContentTypeNamePrefix NS_AVAILABLE_IOS(10_0);UIKIT_EXTERN UITextContentType const UITextContentTypeGivenName NS_AVAILABLE_IOS(10_0);UIKIT_EXTERN UITextContentType const UITextContentTypeMiddleName NS_AVAILABLE_IOS(10_0);UIKIT_EXTERN UITextContentType const UITextContentTypeFamilyName NS_AVAILABLE_IOS(10_0);UIKIT_EXTERN UITextContentType const UITextContentTypeNameSuffix NS_AVAILABLE_IOS(10_0);UIKIT_EXTERN UITextContentType const UITextContentTypeNickname NS_AVAILABLE_IOS(10_0);UIKIT_EXTERN UITextContentType const UITextContentTypeJobTitle NS_AVAILABLE_IOS(10_0);UIKIT_EXTERN UITextContentType const UITextContentTypeOrganizationName NS_AVAILABLE_IOS(10_0);UIKIT_EXTERN UITextContentType const UITextContentTypeLocation NS_AVAILABLE_IOS(10_0);UIKIT_EXTERN UITextContentType const UITextContentTypeFullStreetAddress NS_AVAILABLE_IOS(10_0);UIKIT_EXTERN UITextContentType const UITextContentTypeStreetAddressLine1 NS_AVAILABLE_IOS(10_0);UIKIT_EXTERN UITextContentType const UITextContentTypeStreetAddressLine2 NS_AVAILABLE_IOS(10_0);UIKIT_EXTERN UITextContentType const UITextContentTypeAddressCity NS_AVAILABLE_IOS(10_0);UIKIT_EXTERN UITextContentType const UITextContentTypeAddressState NS_AVAILABLE_IOS(10_0);UIKIT_EXTERN UITextContentType const UITextContentTypeAddressCityAndState NS_AVAILABLE_IOS(10_0);UIKIT_EXTERN UITextContentType const UITextContentTypeSublocality NS_AVAILABLE_IOS(10_0);UIKIT_EXTERN UITextContentType const UITextContentTypeCountryName NS_AVAILABLE_IOS(10_0);UIKIT_EXTERN UITextContentType const UITextContentTypePostalCode NS_AVAILABLE_IOS(10_0);UIKIT_EXTERN UITextContentType const UITextContentTypeTelephoneNumber NS_AVAILABLE_IOS(10_0);UIKIT_EXTERN UITextContentType const UITextContentTypeEmailAddress NS_AVAILABLE_IOS(10_0);UIKIT_EXTERN UITextContentType const UITextContentTypeURL NS_AVAILABLE_IOS(10_0);UIKIT_EXTERN UITextContentType const UITextContentTypeCreditCardNumber
Integrating with the Messages App 與系統(tǒng)短信 app交互
對(duì)消息額支持很大,可以模擬發(fā)消息收消息,發(fā)郵件等,提供了UI界面。 也提供了一些額外擴(kuò)展的api,如表情包區(qū)域。WWDC2016上說的各種消息內(nèi)的新操作在頭文件中都能找到Api。
Speech Recognition 語音識(shí)別轉(zhuǎn)文字
這個(gè)類里面的Api和方法調(diào)用都非常清晰,感覺使用起來會(huì)非常方便。真的為科大訊飛捏把汗了,科大訊飛的app(錄音寶)我看過,都還沒有說一段語音能直接轉(zhuǎn)文字的功能,他們是直接把聲音文件上傳,然后24小時(shí)候再發(fā)給你轉(zhuǎn)換后的結(jié)果…而且一上來就要收費(fèi)。蘋果的這個(gè)功能已經(jīng)做到了系統(tǒng)原生支持,真的厲害。
Wide Color 寬域顏色
文檔的原話說:大多數(shù)的 core字打頭的圖形框架 還有AVFoundation 都大大提高了對(duì)擴(kuò)展像素和寬色域色彩空間的支持。通過圖形堆棧擴(kuò)展這種方式比以往支持廣色域的顯示設(shè)備更加容易。現(xiàn)在對(duì)UIKit擴(kuò)展可以在sRGB的色彩空間下工作,性能更好,也可以在更廣泛的色域來搭配sRGB顏色。 然后說了幾個(gè)場(chǎng)景說建議你用sRGB吧,比如依賴于UIkit的clamp component values的應(yīng)用程序,或是使用較低級(jí)別api執(zhí)行自己圖像處理的 都建議用sRGB吧。
然后看了下UIColor類里 到底什么是sRGB? 發(fā)現(xiàn)多了兩個(gè)iOS10新增的api。
+ (UIColor *)colorWithDisplayP3Red:(CGFloat)displayP3Red green:(CGFloat)green blue:(CGFloat)blue alpha:(CGFloat)alpha NS_AVAILABLE_IOS(10_0);- (UIColor *)initWithDisplayP3Red:(CGFloat)displayP3Red green:(CGFloat)green blue:(CGFloat)blue alpha:(CGFloat)alpha NS_AVAILABLE_IOS(10_0);
細(xì)節(jié)都是一樣的就是一個(gè)類方法一個(gè)實(shí)例方法, 我理解下,就是說建議你們以前改用colorwithRGB的地方 現(xiàn)在都換成這個(gè)方法叭。可能大多數(shù)公司都抽成了 RGB(a,g,b,a)這種宏吧,那就在宏定義那改一下就好了?!?/p>
Adapting to the True Tone Display 真彩色顯示
真彩色的顯示會(huì)根據(jù)光感應(yīng)器來進(jìn)行自動(dòng)的調(diào)節(jié)來達(dá)到特定環(huán)境下的顯示與性能平衡效果。 如果需要這個(gè)功能的話需要再info.plist里配置
UIWhitePointAdaptivityStyle
共有五種選擇:
1.UIWhitePointAdaptivityStyleStandard 標(biāo)準(zhǔn)
2.UIWhitePointAdaptivityStyleReading 閱讀
3.UIWhitePointAdaptivityStylePhoto 圖片
4.UIWhitePointAdaptivityStyleVideo 視頻
5.UIWhitePointAdaptivityStyleGame 游戲
然后他說的很清楚,如果你是圖片處理類的app,那就直接配stylePhoto吧,如果你是閱讀類的那就直接配styleReading吧。 這五個(gè)形式的顯示效果從上往下遞減,我理解是說在閱讀時(shí)給你最好的效果,但如果在游戲時(shí)也給那么好的效果會(huì)影響性能,就給你一個(gè)相對(duì)次一點(diǎn)的顯示效果讓性能更流暢。
App Search Enhancements 應(yīng)用搜索增強(qiáng)
iOS10的搜索功能做了一定增強(qiáng):應(yīng)用程序內(nèi)搜索,搜索傳遞,考慮私人差異,結(jié)果可視化。 使用CSSearchQuery類,調(diào)用Core Spotlight的api,可以讓你不必自己維護(hù)自己的搜索索引,關(guān)于對(duì)搜索關(guān)鍵字的處理,還有考慮到不同類別差異導(dǎo)致搜索結(jié)果的排序都是蘋果幫你處理。
并且搜索結(jié)果可以繼續(xù)往下傳遞,假設(shè)你用Core Spotlight搜索火車站,提示的是地圖類app搜索火車站的結(jié)果,你點(diǎn)進(jìn)去后,這個(gè)地圖類app會(huì)接收到“火車站”這個(gè)字段在應(yīng)用內(nèi)也完成搜索。支持此功能也是需要配置plist文件:key-value CoreSpotlightContinuation-YES,然后設(shè)置CSQueryContinuationActionType(#import
Security and Privacy Enhancements 安全和保密性增強(qiáng)
安全方面在iOS10中引入了更多修改和補(bǔ)充,具體有以下幾點(diǎn):
1.在info.plist文件新增了一個(gè)key,NSAllowsArbitraryLoadsInWebContent,允許任意web頁面加載,同時(shí)蘋果會(huì)用ATS保護(hù)你的app。
2.使用改進(jìn)后的SecKey API 而不是過時(shí)的 CDSA API。
3.安全傳輸API中不再支持SSLv3, 建議你們盡快停用SHA1和3DES加密算法。
4.剪貼板的擴(kuò)展,因?yàn)閣wdc2016演示了可以跨設(shè)備復(fù)制粘貼啊,那肯定要做一些限制可見(#import
NSBluetoothPeripheralUsageDescriptionNSCalendarsUsageDescriptionNSCameraUsageDescriptionNSContactsUsageDescriptionNSHealthShareUsageDescriptionNSHealthUpdateUsageDescriptionNSHomeKitUsageDescriptionNSLocationAlwaysUsageDescriptionNSLocationWhenInUseUsageDescriptionNSMicrophoneUsageDescriptionNSMotionUsageDescriptionNSPhotoLibraryUsageDescriptionNSRemindersUsageDescriptionNSSiriUsageDescriptionNSSpeechRecognitionUsageDescriptionNSVideoSubscriberAccountUsageDescriptionNSVoIPUsageDescription
NSContactsUsageDescription,剛啟動(dòng)時(shí)不會(huì)崩潰,但是在喚起操作發(fā)生時(shí)會(huì)直接崩潰。 在info.plist設(shè)置之后就可以正常使用了。
字體變化
字體在iOS9較iOS8變粗變寬了, iOS10較iOS9變粗變寬了.
iOS10 適配教程
ATS的問題
iOS 9中默認(rèn)非HTTS的網(wǎng)絡(luò)是被禁止的,當(dāng)然我們也可以把NSAllowsArbitraryLoads設(shè)置為YES禁用ATS。不過iOS 10從2017年1月1日起蘋果不允許我們通過這個(gè)方法跳過ATS,也就是說強(qiáng)制我們用HTTPS,如果不這樣的話提交App可能會(huì)被拒絕。但是我們可以通過NSExceptionDomains來針對(duì)特定的域名開放HTTP可以容易通過審核。
NSExceptionDomains方式 設(shè)置域??梢院?jiǎn)單理解成,把不支持https協(xié)議的接口設(shè)置成http的接口。
具體方法:
1、在項(xiàng)目的info.plist中添加一個(gè)Key:App Transport Security Settings,類型為字典類型。
2、然后給它添加一個(gè)Exception Domains,類型為字典類型;
3、把需要的支持的域添加 主站蜘蛛池模板: 浦北县| 资源县| 元谋县| 呼图壁县| 天峻县| 威宁| 长春市| 高尔夫| 九台市| 祥云县| 寿光市| 松溪县| 陵水| 桓台县| 石泉县| 武义县| 布尔津县| 宁安市| 曲阜市| 昌江| 洛南县| 平武县| 湖南省| 扶余县| 信丰县| 临泉县| 修水县| 徐闻县| 通江县| 公安县| 建湖县| 平山县| 乌鲁木齐市| 惠来县| 扎鲁特旗| 高州市| 龙南县| 邹平县| 汉寿县| 五莲县| 江西省|