WWDC2014 IOS8 APP Extensions
?
本文轉載至?http://blog.csdn.net/jinkaiouyang/article/details/35558623 ?感謝撰文作者的分享WWDC14 最令人興奮的除了新語言switf外,無疑就是整個APPLE平臺的開放了。說到開放,當然就是屬于Extension了。Extension實現了各個應用程序間功能和資源的共享。
?
下面我們來看看Extension具體有哪些
?
Today --?在?iOS?系統的“通知中心”里,支持第三方應用集成的“小工具、小部件”,比如?eBay?提供的價格查看小工具、日歷的通知等。
?
Share --?在?iOS?系統所有菜單中,支持第三方應用提供的“分享、共享”功能。
?
Photo Editing --?在?iOS?系統的“照片”應用中,支持使用第三方應用“圖片編輯”應用直接編輯。
?
Action --?在?iOS?系統的“Safari”瀏覽器里,支持第三方應用程序“插件”,比如微軟的?Bing?Translate。
?
Custom keyboard-?在?iOS?系統的“鍵盤”功能里,支持第三方“鍵盤輸入法”,比如?Swype。
?
?
下面我們來看看對于我們比較有價值的兩點
?
一、Today
Today – 即通知中心里面的今天那一欄。在Today里面展示的Extension又叫做Widgets:是小工具、小插件的意思。在這里我們能夠快速的獲取一些比較重要的信息。
?
下面看看實現的幾個小DEMO
?
1、安裝帶有Widgets的應用后,系統不會默認幫你打開,你需要在通知中心—今天一欄—拖到最下方—Edit ,你就會看到已經添加的Widgets和待添加的Widgets
?
?
2、將QQ空間添加進來(添加進來的還可以手動去移除,點擊左邊的按鍵就會出去remove按鈕)
?
?
3、按Done退出后,就可以看到添加的效果
(1)模擬讀取了空間最新的幾條動態展示。這樣用戶不用打開空間就可以在通知中心里面立刻看到最新的一些動態。
?
(2)這里模擬展現了一些新的通知信息,比如你有幾條新動態啦、xxx回復了你、新增訪客、新上架的cover等等信息。點擊其中的某一項,可以打開Qzone進入到具體的功能頁面。
?
?
?
二、?? Share
?
分享Eension。
?
1、系統相冊里面打開圖片,選擇分享,彈出的菜單中,能選擇分享到包含Shareextension的應用中。如下所示
?
?
?
2、點擊分享,就會在當前界面彈出如下分享輸入框,分享類型支持圖片(可自定義張數)、視頻、文字、鏈接等等。
通過這種操作,不需要打開其他APP跳轉,在當前界面即可快速實現分享操作。
?
?
?
三、??Photo Editing
?
Photo Editing跟Share類似。在圖片當前界面,即可調用第三方APP編輯圖片的能力,進行圖片編輯,編輯完成后,能夠立刻將結果返回給調用方。
?
選擇圖片,進行編輯,選擇左上角的按鍵,彈出選項框,在選項框里的第三方APP就提供了圖片編輯能力,點擊就可以在當前界面呼起第三方APP的圖片編輯界面進行圖片編輯。
???
上面都是一些體驗和產品特性上的介紹。下面我們來看看碼農們真正關心的,這些高大上的功能是如何實現的。
?
extension簡介
?
1、Extension是啥?
extension不是一個獨立的APP,他包含在我們的發布的APP安裝包中,是一個獨立的二進制文件,運行于獨立進程中,但是只能附屬某個APP。extension跟應用一起打包發布,不能夠單獨發布,不能單獨下載,也不能直接由用戶運行?。
2、Extension的生命周期
?
?
從上圖可以看出,Extension使用完會立刻被系統kill掉。所以Extension不能完成耗時的上傳下載等任務,那這些任務用什么來完成呢,請繼續往下看~~~~
?
3、Extension與Containing APP的關系
APP extension是一個單獨執行的二進制文件,APPextension 運行的時候 containing APP(包含extension 的APP),而且不一定處于運行中。
因此extension不會與containing APP直接調用,而extension與呼起他的host APP 是可以直接調用的。
?
APP extension通過Open URL的方式打開Containing APP。通過資源共享的方式獲取同一塊數據。如下圖所示:
?
?
4、代碼共享 --Sharing Code with Your Containing App
Extension 和Containing APP共享代碼的方式是通過embedded framework的方式進行共享。
NOTE
If your iOS applinks against an embedded framework, you must specify a minimum deploymenttarget of iOS 8.0. If your iOS extensions link against an embedded frameworkbut their containing app does not, you can use an earlier deployment target forthe app.
?
5、數據共享 --Sharing Data with Your Containing App
使用Xcode和portal創建App groups,并將extension和containing app加入到group中,即可實現共享數據。
?
6、與網頁交互 -- Accessing a Webpage
通過extension還可執行js跟網頁交互,更改網頁數據。
?
7、處理耗時任務 -- Performing a Long-Running Task
當extension需要執行耗時操作的時候,需要使用NSURLSession來實現后臺數據傳輸。因為后臺數據傳輸模式使用與extension不同的precess進行,及時extension被關閉了傳輸仍能夠繼續進行。
?
簡單的Today widgets構建
?
1、首先,我們得先建立一個APP工程,我們才能夠在該containing APP的基礎上添加我們的extensions。這個就不介紹了
?
2、添加extension target。 File->New->Target? 選擇ApplicationExtension一欄,如下圖
?
?
APPLE已經為我們提供好了所有extension的模板,里面已經包含好了所有基本的配置。
?
3、選擇TodayExtension 點擊next,命名后就完成了。
?
?
?
4、無需改一行代碼,運行,運行結果如下圖所示:
?
5、一個個Widgets就是一個個viewController,他所有的事件循環跟controller是一致的。我們可以在他基礎上添加各種button labelimageview甚至是tableview。但是因為他是在通知中心中,有很多的widget,為了避免影響體驗,tablveview最好是不要支持滾動的。
?
?
6、針對widget更新,新增了一條協議NCWidgetProviding
??
?
當通知中心中extension展示的時候會先回調這一個函數進行數據更新,數據更新完我們需要調用completionHandler通知界面更新。
每次更新完界面,通知中心都會截圖一張圖保存,目的是為了下次能夠更快的展示數據。
?
以上就是Today extension --- widget的簡單介紹,實現一個的demo很簡單,但是要跟我們APP聯動起來,要跟后臺實現協議數據的傳遞,還是比較麻煩,需要考慮如何復用現有代碼、需要考慮數據的共享、如何使用后臺模式獲取數據。
?
這里簡單介紹了蘋果的開放組件—extension和如何構建一個初步的demo。還有更多精彩的點需要進一步挖掘。
?
?
http://wangzz.github.io/blog/2014/06/23/wwdc2014zhi-app-extensionsxue-xi-bi-ji/
總結
以上是生活随笔為你收集整理的WWDC2014 IOS8 APP Extensions的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python点滴
- 下一篇: Word中使用代码高亮插件