iOS 10 新特性以及適配點 Xcode 8.0的特性

1.1 SiriKit

所有第三方應用都可以用Siri,支持音頻、視頻、消息發送接收、搜索照片、預訂行程、管理鍛煉等

1.2 Proactive Suggestions 系統預先建議

背景就是iOS9的時候系統給予的主動建議 通過:Spolight搜索,Safari搜索,Handoff,或者siri建議。 在iOS10之后新增了,鍵盤QuickType建議,地圖,車載娛樂,應用切換,siri交互,鎖屏播放。eg:你正在一個應用里看一個酒店,可以使用mapitem屬性保存正在查看的這個酒店的位置,然后你切換旅行或地圖App時這個位置可以自動提供使用。 如果你需要這樣利用系統來共享一個位置,那你需要指定這個位置的經緯度、地名、電話等屬性來便于siri的直接調起。

1.3 Message App Extension

在 iOS 10 里面開發者可以給 Message.app 提供兩種 App Extension,分別是可以提供一個表情包(沒錯,英文名就叫 Sticker Pack),和一個自定義的界面,用于表情搜索等

1.4 User Notifications 用戶通知

iOS 10 中以前雜亂的和通知相關的 API 都被統一了,現在開發者可以使用獨立的 UserNotifications.framework 來集中管理和使用 iOS 系統中通知的功能。 在 iOS 10 中,開發者的服務器有機會在本地或者遠程通知發送給用戶之前再進行修改。 在此基礎上,Apple 還增加了撤回單條通知,更新已展示通知,中途修改通知內容,在通知中展示圖片視頻,自定義通知 UI 等一系列新功能,非常強大。

1.5 Speech Recognition 語音識別

IOS 10 引入Speech.framework用來支持語音識別, 在app中可以識別語音并轉成文本, 語音來源可以是實時的也可以是錄音。

1.6 Wide Color 廣色域

包括Core Graphics,Core Image,Metal,AVFoundation在內的圖像框架極大的改善了對更加廣泛的像素格式和寬色域色彩空間的支持。

1.7 Adapting to the True Tone Display 真色調展示

真色調(True Tone)顯示使用環境光傳感器,可以做到配合當前環境的光線條件自動調節顯示的顏色和強度。如果你的應用是閱讀類,和環境中的白點保持一致對用戶來說就是有益的。

1.8 App Search Enhancements 應用搜索增強功能

新的CSSearchQuery類支持搜索那些你用Core Spotlight API指出的應用內內容。 使用這些API可以淘汰你應用中單獨的搜索索引,以及更好的利用Spotlight強大的搜索技術,同時,匹配規則允許用戶在不離開你應用的條件下搜索內容,就像他們在Mail,Messages和Notes中體驗到的一樣。

1.9 Widget Enhancements widget增強功能

iOS10引入了一個新的鎖屏設計,新的鎖屏現在會顯示各種widget。

1.10 Apple Pay Enhancements

在iOS10中,用戶可以從網頁上,或通過Siri和地圖的互動來使用Apple Pay進行簡單和安全的支付。 對于開發者來說,iOS10引入了可以同時在iOS和watchOS上使用的新API,支持動態支付網絡的能力,和新的沙盒測試環境。

1.11 Security and Privacy Enhancements

iOS10引入幾個變化來幫助您提高代碼的安全和維護用戶數據的隱私性。 想了解更多,請查閱https://developer.apple.com/security/。

1.12 CallKit 來電攔截相關

CallKit框架(CallKit.framework)使得VoIP應用能與iPhone UI整合到一起,從而給用戶帶來更好的體驗。 使用這個框架來讓用戶在鎖屏頁面查看和接聽打來的VoIP電話,并在Phone應用的個人收藏和最近通話視圖中管理來自VoIP通話的聯系人。 CallKit框架同樣也引入了應用擴展(app extensions),這個擴展可以進行呼叫攔截和來電識別。你可以創建一個應用擴展來將電話號碼和名稱關聯起來,或是告訴系統什么樣的號碼需要被攔截。

