V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
jpush
V2EX  ›  iPhone

在通知栏上玩游戏, Steve iOS 游戏实现思路

  •  
  •   jpush · 2017-02-14 10:40:11 +08:00 · 4790 次点击
    这是一个创建于 2636 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近有一款游戏特别的火爆,叫做 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

    5 条回复    2017-02-17 11:15:02 +08:00
    IgniteWhite
        1
    IgniteWhite  
       2017-02-16 20:20:32 +08:00
    厉害了,占一楼
    jpush
        2
    jpush  
    OP
       2017-02-17 10:12:07 +08:00
    @IgniteWhite 哈哈,你也厉害!
    murmur
        3
    murmur  
       2017-02-17 10:20:32 +08:00
    好劲爆 游戏换一下改成 flappy frog 就完美了
    jpush
        4
    jpush  
    OP
       2017-02-17 10:23:55 +08:00
    @murmur 哈哈哈 可以试一试!
    itqls
        5
    itqls  
       2017-02-17 11:15:02 +08:00
    ahhhh 正在搞搞试试
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2225 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 15:54 · PVG 23:54 · LAX 08:54 · JFK 11:54
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.