iOS10新特性及開發者注意事項

WWDC2106 iOS10新特性及開發者要注意什麼

         當晚看了WWDC2016直播,第二天我安裝了iOS10試用版,我們發現變得謹慎而開放的蘋果在新一版四大平臺系統中展示了很多變化,當然重中之重還是偉大的iOS。通過試用iOS10beta版,除了長大了的更強大的Siri主要感受到iMessage更加如微信般強大到除了一般的文字、圖片、表情、語音消息,還支持消息特效動畫、動態塗鴉消息、類似於發紅包轉賬的支付、推廣分享鏈接、媒體文件發送;還有改進的地圖導航,支持語音、支持嘀嘀打車等;自帶的一堆長期沒有存在感的軟件終於可以卸載了,多了個HomeKit應用;陌生來電識別功能;通知欄、通知提醒消息格式和上拉麪板設計風格由之前簡約半透明的轉變爲傻大白條,個人感覺變醜了!挺喜歡夜間模式的.

       接下來我們粗略解讀一下WWDC2016和官方文檔What's New in iOS10,我們來看看iOS 10 都給開發者帶來了什麼?

 1 SiriKit 在 iOS 10 裏面開發者可以使用 Siri SDK,這可能是 iOS 10 最重要的新 SDK之一。從此開發者可以使用原生API提供語音搜索、語音轉文字消息甚至更多常見語音功能。

2 Proactive Suggestions  貌似是一個和 CoreSpotlight 有整合的使用建議的東西,大概就是Siri建議那種根據使用習慣推薦吧。

3 Message App Extension   在 iOS 10 裏面開發者可以給 Message.app 提供兩種 App Extension,分別是可以提供一個表情包(沒錯,英文名就叫 Sticker Pack),和一個自定義的界面,用於表情搜索等,顯然這是一個讓表情 app 開發商們笑到哭的 API,我也做了幾個表情包發上去了。MessagesExtension

1240

4 User Notifications 這個 API 讓你可以處理本地或遠程的用戶通知,並且可以基於某個條件,例如時間或者地理位置。這個異常強大,好像可以在通知裏包含圖片和視頻了,貌似可以攔截並替換自己 app 發下來的 payload。

5 Speech Recognition  見聞知意,語音識別 API,可以把音頻流實時的轉換爲文本。雖說早期版本已經有了TTS語音轉文字,但畢竟Siri語義識別的加入讓機器對自然語義的把握更精準,詳見Speech.framework

6 App Search Enhancements 對 CoreSpotlight 的增強,其中我比較感興趣的是 Visualization of validation results。

7 Widget Enhancements 爲了配合 iOS 10 鎖屏下面 Widget 的體驗,蘋果提供了 widgetPrimaryVibrancyEffect 和 widgetSecondaryVibrancyEffect 用於定製化 Widget 的界面。

8 CallKit  非常重要的 API,繼2014年蘋果推出VoIP證書後,這次VoIP 接口的開放,以及一個全新的 App Extension,簡直是VOIP的福音,可見蘋果對VOIP的重視。callkit框架 VoIP應用程序集成與iPhone的用戶界面,給用戶一個很棒的體驗。用這個框架來讓用戶查看和接聽電話的鎖屏和VoIP管理聯繫人電話在手機APP的收藏夾和歷史記錄。callkit還介紹了應用程序的擴展,使呼叫阻塞和來電識別。您可以創建一個應用程序擴展,可以將一個電話號碼與一個名稱聯繫起來,或者告訴系統當一個號碼應該被阻止。“that enable call blocking and caller identification. You can create an app extension that can associate a phone number with a name or tell the system when a number should be blocked.” 大概是可以做電話黑名單功能了。按我的理解,也就是說你的網絡電話可以拓展到系統電話中,鎖屏時可以利用系統電話UI代爲接聽而不必解鎖打開你的native App,再通過拓展關係把來電信息回調給你的native App。換句話說,今後的VoIP應用可以像iPhone系統電話那樣享有很高的UI拓展權限,不同VoIP電話的通話記錄都可能在電話應用裏看到。