1.13 News Publisher Enhancements

News Publisher使用Apple News Format來讓發表設計精美的新聞、雜志、網頁內容到Apple News變的簡單。 從各大雜志或新聞機構這種獨立出版商,到個人博客,任何人都可以注冊。

1.14 Video Subscriber Account

iOS10引入了Video Subscriber Account框架(VideoSubscriberAccount.framework)來幫助應用支持流媒體認證或認證視頻點播(也被稱為TV Everywhere)與他們的有線電視或衛星電視供應商認證。 對于那些用戶注冊一次就能解鎖流媒體訂閱服務的應用來說,使用這個框架中的API可以幫助你支持單一登錄體驗。

5. 需要關注的地方

1. UITabBarController 中的改進

在iOS 10之前,tabBarItem上的文字顏色,默認是藍色,上面的新消息提醒數字badge 默認是紅色的,未選中的TabBarItem的文字顏色默認是黑色的,我們修改的話,也只能修改它的默認顏色 ,其它的就不能進行個性化定制,使用起來非常的不方便,iOS10之后我們可以輕松個性化定制了。

2. iOS10.0中字體跟隨系統設置變化大小

在以前如果說我們想改變APP中程序的字體大小,我們只能自定義字體或者使用runtime進行處理,或者都得設置UIFont,非常的不方便,從iOS 10蘋果官方允許我們自定義設置 代碼:self.labels.adjustsFontForContentSizeCategory = YES;

3. UIViewPropertyAnimator屬性動畫器

那么在iOS 10之前,我們使用UIView 做動畫效果或者自定義一些layer 的動畫,如果開始了,一般無法進行停止操作更不能暫停操作,而且一些非常復雜的動畫處理也比較麻煩,但是在iOS10,蘋果推出了一個全新的APIUIViewPropertyAnimator,可供我們處理動畫操作

4. UIColor 新增方法

在iOS10之前,UIColor中設置顏色只能通過RGB 來表示,在iOS原生還不支持#16進制寫法,還得自己寫分類去處理,我們知道RGB表示的顏色是優先的,而且也是不精準的,那么在iOS10中,蘋果官方新增了colorWithDisplayP3Red方法

5. UIApplication對象中openUrl被廢棄

