V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
iOS 开发实用技术导航
NSHipster 中文版
http://nshipster.cn/
cocos2d 开源 2D 游戏引擎
http://www.cocos2d-iphone.org/
CocoaPods
http://cocoapods.org/
Google Analytics for Mobile 统计解决方案
http://code.google.com/mobile/analytics/
WWDC
https://developer.apple.com/wwdc/
Design Guides and Resources
https://developer.apple.com/design/
Transcripts of WWDC sessions
http://asciiwwdc.com
Cocoa with Love
http://cocoawithlove.com/
Cocoa Dev Central
http://cocoadevcentral.com/
NSHipster
http://nshipster.com/
Style Guides
Google Objective-C Style Guide
NYTimes Objective-C Style Guide
Useful Tools and Services
Charles Web Debugging Proxy
Smore
austinchou0126
V2EX  ›  iDev

App 在 Inactive 时收到 Remote Notification 后点击打开,如何设置进入 App 显示的某个特定的 View Controller

  •  
  •   austinchou0126 · 2014-12-13 00:41:23 +08:00 · 2881 次点击
    这是一个创建于 3667 天前的主题,其中的信息可能已经有所发展或是发生改变。
    目前在做App推送相关的部分,遇到了一个问题。我的App是通过Storyboard创建的。
    目前整个App的View Controllers结构如下

    TabBarController -> Navigation Controller * 3 -> View Controller * 3

    TabBar和Navigation Controller都是从Xcode里创建的,先Embedded in 三个NC,然后再将三个NC加入TabBar。

    现在我想做的是,收到App推送后进入第二个View Controller,这样的用户体验比较好。查了网上各种方法,但是无论怎么搞,都是只能进入第一个View Controller,或者进入第二个View Controller后不显示Tab Bar。

    PS: 我这部分代码是在AppDelegate.m中的。
    11 条回复    2014-12-15 17:57:57 +08:00
    austinchou0126
        1
    austinchou0126  
    OP
       2014-12-13 00:45:41 +08:00
    austinchou0126
        2
    austinchou0126  
    OP
       2014-12-13 00:47:48 +08:00
    @PrideChung
    两位巨巨求帮助~
    txx
        3
    txx  
       2014-12-13 00:48:31 +08:00
    本来想留句话的...然后发现点名了..那我就怕怕屁股走人了.....
    austinchou0126
        4
    austinchou0126  
    OP
       2014-12-13 00:55:28 +08:00 via iPhone
    @txx 我就是随手一点,请不要在意!
    l12ab
        5
    l12ab  
       2014-12-14 01:31:04 +08:00
    应该是在发送推送的时候附带个附加参数,然后根据参数不同进行跳转,至于如何跳转,push、modal等等方式.....
    Elethom
        6
    Elethom  
       2014-12-14 11:05:40 +08:00 via iPhone   ❤️ 1
    https://github.com/Elethom/PRRouter

    其實你翻翻我 GitHub 就能找到解決方案. 只是沒做 social marketing 才沒什麼 stars, 其實很好用, 都是在前人的基礎上搭建但比他們做得更好的東西.
    PrideChung
        7
    PrideChung  
       2014-12-14 17:18:16 +08:00   ❤️ 1
    你只能自己一步步找路进去你想要到达的ViewController,用 performSegueWithIdentifier: 来触发你storyboard里面的segue。或者你可以学一些新闻客户端那样,在window的rootViewController上面直接present一个ViewController
    austinchou0126
        8
    austinchou0126  
    OP
       2014-12-14 19:19:24 +08:00
    @PrideChung 我尝试过在applicationDidFinishWithLaunchOptions里判断是否从Remote Notification进入,然后初始化TabBarController,再初始化TabBar的三个NC,NC里设置rootVC为VC,然后使用setSelected:1来进入,但是发现进入后TabBarItems只有一个,然后还加载不出来VC的内容。
    austinchou0126
        9
    austinchou0126  
    OP
       2014-12-14 19:20:02 +08:00
    @PrideChung 由于第二个VC里面是一个TableView,所以Model的话感觉怪怪的。
    PrideChung
        10
    PrideChung  
       2014-12-14 20:34:56 +08:00
    @austinchou0126 无论应用是否从推送进入的,你设置各个ViewController的层级的步骤都是一样的,关键是看怎么把参数传进去罢了。
    rannie
        11
    rannie  
       2014-12-15 17:57:57 +08:00
    你的tabVC里面有三个VC的话对应你应用内的三个Module,Module类会有支持的supportedURLSchemas, 你在接收到remote Note的时候看它的协议,然后让程序管理Module的manager去找三个module哪个接收这个协议,然后select这个module对应的tab item,进入后再处理具体参数。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1080 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 22:54 · PVG 06:54 · LAX 14:54 · JFK 17:54
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.