對iOS10新增Api的詳細(xì)探究

本文章轉(zhuǎn)自 對iOS10新增Api的詳細(xì)探究
這里是直接復(fù)制的,需要的請訪問下面的連接
http://www.cnblogs.com/dsxniubility/p/5596973.html

對iOS10新增Api的詳細(xì)探究
本文主要是一些對iOS新功能的探索,之前發(fā)現(xiàn)博客里關(guān)于iOS新功能的分析大多是過于概括拍埠,每個功能幾句話督怜,無法了解到具體的功能违柏。所以本次的探索是基于Api層面侣滩,著重看一些具體用法所做的筆記摊册,本來想分別畫個類圖來著罢缸,后來還是覺得太耗時而放棄篙贸。如果不想把蘋果iOSSDK里的.h文件都擺出來詳細(xì)讀,那看這篇筆記應(yīng)該是個不錯的選擇枫疆。

本文以文檔的目錄為基礎(chǔ)爵川,提到的功能模塊有:

Proactive Suggestions

Integrating with the Messages App

User Notifications

Speech Recognition

Wide Color

Adapting to the True Tone Display

App Search Enhancements

Widget Enhancements

Security and Privacy Enhancements

還沒有詳細(xì)探索的模塊是

SiriKit

CallKit (工作職能和這里聯(lián)系不多,還不care這里)

Apple Pay Enhancements (工作職能和這里聯(lián)系不多息楔,還不care這里)