9 App Extensions  其實上面也有提到,iOS 10最重要的開發特點就是允許第三方應用對自帶基礎app的拓展關聯, 全新 7 種 App Extension:

Call Directory(VoIP回調)

Intents(接Siri、Apple map等服務)

Intents  UI(接Siri、Apple map等服務的自定義界面)

Messages(iMessage拓展)

Notification Content(內容通知)

Notification  Service (服務通知)

StickerPack(iMessage表情包)

10 Custom Keyboard 對第三方鍵盤的改進  非常非常重要,第三方鍵盤一直都不能很方便的擁有長按地球鍵的功能,現在有了。通過 handleInputModeListFromView:withEvent: 可以彈出系統鍵盤列表。同時使用 documentInputMode 可以檢測輸入上下文中的語言,你可以對輸入方式進行一些類似於對齊方式的調整。

另外需要注意的是,和以往歷代iOS版本推出一樣,新陳代謝,有新SDK、新API的開放,也會有舊的API被遺棄,所以好好檢查你的項目,使用了被遺棄的API要儘快修改,以免不兼容!還有個要注意的問題 iOS10 對隱私權限的管理更爲嚴格 ,比如訪問的攝像頭、麥克風等硬件,都需要提前請求應用權限、允許後纔可以使用,或者現在要提前聲明,雖然以往要求不嚴格。

在iOS10和Xcode8中遇到的其他問題:

1.iOS10 隱私權限問題 閃退 崩潰:

***This app has crashed because it attempted to access privacy-sensitive data without a usage description.  The app's Info.plist must contain an NSCameraUsageDescription key with a string value explaining to the user how the app uses this data.

1240

NSContactsUsageDescriptioncontactsDesciption

NSMicrophoneUsageDescriptionmicrophoneDesciption

NSPhotoLibraryUsageDescriptionphotoLibraryDesciption

其中這個string值可以隨意寫:(只要是在給用戶彈窗授權是描述使用目的的)

2.需要注意的是Xcode也是向前兼容的,在Xcode8上打開項目要小心,尤其是對於xib工程,在變動後可不要隨意點保存,否則當你回頭用Xcode7打開時時發現報錯了,Xcode8 更新保存的xib 配置文件在xcode7上有些是識別不了的!

3.在Xcode8、iOS10SDK上新建iOS工程你將看到Message Application和Sticker Pack Application,後者是爲iMessage表情包專門準備的,但是不需要代碼。

4.Xcode8上調試工程啥也沒幹就打印一堆爛七八糟的東西,我這處女座看着不爽,具體也沒細研究,目前的粗暴解決辦法是去edit scheme的RUN Debug下的Arguments 裏的環境變量(environment variables)下,添加設置Name:OS_ACTIVITY_MODE    --> Value: disable 

5.使用Xcode8的同學應該發現以往習慣command+/來快捷註釋代碼 的功能失效了!這個是因爲蘋果提升xcode安全,默認把一些權限關閉了,比如默認把插件屏蔽了。解決方法命令運行:  sudo /usr/libexec/xpccachectl  有些須重啓Mac或Xcode後生效

6.有部分同學反映說在iOS10下 tabbar不見了,不過我尚未沒有見過這這種情況,可能我從2014年後基本所有的項目都用了storyboard和xib吧。建議確認規範一下初始化代碼,或者在Xcode8下重構一下這部分代碼或者使用storyboard。 據我所知,iOS10下UITabBarController並無新變化,只是iOS10 UITabBarItem多了個badgeColor和BadgeTextAttributes屬性設置。

7.VoIP網絡電話應用要引起重視了,沒有使用VoIP推送的網絡電話應用後臺時iOS10 下已經明確警告:Legacy VoIP background mode is deprecated and no longer supported.趕緊使用PushKit吧,比傳統的APNS推送更能保證即時性和省電了。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章