在通知欄上玩遊戲,Steve iOS 遊戲實現思路 頂 原 薦

最近有一款遊戲特別的火爆,叫做 Steve ,一種可以在通知中心直接玩的遊戲。作者的腦洞也是非常的大,實在讓人佩服。其實實現起來也簡單,就是用到了 iOS8 新特性 app extension(Today extension),我們先來看看 Steve 這圖的效果:

我打算把一個曾經很火爆的開源遊戲移植成控制中心的遊戲。沒錯就是它 FlappyBird 傳送門
首先我們來看以下效果。

flappybirdNC.gif

extension 支持以下幾種

  • Action 擴展 - 點擊 Action 按鈕後通過判斷上下文來將內容發送到應用
  • Today 擴展 - 通知中心的 "Today" 的面板中添加一個 widget
  • Share 擴展 - 點擊分享按鈕後將網站或者照片通過應用分享
  • Photoshop edit 擴展 - 編輯系統照片的擴展
  • Document 擴展 - 提供和管理文件內容
  • Custom Keyboard - 替代系統鍵盤的擴展自定義鍵盤或輸入法

我們需要創建 Today extension,today extension 就是在下拉通知欄下面添加應用擴展。如下圖所示。

1. 新建工程

創建工程。

2. 新建一個Today Extension targets ,如下圖所示

可以看到工程中多了擴展項目,擴展項目下有一個 MainInterface.storyboard,這個 .storyboard 的就是要展示在 Today 通知中心的內容(突然感覺整個世界都清晰了,直接在這個 ViewController 放內容就行了嘛)。擴展項目編譯後,會生成一個 .appex 後綴的包文件,這個是獨立於主工程的擴展應用。可以理解爲兩個應用,因爲沙盒機制數據不能交互。

如果需要擴展和主應用進行數據的交互,我們需要創建一個共享的數據區域,我們在 Capabilities 勾選 App groups 功能,並且創建一個 app group(注意這個操作需要在主 Target 和 extension Target 都需要構想,並且使用同一個 app group), 這樣就可以進行數據的交互了,具體操作如下所示

//設置共享的數據 在主 target裏面
    let shareUserdefault  = NSUserDefaults(suiteName:"group.comtomNC") // name 填寫 剛剛創建 App Group
    shareUserdefault?.setObject("pass this value to extension", forKey: "shareValue")
// 在extension target裏面獲取 數據
    let shareUserdefault  = NSUserDefaults(suiteName:"group.comtomNC") // name 填寫 剛剛創建 App Group
  shareUserdefault?.objectForKey("shareValue")  //獲得這個數據

然後我們下載 一個開源的 FlappyBird,把必要的工程文件和資源拷入到 擴展工程中。

然後我們需要把 MainInterface.storyboard的rootViewController類改爲,FlappySwift 工程的rootViewController(也就是 GameviewController 這個類),還有一點需要注意,要把ViewController.view 屬性設置爲 SKView 如下圖所示

然後我們來編譯運行,擼起,直接上效果圖(可以看到技術還是可以的。注意在真機上運行的時候 會出現內存不足的問題,跑不起來,現在只能在模擬器運行,具體 today extension 支持最大內存多少我沒具體測過,以後有機會再補充吧) 大家可以點擊這裏獲得 DEMO 連接

flappybirdNC.gif

參考資料

notification today widget 參考文章 喵神這一篇文章更加詳細的介紹了 Notification today widget

作者:HuminiOS-極光

原文:http://www.jianshu.com/p/fd739e972e20

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