SiriKit
SiriKit的功能非常強大寝贡,支持音頻、視頻值依、消息發(fā)送接收圃泡、搜索照片、預(yù)訂行程愿险、管理鍛煉等等颇蜡。在用到此服務(wù)時,siri會發(fā)送Intent對象辆亏,里面包括用戶的請求和各種數(shù)據(jù)风秤,可以對這個intent處理選擇適當(dāng)?shù)捻憫?yīng)。 這個功能主要是看這兩個頭文件(#import <Intents/Intents.h>扮叨、#import <IntentsUI/IntentsUI.h>)所涵蓋到的類太多唁情,前期先略過了,之后等iOS10可以推送更新了再做進(jìn)一步調(diào)研甫匹。

Proactive Suggestions 系統(tǒng)預(yù)先建議
背景就是iOS9的時候系統(tǒng)給予的主動建議會通過:Spolight搜索甸鸟,Safari搜索惦费,Handoff,或者siri建議抢韭。 在iOS10之后新增了薪贫,鍵盤QuickType建議,地圖刻恭,車載娛樂瞧省,應(yīng)用切換,siri交互鳍贾,鎖屏播放鞍匾。 比如你正在一個應(yīng)用里看一個酒店,可以使用mapitem屬性保存正在查看的這個酒店的位置骑科,然后你切換旅行或地圖App時這個位置可以自動提供使用橡淑。 如果你需要這樣利用系統(tǒng)來共享一個位置,那你需要指定這個位置的經(jīng)緯度咆爽,地名,電話等屬性 來便于siri的直接調(diào)起梁棠。

文檔中還列出了幾種場景

1.在輸入框(UITextFiled)輸入時,可以指定一下這個輸入框的類型斗埂,以便系統(tǒng)可以分析出用戶的語義符糊。 是電話類型就建議一些電話,是地址類型就建議一些地址呛凶∧新Γ看下頭文件(#import <UIKit/UITextInputTraits.h>)可指定的類型 就是這個新增的textContentType字段,里面有很多種類型可選漾稀。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
UIKIT_EXTERN NSString *const UITextContentTypeName NS_AVAILABLE_IOS(10_0);
UIKIT_EXTERN NSString *const UITextContentTypeNamePrefix NS_AVAILABLE_IOS(10_0);
UIKIT_EXTERN NSString *const UITextContentTypeGivenName NS_AVAILABLE_IOS(10_0);
UIKIT_EXTERN NSString *const UITextContentTypeMiddleName NS_AVAILABLE_IOS(10_0);
UIKIT_EXTERN NSString *const UITextContentTypeFamilyName NS_AVAILABLE_IOS(10_0);
UIKIT_EXTERN NSString *const UITextContentTypeNameSuffix NS_AVAILABLE_IOS(10_0);
UIKIT_EXTERN NSString *const UITextContentTypeNickname NS_AVAILABLE_IOS(10_0);
UIKIT_EXTERN NSString *const UITextContentTypeJobTitle NS_AVAILABLE_IOS(10_0);
UIKIT_EXTERN NSString *const UITextContentTypeOrganizationName NS_AVAILABLE_IOS(10_0);
UIKIT_EXTERN NSString *const UITextContentTypeLocation NS_AVAILABLE_IOS(10_0);
UIKIT_EXTERN NSString *const UITextContentTypeFullStreetAddress NS_AVAILABLE_IOS(10_0);
UIKIT_EXTERN NSString *const UITextContentTypeStreetAddressLine1 NS_AVAILABLE_IOS(10_0);
UIKIT_EXTERN NSString *const UITextContentTypeStreetAddressLine2 NS_AVAILABLE_IOS(10_0);
UIKIT_EXTERN NSString *const UITextContentTypeAddressCity NS_AVAILABLE_IOS(10_0);
UIKIT_EXTERN NSString *const UITextContentTypeAddressState NS_AVAILABLE_IOS(10_0);
UIKIT_EXTERN NSString *const UITextContentTypeAddressCityAndState NS_AVAILABLE_IOS(10_0);
UIKIT_EXTERN NSString *const UITextContentTypeSublocality NS_AVAILABLE_IOS(10_0);
UIKIT_EXTERN NSString *const UITextContentTypeCountryName NS_AVAILABLE_IOS(10_0);
UIKIT_EXTERN NSString *const UITextContentTypePostalCode NS_AVAILABLE_IOS(10_0);
UIKIT_EXTERN NSString *const UITextContentTypeTelephoneNumber NS_AVAILABLE_IOS(10_0);
UIKIT_EXTERN NSString *const UITextContentTypeEmailAddress NS_AVAILABLE_IOS(10_0);
UIKIT_EXTERN NSString *const UITextContentTypeURL NS_AVAILABLE_IOS(10_0);
UIKIT_EXTERN NSString *const UITextContentTypeCreditCardNumber NS_AVAILABLE_IOS(10_0);
2.如果是視頻類App可以使用MPPlayableContentManager (#import <MediaPlayer/MPPlayableContentManager.h>)看了下沪伙,新增了一個屬性nowPlayingIdentifiers,蘋果的意思應(yīng)該是只要你以前是用這個多媒體類播放音樂的我就可以讓你在鎖屏頁面交互县好,需要配置在這個數(shù)組里围橡。

3.如果是出行類app可以使用MKDirectionsRequest。 (#import <MapKit/MKDirectionsRequest.h> )這個類里幾乎沒有新增api缕贡,iOS10就新增了一個枚舉翁授,而且看上去就是個默認(rèn)值。如果要使用此功能晾咪,需要配置在info.plist文件里 新增key - value 收擦,MKDirectionsApplicationSupportedModes - MKDirectionsModeRideShare。

User Notifications 用戶通知
總體的意思就是支持了很多用戶定義的通知谍倦,并且可以捕捉到各個通知狀態(tài)的回調(diào)塞赂。以往通知的概念是:大家想接收的都提前做好準(zhǔn)備,然后一下全量分發(fā)昼蛀,沒收到也不管了宴猾,也不關(guān)心發(fā)送者≡泊妫現(xiàn)在用戶通知做成了和網(wǎng)絡(luò)請求有點像 一個先發(fā)request再得到response的流程,甚至封裝了error仇哆,可以在各個狀態(tài)的方法中做一些額外操作沦辙,并且也能取到一些字段,如發(fā)送者等讹剔。

此功能的頭文件入口在#import <UserNotifications/UserNotifications.h>

1.NSString+UserNotifications.h

有一個方法 localizedUserNotificationStringForKey: arguments: (提供該通知被呈現(xiàn)時的本地化字符串)油讯,猜測下面的類有很多initWithIdentifier的,他們的indentifier就是這個延欠。

2.UNError.h

有一個屬性UNErrorDomain 和一個枚舉 UNErrorCode陌兑,顧名思義。

3.UNNotification.h

里面有兩個屬性由捎,date日期 和 request兔综,這個request是上面“8”的類型UNNotificationRequest,點進(jìn)去看了下比較清晰隅俘,有identifier標(biāo)識,content內(nèi)容笤喳,trigger觸發(fā)條件为居, 和帶上這三個東西的初始化方法。 其中內(nèi)容 和 觸發(fā)條件這兩個屬性杀狡,分別是上面“7” 和 “12”的類型蒙畴,這個下面再談。

4.UNNotificationAction.h

這個類突出的是一個通知的動作呜象,有identifier膳凝,title,options(枚舉恭陡,就是通知當(dāng)前的權(quán)限蹬音,允許?拒絕休玩?前臺時允許著淆?)屬性。然后就是帶上這三個東西的初始化方法拴疤。 然后比較費解的就是下面有一個子類UNTextInputNotificationAction 永部,這個子類有兩個額外屬性, 按鈕title呐矾,和文本框placeholder苔埋, 為什么會是這兩個屬性? 莫非是點擊通知后下拉出的快速回復(fù)蜒犯,有一個輸入框和一個按鈕组橄。

5.UNNotificationAttachment.h

這個里面就是URL(資源url屬性)荞膘,type(附件類型)。 然后是帶上這兩個屬性的初始化方法晨炕。 下面聲明了幾個字符串常量衫画,暫時還不知道具體用在哪里,typeHint瓮栗,hiddenKey削罩,clippingRectKey,TimeKey费奸。

6.UNNotificationCategory.h

有indentifier屬性弥激,actions(里面是數(shù)組),minimalActions(最重要的數(shù)組愿阐,就是只能給你兩個位置顯示你顯示哪兩個微服,這么個意思),intentIdentifiers屬性(應(yīng)該是和上面的動作數(shù)組關(guān)聯(lián)的吧)缨历,options(權(quán)限相關(guān)以蕴,無?允許自定義關(guān)閉辛孵?允許車載系統(tǒng)交互丛肮?)。最后就是把這些都帶上的init方法魄缚。 猜測這個類之所以取名叫category應(yīng)該是宝与,在某個地方展示通知的時候會把所有通知一一分類, 然后每個類別的通知可能最多只能讓你展示幾個冶匹,如果不做限制應(yīng)該會展示全部通知习劫,如果權(quán)限設(shè)置的是允許自定義關(guān)閉那可能就是支持類似一鍵清除的操作。

7.UNNotificationContent.h

消息的內(nèi)容嚼隘,一看就能知道應(yīng)該是一個類似于Entity的東西诽里,里面裝有大量的屬性:attachments(可選的附件集合),badge(小紅點數(shù)量)飞蛹,body须肆,categoryIndentifier,launchImageName(從消息里點開的應(yīng)用程序應(yīng)該能看到啟動圖對吧)桩皿,subtitle豌汇,threadIdentifier(與request關(guān)聯(lián)),title泄隔,userInfo拒贱,sound這個是“11”的類型,應(yīng)該是同時來時的聲音,點開“11”看一下 逻澳,就倆方法闸天,defaultSound秽褒,soundNamed: 自定義聲音刹勃,都在~/Library/Sounds 目錄下。 恩再回到剛才那個content類里面有個子類UNMutableNotificationContent旅挤,屬性和父類相同瓤逼,只不過是子類的屬性都可以修改了笼吟,父類的那些屬性都是readonly的。

8.UNNotificationRequest.h 上面第3條說過了

9.UNNotificationResponse.h

有action霸旗,也有request贷帮,那也就有response,這里面有兩個屬性诱告,notification撵枢,actionIdentifier 響應(yīng)里就這倆破玩意。 然后有個子類UNTextInputNotificationResponse精居, 這里面就一個屬性userText 锄禽,看命名很好猜,應(yīng)該就是前面說的那個有輸入框里輸入的內(nèi)容靴姿。

10.UNNotificationSettings.h

這個類里就是一些設(shè)置了沃但,有一個枚舉說的是有沒有權(quán)限,一個枚舉說的是不支持空猜?禁用绽慈?啟用恨旱?辈毯。 然后下面一大波屬性,小紅點設(shè)置搜贤,聲音設(shè)置谆沃,彈窗設(shè)置等等 都是這個枚舉類型, 最后還有個alertStyle屬性(枚舉仪芒,None唁影?Banner?alert掂名?)据沈。

11.sound前面第7條說過了

12.UNNotificationTrigger.h

有一個屬性 repeats(是否重復(fù)發(fā)通知)。 下面有四個子類饺蔑,push通知觸發(fā)锌介, 時間通知觸發(fā),日歷通知觸發(fā),地區(qū)通知觸發(fā)孔祸, 時間的有timeInterval屬性隆敢, 日歷的有dateComponents屬性。 然后時間和日歷的子類都有nextTriggerDate 方法崔慧。

13.UNUserNotificationCenter.h

這里面東西多到吐了拂蝎,同學(xué)你記得NSNotificationCenter么? 需要提一點的就是以前的通知中心有個方法[NSNotificationCenter defaultCenter]惶室, 這里是[UNUserNotificationCenter currentNotificationCenter]温自, 提醒一下到時候別說敲不出來。 方法大多是一些remove拇涤,add捣作,get等操作, 還有2個代理方法:通知將要發(fā)出去時調(diào)用鹅士,收到通知的response后調(diào)用券躁。

14.UNNotificationServiceExtension.h

里面有兩個方法,收到通知的請求后調(diào)用掉盅, 系統(tǒng)將要銷毀時調(diào)用也拜。

通知里面有UI相關(guān)的類 #import <UserNotificationsUI/UserNotificationsUI.h>

這個類里面就一個文件, 而且方法比較單一趾痘,就是收到通知調(diào)用慢哈,和收到通知的響應(yīng)調(diào)用。 其他方法也就是mediaPlay 和 mediaPause 永票。和一些多媒體播放的按鈕frame卵贱,color等, 這里面的作用難道僅僅就是通知來了后播放的音樂暫時暫停下侣集,響一聲通知键俱,再播放? 具體WWDC2016上說的鎖屏頁面的通知樣式處理的api是在下面的部件增強章節(jié)中世分。

Integrating with the Messages App 與系統(tǒng)短信 app交互
對消息額支持很大编振,可以模擬發(fā)消息收消息,發(fā)郵件等臭埋,提供了UI界面踪央。 也提供了一些額外擴展的api,如表情包區(qū)域瓢阴。WWDC2016上說的各種消息內(nèi)的新操作在頭文件中都能找到Api畅蹂。

此功能的頭文件入口在#import <Messages/Messages.h>

1.MSMessagesAppViewController.h

這個類應(yīng)該就是蘋果自己的消息界面,你可以繼承他寫你自己自定義的界面荣恐。 屬性有:activeConversation 指的是當(dāng)前的會話對象液斜,是上面“2”這個類型,具體詳細(xì)可以看下面的第“2”點、還有個是presentationStyle(外觀樣式旗唁,枚舉類型畦浓,緊縮?擴張检疫?)讶请。 接下來就是方法了:requestPresentationStyle(請求消息過渡到指定的樣式),dismiss消除方法屎媳。 然后就是一波生命周期方法了夺溢,每一類都有will和did,會話信息將要(已經(jīng))活躍時烛谊,將要(已經(jīng))解除活躍风响,將要(已經(jīng))選擇信息,將要(已經(jīng))收到信息丹禀,將要(已經(jīng))開始發(fā)送状勤,將要(已經(jīng))取消發(fā)送,將要(已經(jīng))開始過渡双泪。

2.MSConversation.h

屬性有l(wèi)ocalParticipantIdentifier(當(dāng)前會話參與者生成的標(biāo)識持搜,他說只有刪了App才會變 姑且理解成id是不會變的),remoteParticipantIdentifiers(遠(yuǎn)端的標(biāo)識符數(shù)組)焙矛,selectedMessage(選中的信息)葫盼,以及4個對象方法 插入一條信息,插入一個標(biāo)簽村斟,插入一段文本贫导,插入一個附件。 這四個方法都有成功的回調(diào)蟆盹。

3.MSSession.h

這個類里面是空的孩灯,解釋說是用session來處理消息序列間的關(guān)系∪沼В可能就是占個位钱反,以后估計會添加?xùn)|西掖看。 這個MSSession是后面很多參數(shù)的類型匣距,應(yīng)該就是區(qū)分消息類似于標(biāo)識符的作用。

4.MSMessage.h

初始化方法是initWithSession 哎壳,沒錯就是上面那個MSSession毅待。 除了初始化方法剩下的就全是屬性了:session,senderParticipantIdentifier(發(fā)送者的標(biāo)識符)归榕,layout布局這個是“5”這個類型尸红,URL,shouldExpire(選yes會自動消失,用戶手動選擇為這條消息續(xù)命)外里,accessibilityLabel(殘疾人模式支持)怎爵,error。

5.MSMessageLayout.h

這個是抽象類盅蝗,里面是空的鳖链,就是個布局文件,繼承自NSObject墩莫。

6.MSMessageTemplateLayout.h

繼承上面那個類芙委,看名字是模板布局后面應(yīng)該會用的挺多的,里面的屬性有狂秦,標(biāo)題灌侣,子標(biāo)題,尾部標(biāo)題裂问,尾部子標(biāo)題侧啼,圖片,多媒體URL堪簿,圖片標(biāo)題慨菱,圖片子標(biāo)題。

7.MSSticker.h

應(yīng)該是消息上的表情包戴甩。 里面就有兩個屬性imageFileURL 符喝,localizedDescription 圖片和局部描述。然后是帶上這兩個屬性的初始化方法 initWithContentsOfFileURL: localizedDescription: 甜孤。

8.MSStickerView.h

這個類就是一個view协饲,里面包著一個sticker,也就是包裹著上面那個裝飾品的view缴川。 提供了帶上sticker的初始化方法茉稠,一個常規(guī)屬性animationDuration,和三個方法startAnimating把夸,stopAnimating而线,isAnimating。

9.MSStickerBrowserViewDataSource.h

細(xì)思極恐恋日,這個類不就是wwdc2016上說的那個可以在消息下面添加自定義表情的地方么膀篮。 符合datasource的風(fēng)格,里面就兩個方法岂膳,numberOfStickersInStickerBrowserView: (返回一個總數(shù))誓竿,stickerBrowserView:stickerAtIndex:(返回這個索引下的內(nèi)容)。

10.MSStickerBrowserView.h

上面那個是datasource谈截,那這個就是用了上面數(shù)據(jù)源的view唄筷屡。 除了初始化方法涧偷,有兩個屬性 stickerSize(枚舉,小毙死,中燎潮,大),dataSource(就是上面的“9”)扼倘,還有個人reloadData方法跟啤。

11.MSStickerBrowserViewController.h

上面是個view, 這個就是承載上面那個view的viewcontroller唉锌∮绶剩肯定得有這個屬性stickerBrowserView 和初始化方法。

這個message模塊還有UI相關(guān)的api #import <MessageUI/MessageUI.h>

就是兩個VC ,MFMailComposeViewController,MFMessageComposeViewController袄简。 這兩個都是繼承自UINavigationController. 覺得這兩個就是發(fā)郵件的編輯頁面腥放,和發(fā)消息的編輯頁面。 發(fā)郵件的頁面里有 canSendMail (Bool方法)绿语,set主題秃症,set發(fā)件人,set收件人吕粹,set內(nèi)容种柑,set附件。 然后有一個代理匹耕,和代理方法聚请,猜也能猜到 就是成功失敗回調(diào)。mailComposeController:didFinishWithResult: error: 稳其。 那另一個消息和這差不多了就不說了驶赏。

Speech Recognition 語音識別轉(zhuǎn)文字
這個類里面的Api和方法調(diào)用都非常清晰,感覺使用起來會非常方便既鞠。真的為科大訊飛捏把汗了煤傍,科大訊飛的app(錄音寶)我看過,都還沒有說一段語音能直接轉(zhuǎn)文字的功能嘱蛋,他們是直接把聲音文件上傳蚯姆,然后24小時候再發(fā)給你轉(zhuǎn)換后的結(jié)果...而且一上來就要收費。蘋果的這個功能已經(jīng)做到了系統(tǒng)原生支持洒敏,真的厲害龄恋。

此功能的頭文件入口在#import <Speech/Speech.h>

1.SFSpeechRecognitionResult.h

這個類里有三個屬性:bestTranscription 就是最優(yōu)的轉(zhuǎn)化結(jié)果咯,是上面的“7”這個類型的桐玻。然后再看下這個SFTranscription.h 篙挽,果然不出所料 有兩個屬性 一個是字符串類型formattedString 一個是數(shù)組類型的segments 荆萤,恩 前者就是轉(zhuǎn)化后的字符串镊靴,后者是分割后的一個個小結(jié)果集合铣卡。 然后這個分割的一個個小結(jié)果呢又是上面“6”這個類型。那再看一下“6” 里面的屬性就是 substring偏竟, 時間戳煮落,duration,準(zhǔn)確性踊谋,備選答案數(shù)組蝉仇,這些很清晰的東西了。

2.SFSpeechRecognitionRequest.h

這個類里東西有點多殖蚕,屬性taskHint轿衔,是上面“4”這個類型,點開一看就是一個枚舉睦疫,用來區(qū)分你這個語音識別的請求是哪一類的 查找害驹?確認(rèn)?聽寫蛤育?無法識別宛官?。 接下來是兩個BOOL類型的瓦糕,shouldReportPartialResults(是否語音局部的一塊一塊也要處理底洗?默認(rèn)選false就是一句話全說完了再上傳吧),detectMultipleUtterances(假如你說了10秒鐘咕娄,只有后5秒匹配到了結(jié)果亥揖,那你前面刪了還是保留?默認(rèn)不刪)圣勒,然后是分析到的關(guān)鍵字?jǐn)?shù)組徐块,和標(biāo)識符什么的。 然后這個request有兩個子類灾而,一個是從本地URL讀取 一個聲音文件去識別胡控, 一個是默認(rèn)做法用話筒和AVFoundation庫接收到聲音去識別,然后有幾個拼接聲音的API旁趟。

3.SFSpeechRecognitionTask.h

從名字就能看出來這是語音識別最重要的一個類了昼激,里面的屬性有:state這是一個枚舉,說明當(dāng)前狀態(tài)是進(jìn)行中锡搜?已完成橙困?被取消?等等耕餐。 接下來是三個常見的 isFinishing 凡傅,isCancelled ,error 肠缔。 接下來是 isPowerAvailable (是否開啟說話聲音大小的監(jiān)測夏跷?)哼转,peakPower(最大聲音),averagePower(平均聲音)槽华。 屬性就這些了壹蔓,接下來就是一個協(xié)議和一波代理方法:剛剛識別出話語調(diào)用,猜測話語時調(diào)用猫态,話說完了調(diào)用佣蓉,取消時調(diào)用,等等等亲雪,你能想到的回調(diào)方法蘋果應(yīng)該都有的勇凭。

4.上面第2條里面說過了

5.SFSpeechRecognizer.h

和系統(tǒng)的那些相機權(quán)限,通訊錄權(quán)限有點像义辕, 就是現(xiàn)在的狀態(tài)是什么套像?同意?拒絕终息?還是未選擇過夺巩? 然后提供了方法讓用戶去選擇。 然后有些屬性:NSSet類型的supportedLocales(支持地區(qū)方言的集合)周崭,

available是否可用柳譬,locale當(dāng)前地區(qū) ,defaultTaskHint默認(rèn)類別续镇,request(就是上面說的請求)美澳,隊列,代理摸航。 然后有個協(xié)議和代理方法:發(fā)現(xiàn)用戶給與的權(quán)限發(fā)生改變時調(diào)用制跟。

6和7. 上面第1條里說過了

Wide Color 寬域顏色
文檔的原話說:大多數(shù)的 core字打頭的圖形框架 還有AVFoundation 都大大提高了對擴展像素和寬色域色彩空間的支持。通過圖形堆棧擴展這種方式比以往支持廣色域的顯示設(shè)備更加容易〗椿ⅲ現(xiàn)在對UIKit擴展可以在sRGB的色彩空間下工作雨膨,性能更好,也可以在更廣泛的色域來搭配sRGB顏色读串。 然后說了幾個場景說建議你用sRGB吧聊记,比如依賴于UIkit的clamp component values的應(yīng)用程序,或是使用較低級別api執(zhí)行自己圖像處理的 都建議用sRGB吧恢暖。

然后看了下UIColor類里 到底什么是sRGB排监? 發(fā)現(xiàn)多了兩個iOS10新增的api。

1
2
3

  • (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é)都是一樣的就是一個類方法一個實例方法杰捂, 我理解下舆床,就是說建議你們以前改用colorwithRGB的地方 現(xiàn)在都換成這個方法叭。可能大多數(shù)公司都抽成了 RGB(a,g,b,a)這種宏吧挨队,那就在宏定義那改一下就好了谷暮。

Adapting to the True Tone Display 真彩色顯示
真彩色的顯示會根據(jù)光感應(yīng)器來進(jìn)行自動的調(diào)節(jié)來達(dá)到特定環(huán)境下的顯示與性能平衡效果。 如果需要這個功能的話需要再info.plist里配置

UIWhitePointAdaptivityStyle

共有五種選擇:

1.UIWhitePointAdaptivityStyleStandard 標(biāo)準(zhǔn)

2.UIWhitePointAdaptivityStyleReading 閱讀

3.UIWhitePointAdaptivityStylePhoto 圖片

4.UIWhitePointAdaptivityStyleVideo 視頻

5.UIWhitePointAdaptivityStyleGame 游戲

然后他說的很清楚瞒瘸,如果你是圖片處理類的app坷备,那就直接配stylePhoto吧熄浓,如果你是閱讀類的那就直接配styleReading吧情臭。 這五個形式的顯示效果從上往下遞減,我理解是說在閱讀時給你最好的效果赌蔑,但如果在游戲時也給那么好的效果會影響性能俯在,就給你一個相對次一點的顯示效果讓性能更流暢。

App Search Enhancements 應(yīng)用搜索增強
iOS10的搜索功能做了一定增強:應(yīng)用程序內(nèi)搜索娃惯,搜索傳遞跷乐,考慮私人差異,結(jié)果可視化趾浅。 使用CSSearchQuery類愕提,調(diào)用Core Spotlight的api,可以讓你不必自己維護自己的搜索索引皿哨,關(guān)于對搜索關(guān)鍵字的處理浅侨,還有考慮到不同類別差異導(dǎo)致搜索結(jié)果的排序都是蘋果幫你處理。

并且搜索結(jié)果可以繼續(xù)往下傳遞证膨,假設(shè)你用Core Spotlight搜索火車站如输,提示的是地圖類app搜索火車站的結(jié)果,你點進(jìn)去后央勒,這個地圖類app會接收到“火車站”這個字段在應(yīng)用內(nèi)也完成搜索不见。支持此功能也是需要配置plist文件:key-value CoreSpotlightContinuation-YES,然后設(shè)置CSQueryContinuationActionType(#import<CoreSpotlight/CSSearchableItem.h>)崔步。最后傳遞的搜索字符串用continueUserActivity:restorationHandler:方法接收稳吮。

然后現(xiàn)在看一下#import <CoreSpotlight/CSSearchQuery.h>頭文件里面的結(jié)構(gòu)。

看上去這個CSSearchQuery像是一個查詢語句操作井濒,有創(chuàng)建盖高,查詢成功和錯誤等。初始化方法是initWithQueryString: attributes:眼虱。 有isCanceled屬性 和 cancel 和 start方法喻奥。 還有foundItemCount屬性,看上去是能夠得到搜索的結(jié)果個數(shù)捏悬。protectionClasses(數(shù)組)撞蚕,看上去像是隱私相關(guān)受保護的文件。 還有兩個block过牙,一個是搜索結(jié)束后回調(diào)甥厦,參數(shù)是NSError纺铭;一個是查詢到結(jié)果時回調(diào),參數(shù)是items數(shù)組刀疙。這個items數(shù)組都是CSSearchableItem類型舶赔,這里面有個attributeSet屬性,里面可以傳入以下類型

Widget Enhancements 鎖屏部件增強
現(xiàn)在鎖屏界面有了新的設(shè)計谦秧,建議我們廢棄以前的notificationCenterVibrancyEffect 改用widgetPrimaryVibrancyEffect或者widgetSecondaryVibrancyEffect竟纳,并且窗口的小部件可以讓你描述有多少東西可用,支持緊湊和擴展兩種形態(tài)疚鲤。

這些新舊的Effect效果在這個類下锥累,可能是之前鎖屏玩不出什么花樣所以大家沒怎么關(guān)注這里。

import <NotificationCenter/NotificationCenter.h> 里面有三個頭文件

1.NCWidgetProviding.h

先來兩個方法

1

  • (void)widgetPerformUpdateWithCompletionHandler:(void (^)(NCUpdateResult result))completionHandler;
    這個方法如果實現(xiàn)了集歇,系統(tǒng)將在適當(dāng)?shù)臅r候召喚部件更新形態(tài)桶略,無論是在通知中心還是后臺。 需要啟用后臺更新功能诲宇,部件會在異步工作主線程更新际歼,調(diào)用參數(shù)塊的工作完成后會得到相應(yīng)的結(jié)果。

1

  • (void)widgetActiveDisplayModeDidChange:(NCWidgetDisplayMode)activeDisplayMode withMaximumSize:(CGSize)maxSize;
    這個方法應(yīng)該是部件變化時調(diào)用姑蓝,參數(shù)是最大有多大鹅心。

這里聲明了一個分類UIVibrancyEffect (NCWidgetAdditions),里面就是本章節(jié)說的iOS10新增API

1
2
3

  • (UIVibrancyEffect *)widgetPrimaryVibrancyEffect NS_AVAILABLE_IOS(10_0);

  • (UIVibrancyEffect *)widgetSecondaryVibrancyEffect NS_AVAILABLE_IOS(10_0);
    這兩個方法名字上是老大和老二它掂,有什么區(qū)別巴帮? 都是用在選擇的文字或圖形上,默認(rèn)用上面虐秋,如果開啟了further diminution(應(yīng)該是類似于上面壓縮模式)就用下面的榕茧。

下面又聲明了一個分類NSExtensionContext (NCWidgetAdditions),里面也是iOS10的新增API

里面有兩個屬性 widgetLargestAvailableDisplayMode 客给,widgetActiveDisplayMode 用押。 是兩種顯示模式是NCWidgetDisplayMode枚舉類型,有緊縮和擴張兩種靶剑。 蜻拨,估計假如是新聞通知一個是一般大小,一個是點開詳情的大小桩引。 然后就是一個方法widgetMaximumSizeForDisplayMode 缎讼,返回值是CGSize取到播放模式的最大尺寸。

2.NCWidgetController.h

里面除了個初始化方法坑匠,還有一個方法

1

  • (void)setHasContent:(BOOL)flag forWidgetWithBundleIdentifier:(NSString *)bundleID;
    第一個參數(shù)默認(rèn)為yes血崭,就是該展示時就展示,這個方法可以跨小組件間通訊,以及和providing app交互夹纫。

3.NCWidgetTypes.h

里面就一個枚舉類型NCWidgetDisplayMode 咽瓷,前面第1點說過了。

Security and Privacy Enhancements 安全和保密性增強
安全方面在iOS10中引入了更多修改和補充舰讹,具體有以下幾點:

1.在info.plist文件新增了一個key茅姜,NSAllowsArbitraryLoadsInWebContent,允許任意web頁面加載月匣,同時蘋果會用ATS保護你的app钻洒。

2.使用改進(jìn)后的SecKey API 而不是過時的 CDSA API。

3.安全傳輸API中不再支持SSLv3桶错, 建議你們盡快停用SHA1和3DES加密算法航唆。

4.剪貼板的擴展胀蛮,因為wwdc2016演示了可以跨設(shè)備復(fù)制粘貼啊院刁,那肯定要做一些限制可見(#import <UIKit/UIPasteboard.h>)

5.這點最重要的,建議盡快適配粪狼, 所有和用戶權(quán)限相關(guān)的地方必須在info.plist里配置里面包括

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
NSBluetoothPeripheralUsageDescription
NSCalendarsUsageDescription
NSCameraUsageDescription
NSContactsUsageDescription
NSHealthShareUsageDescription
NSHealthUpdateUsageDescription
NSHomeKitUsageDescription
NSLocationAlwaysUsageDescription
NSLocationWhenInUseUsageDescription
NSMicrophoneUsageDescription
NSMotionUsageDescription
NSPhotoLibraryUsageDescription
NSRemindersUsageDescription
NSSiriUsageDescription
NSSpeechRecognitionUsageDescription
NSVideoSubscriberAccountUsageDescription
NSVoIPUsageDescription
雖然現(xiàn)在還沒有iOS10系統(tǒng)的手機退腥,但是我用模擬器試了下,親測如果我想喚起通訊錄但是沒有配置NSContactsUsageDescription再榄,剛啟動時不會崩潰狡刘,但是在喚起操作發(fā)生時會直接崩潰。 在info.plist設(shè)置之后就可以正常使用了困鸥。

本文是用筆者認(rèn)為比較清晰的結(jié)構(gòu)整理的嗅蔬,希望讀者也能有所幫助。 當(dāng)然里面也有一些地方是我自己的猜測和理解疾就,不能保證100%正確澜术,有不同而理解歡迎一起討論。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末猬腰,一起剝皮案震驚了整個濱河市鸟废,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌姑荷,老刑警劉巖盒延,帶你破解...
    沈念sama閱讀 219,490評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異鼠冕,居然都是意外死亡添寺,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評論 3 395
  • 文/潘曉璐 我一進(jìn)店門懈费,熙熙樓的掌柜王于貴愁眉苦臉地迎上來计露,“玉大人,你說我怎么就攤上這事”』担” “怎么了趋厉?”我有些...
    開封第一講書人閱讀 165,830評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長胶坠。 經(jīng)常有香客問我君账,道長,這世上最難降的妖魔是什么沈善? 我笑而不...
    開封第一講書人閱讀 58,957評論 1 295
  • 正文 為了忘掉前任乡数,我火速辦了婚禮,結(jié)果婚禮上闻牡,老公的妹妹穿的比我還像新娘净赴。我一直安慰自己,他們只是感情好罩润,可當(dāng)我...
    茶點故事閱讀 67,974評論 6 393
  • 文/花漫 我一把揭開白布玖翅。 她就那樣靜靜地躺著,像睡著了一般割以。 火紅的嫁衣襯著肌膚如雪金度。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,754評論 1 307
  • 那天严沥,我揣著相機與錄音猜极,去河邊找鬼。 笑死消玄,一個胖子當(dāng)著我的面吹牛跟伏,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播翩瓜,決...
    沈念sama閱讀 40,464評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼受扳,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了奥溺?” 一聲冷哼從身側(cè)響起辞色,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎浮定,沒想到半個月后相满,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,847評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡桦卒,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,995評論 3 338
  • 正文 我和宋清朗相戀三年立美,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片方灾。...
    茶點故事閱讀 40,137評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡建蹄,死狀恐怖碌更,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情洞慎,我是刑警寧澤痛单,帶...
    沈念sama閱讀 35,819評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站劲腿,受9級特大地震影響旭绒,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜焦人,卻給世界環(huán)境...
    茶點故事閱讀 41,482評論 3 331
  • 文/蒙蒙 一挥吵、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧花椭,春花似錦忽匈、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,023評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至嗦锐,卻和暖如春嫌松,著一層夾襖步出監(jiān)牢的瞬間沪曙,已是汗流浹背奕污。 一陣腳步聲響...
    開封第一講書人閱讀 33,149評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留液走,地道東北人碳默。 一個月前我還...
    沈念sama閱讀 48,409評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像缘眶,于是被迫代替她去往敵國和親嘱根。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,086評論 2 355

推薦閱讀更多精彩內(nèi)容