在通知欄上玩游戲,Steve iOS 游戲?qū)崿F(xiàn)思路

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


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

flappybirdNC.gif

extension 支持以下幾種


  • Action 擴(kuò)展 - 點(diǎn)擊 Action 按鈕后通過判斷上下文來將內(nèi)容發(fā)送到應(yīng)用
  • Today 擴(kuò)展 - 通知中心的 "Today" 的面板中添加一個 widget
  • Share 擴(kuò)展 - 點(diǎn)擊分享按鈕后將網(wǎng)站或者照片通過應(yīng)用分享
  • Photoshop edit 擴(kuò)展 - 編輯系統(tǒng)照片的擴(kuò)展
  • Document 擴(kuò)展 - 提供和管理文件內(nèi)容
  • Custom Keyboard - 替代系統(tǒng)鍵盤的擴(kuò)展自定義鍵盤或輸入法

我們需要 創(chuàng)建Today extension,,today extension 就是在下拉通知欄下面添加應(yīng)用擴(kuò)展。如下圖所示。


1. 新建工程

創(chuàng)建工程。

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

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

如果需要擴(kuò)展和主應(yīng)用進(jìn)行數(shù)據(jù)的交互,我們需要創(chuàng)建一個共享的數(shù)據(jù)區(qū)域,我們在Capabilities 勾選 App groups 功能,并且創(chuàng)建一個app group(注意這個操作需要在主Target 和 extension Target 都需要構(gòu)想,并且使用同一個app group), 這樣就可以進(jìn)行數(shù)據(jù)的交互了,具體操作如下所示


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

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

然后我們需要把 MainInterface.storyboard的rootViewController類改為,F(xiàn)lappySwift 工程的rootViewController(也就是 GameviewController 這個類), 還有一點(diǎn)需要注意,要把ViewController.view 屬性設(shè)置為 SKView 如下圖所示


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

flappybirdNC.gif

參考資料

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容