標籤:blog http io os 使用 ar for strong 檔案
本文轉載至 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 系統的“鍵盤”功能裡,支援第三方“鍵盤IME”,比如 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