在通知栏上玩游戏,Steve iOS 游戏实现思路
最近有一款游戏特别的火爆,叫做Steve ,一种可以在通知中心直接玩的游戏。作者的脑洞也是非常的大,实在让人佩服。其实实现起来也简单,就是用到了iOS8新特性 app extension(Today extension),我们先来看看Steve 这图的效果。

我打算把一个曾经很火爆的开源游戏移植成控制中心的游戏。没错就是它FlappyBird 传送门
首先我们来看以下效果。

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 连接
参考资料
notification today widget 参考文章 喵神这一篇文章更加详细的介绍了 Notification today widget
作者: HuminiOS-极光
在通知栏上玩游戏,Steve iOS 游戏实现思路的更多相关文章
- 好玩的-记最近玩的几个经典ipad ios游戏
最近回了趟家,在家里闲着没事去app store找了找一些高分游戏玩一玩,下面就是我最近玩的游戏. 海岛奇兵 想必大家都很了解,这是由开发过clash of clan部落冲突的公司所开发的另一款多人策 ...
- 【用PS3手柄在安卓设备上玩游戏系列】连接手柄和设备
背景 硬件要求1:PS3 手柄 + 手柄配套的USB线 硬件要求2:已经获得 ROOT 权限并且支持蓝牙的安卓设备 软件要求1:Sixaxis Compatibility Checker PS3 手柄 ...
- ios源码-ios游戏源码-ios源码下载
游戏源码 一款休闲类的音乐小游戏源码 该源码实现了一款休闲类的音乐小游戏源码,该游戏的源码很简单,而且游戏的玩法也很容易学会,只要我们点击视图中的grid,就可以 人气:2943运行环境:/Xco ...
- 使用UIKit制作卡牌游戏(一)ios游戏篇
转自朋友Tommy 的翻译,自己只翻译了第三篇教程. 译者: Tommy | 原文作者: Matthijs Hollemans写于2012/06/29 原文地址: http://www.raywend ...
- Unity3D游戏开发从零单排(四) - 制作一个iOS游戏
提要 此篇是一个国外教程的翻译,尽管有点老,可是适合新手入门. 自己去写代码.debug,布置场景,能够收获到非常多.游戏邦上已经有前面两部分的译文,这里翻译的是游戏的最后一个部分. 欢迎回来 在第一 ...
- Swift版iOS游戏框架Sprite Kit基础教程下册
Swift版iOS游戏框架Sprite Kit基础教程下册 试读下载地址:http://pan.baidu.com/s/1qWBdV0C 介绍:本教程是国内唯一的Swift版的Spritekit教程. ...
- 开发者经验谈:如何一天时间搞定iOS游戏开发?
开发者经验谈:如何一天时间搞定iOS游戏开发? 在一天时间里将完成iPhone游戏开发由梦想变为现实? 本文作者给出了从创意转变成现实的详细答案.使用苹果原生游戏引擎SpriteKit,遵循一定的原则 ...
- [转]iOS游戏如何防御外挂及IAP破解
http://www.j1f3.com/news/game/21371.html 今年3月初写过一篇<iO平台游戏安全小议>,到现今已有7个月了.在这段时间内,iOS平台上的安全问题也产生 ...
- 商业模拟游戏:<柠檬汁杰克>ios游戏源码
首先柠檬汁杰克是我个人的首个cocos2d-x开发的游戏,本人虽然混迹编程十几年从未开发过游戏,这是首例. 我选这个游戏因为逻辑比较简单,也是一款苹果上的经典游戏.开发中我用到了CocoStudio, ...
随机推荐
- JAVA中List的三个子类。
JAVA中List的三个子类分别是:ArrayList,Vector,LinkList.下面就来比较一下他们的不同. ArrayList:底层数据结构是数组,查询快,增删慢,线程不安全,效率高. Ve ...
- style多次设置行内样式
语法 style="font-size:32px;background-color:#aaa"
- 191. Number of 1 Bits 二进制中1的个数
[抄题]: Write a function that takes an unsigned integer and returns the number of ’1' bits it has (als ...
- #error用法
#error命令是C/C++语言的预处理命令之一,当预处理器预处理到#error命令时将停止编译并输出用户自定义的错误消息. 语法: #error [用户自定义的错误消息] 注:上述语法成份中的方括号 ...
- SQL基础问题(一)
1.sql是什么? 结构化查询语言(Structured Query Language). 2.结构化查询语言的分类? 数据定义语言(DDL)Data Definition Language 操作 ...
- python 类变量 在多线程下的共享与释放问题-乾颐堂
最近被多线程给坑了下,没意识到类变量在多线程下是共享的,还有一个就是没意识到 内存释放问题,导致越累越大 1.python 类变量 在多线程情况 下的 是共享的 2.python 类变量 在多线程情况 ...
- 注意for循环中变量的作用域-乾颐堂
1 2 for e in collections: pass 在for 循环里, 最后一个对象e一直存在在上下文中.就是在循环外面,接下来对e的引用仍然有效. 这里有个问题容易被忽略,如果在循 ...
- 实践作业4:Web测试----细化分工DAY1.
会议时间:2017年12月23日 会议地点:东九教学楼教师休息室 主持人:吴辉 参会人员:吴辉.刘思佳.郜昌磊.王俊杰.吴慧杰 记录人:刘思佳 会议议题:本次作业的分工以及初期安排 工具选择 软件测试 ...
- SpringMVC源码解读 - RequestMapping注解实现解读 - RequestMappingInfo
使用@RequestMapping注解时,配置的信息最后都设置到了RequestMappingInfo中. RequestMappingInfo封装了PatternsRequestCondition, ...
- python 函数星号参数说明
转自: python 函数参数的传递(参数带星号的说明) python中函数参数的传递是通过赋值来传递的.函数参数的使用又有俩个方面值得注意:1.函数参数是如何定义的 2.在调用函数的过程中参数是如何 ...