在iOS 10.0以前的年代,我們要想使用應用程序去打開一個網頁或者進行跳轉,直接使用[[UIApplication sharedApplication] openURL 方法就可以了,但是在iOS 10 已經被廢棄了,因為使用這種方式,處理的結果我們不能攔截到也不能獲取到,對于開發是非常不利的,在iOS 10全新的推出了[UIApplication sharedApplication] openURL:nil options:nil completionHandler:^(BOOL success);有一個成功的回調block 可以進行監視。

6. CoreData提升了并發訪問性能

7. 刷新控件(UIRefresh Control)

iOS系統自帶的刷新控件支持所有的 UIScrollView 以及其子類,比如說 UICollectionView,UITableView。

8. GCD多線程支持創建私有隊列

9. iOS10 對隱私權限的管理

比如訪問的攝像頭、麥克風等硬件,都需要提前請求應用權限、允許后才可以使用,或者現在要提前聲明,雖然以往要求不嚴格。比如在iOS10中訪問通訊錄時,強制必須在Info.plist中加入NSContactsUsageDescription等描述,否則應用會崩潰。 崩潰日志:*This app has crashed because it attempted to access privacy-sensitive data without a usage description. The app's Info.plist must contain an NSCameraUsageDescriptionkey with a string value explaining to the user how the app uses this data.

10. 證書簽名

在Xcode 8中,代碼簽名錯誤的情況應該不會存在了。 在每一個targe中,你都可以在框中打勾來告訴Xcode讓它來代表你管理代碼簽名。 對于新項目這個選項默認是打開的。 打勾以后,Xcode為你管理certificates, provisioning profiles和 application identifiers。

11. Xib兼容問題

Xcode8上打開項目要小心,尤其是對于xib過程,在變動后可不要隨意點保存,否則當你回頭用Xcode7打開時時發現報錯了,Xcode保存的xib在xcode7上是識別不了的, 如果你在Xcode8中打開或者xib文件,會彈出如下提示框, 忽視他

12. 運行時問題 Runtime Issues

這Xcode新特性,自動識別跟蹤找到漏洞并且報告問題, 有些很難跟蹤的bug,直到您的應用程序到了用戶手中,也可能沒有被發現。 Thread Sanitizer spots:新的線程污點清理器, 解決多線程情況下的資源競爭條件,數據的變化和其它相關線程的 bug View Debugger:使用更新的帶有更大的保真度和視覺精度檢查UI約束問題的視圖調試器 Memory Debugger:可以用新的內存調試跟蹤器跟蹤發出的內存泄漏警報。

6. iOS 10 兼容適配點

1. iOS 10 對隱私權限的管理必須要改否則會crash

比如訪問的攝像頭、麥克風等硬件,都需要提前請求應用權限、允許后才可以使用,或者現在要提前聲明,雖然以往要求不嚴格。比如在iOS10中訪問通訊錄時,強制必須在Info.plist中加入NSContactsUsageDescription等描述,否則應用會崩潰。崩潰日志:***Thisapp has crashed because it attempted to access privacy-sensitivedatawithout a usage description.Theapp'sInfo.plist must contain anNSCameraUsageDescriptionkeywith a string value explaining to the user how the app uses thisdata.PhotoLibraryNSPhotoLibraryUsageDescriptionCameraNSCameraUsageDescriptionMicrophoneNSMicrophoneUsageDescriptionLocationNSLocationUsageDescriptionLocationWhenInUseNSLocationWhenInUseUsageDescriptionLocationAlwaysNSLocationAlwaysUsageDescriptionCalendarsNSCalendarsUsageDescriptionRemindersNSRemindersUsageDescriptionMotionNSMotionUsageDescriptionHealthUpdateNSHealthUpdateUsageDescriptionHealthShareNSHealthShareUsageDescriptionBluetoothPeripheralNSBluetoothPeripheralUsageDescription

2. Xib兼容問題

Xcode8上打開項目要小心,尤其是對于xib過程,在變動后可不要隨意點保存,否則當你回頭用Xcode7打開時時發現報錯了,Xcode8保存的xib在xcode7上是識別不了的, 如果你在Xcode8中打開或者xib文件,會彈出如下提示框, 忽視他

3. UIApplication對象中openUrl被廢棄不改也可以用

在iOS 10.0以前的年代,我們要想使用應用程序去打開一個網頁或者進行跳轉,直接使用[[UIApplication sharedApplication] openURL方法就可以了,但是在iOS 10 已經被廢棄了,因為使用這種方式,處理的結果我們不能攔截到也不能獲取到,對于開發是非常不利的,在iOS 10全新的推出了[UIApplication sharedApplication] openURL:nil options:nil completionHandler:^(BOOL success);有一個成功的回調block 可以進行監視。

4. 安全和保密性已聯系蓋瑞給安全團隊檢查

使用改進后的SecKey API 而不是過時的 CDSA API。 安全傳輸API中不再支持SSLv3, 建議你們盡快停用SHA1和3DES加密算法。

5. widget鎖屏界面

現在鎖屏界面有了新的設計,建議我們廢棄以前的notificationCenterVibrancyEffect 改用widgetPrimaryVibrancyEffect或者widgetSecondaryVibrancyEffect,并且窗口的小部件可以讓你描述有多少東西可用,支持緊湊和擴展兩種形態。

6. AVFoundation不改也可以用

AVCaptureStillImageOutput廢棄了, 用AVCapturePhotoOutput替換.

7. IOS版本檢查

下面的寫法會返回NO#defineIsIOS7 ([[[[UIDevice currentDevice] systemVersion] substringToIndex:1] intValue]>=7)因為substringToIndex:1inSDK'iOS 10.0'(Xcode8) means SDK'iOS 1.0'

8. 廢棄的API(不改也可以用)

CloudKit中廢棄的

CKDiscoverAllContactsOperation CKDiscoveredUserInfo CKDiscoverUserInfosOperation CKFetchRecordChangesOperation

CKSubscription中廢棄的

initWithRecordType:predicate:options: initWithRecordType:predicate:subscriptionID:options: initWithZoneID:options: initWithZoneID:subscriptionID:options: zoneID recordType predicate subscriptionOptions CKSubscriptionOptions initWithCoder:

NSPersistentStoreCoordinator中廢棄的

removeUbiquitousContentAndPersistentStoreAtURL:options:error: lock tryLock unlock metadataForPersistentStoreWithURL:error: setMetadata:forPersistentStoreOfType:URL:error: metadataForPersistentStoreOfType:URL:error: NSPersistentStoreUbiquitousTransitionType NSPersistentStoreDidImportUbiquitousContentChangesNotification setStoresFastSyncDetailsAtURL:forPersistentStore: syncWithClient:inBackground:handler:error:

UIViewController中廢棄的

ADBannerView ADInterstitialAd

SKUniform中廢棄的

uniformWithName:floatVector2: uniformWithName:floatVector3: uniformWithName:floatVector4: uniformWithName:floatMatrix2: uniformWithName:floatMatrix3: uniformWithName:floatMatrix4: initWithName:floatVector2: initWithName:floatVector3: initWithName:floatVector4: initWithName:floatMatrix2: initWithName:floatMatrix3: initWithName:floatMatrix4: floatVector2Value floatVector3Value floatVector4Value floatMatrix2Value floatMatrix3Value floatMatrix4Value

UIKit中廢棄的

UILocalNotification UIMutableUserNotificationAction UIMutableUserNotificationCategory UIUserNotificationAction UIUserNotificationCategory UIUserNotificationSettings

WatchKit中廢棄的

handleActionWithIdentifier:forLocalNotification: handleActionWithIdentifier:forRemoteNotification: didReceiveLocalNotification:withCompletion: didReceiveRemoteNotification:withCompletion: WKExtensionDelegate didReceiveRemoteNotification: handleActionWithIdentifier:forRemoteNotification:

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,428評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,024評論 3 413
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 175,285評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,548評論 1 307
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,328評論 6 404
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,878評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 42,971評論 3 439
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,098評論 0 286
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,616評論 1 331
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,554評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,725評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,243評論 5 355
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 43,971評論 3 345
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,361評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,613評論 1 280
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,339評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,695評論 2 370

推薦閱讀更多精彩內容

  • iOS 10新特性以及適配點 SiriKit 所有第三方應用都可以用Siri,支持音頻、視頻、消息發送接收、搜索照...
    越過三閱讀 6,201評論 11 67
  • iOS 10 開發這次更新主要表現在以下這幾個方面。 1.語音識別蘋果官方在文檔中新增了API Speech,那么...
    橫爬介士閱讀 2,541評論 2 12
  • 1.1 SiriKit 所有第三方應用都可以用Siri,支持音頻、視頻、消息發送接收、搜索照片、預訂行程、管理鍛煉...
    YANG1220閱讀 752評論 1 2
  • 因為要結局swift3.0中引用snapKit的問題,看到一篇介紹Xcode8,swift3變化的文章,覺得很詳細...
    uniapp閱讀 4,442評論 0 12
  • 抬頭望望天,或許我會發現不一樣的世界 那是什么?我想要! 夢中的世界,似乎很美 我是小一休,思考著我什么時候能長大...
    帥氣柯南閱讀 128評論 0 0