• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

objective-c - 从推送通知推送 View

[复制链接]
菜鸟教程小白 发表于 2022-12-13 13:26:49 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我成功收到了 iOS 5 的通知。我希望能够在用户滑动或点击通知中心的推送通知时将他们发送到特定 View 。

我希望用户去的 View Controller ( View )与我的应用程序的开始相反是“groceryStoreViewController”。我已经读到这是在 didFinishLaunchingWithOptions 或 didReceiveRemoteNotification 中完成的,但我不确定。

如果有人知道如何做到这一点,我将不胜感激,因为这确实是一场斗争。

谢谢

编辑

所以问题是我希望在用户点击通知时打开特定的 View Controller ,但我也希望 UITabBar 保留。我没有成功地做到这一点,这与我显示我相信的 subview 有关。请让我知道您的想法,非常感谢。

- (BOOL)applicationUIApplication *)application didFinishLaunchingWithOptionsNSDictionary *)launchOptions {    

self.tabBarItem = [[[UITabBarItem alloc] init] autorelease];

 exploreViewController *view1 = [[exploreViewController alloc] initWithNibName"exploreViewController" bundle:nil];
view1.title= @"Explore";

Upcoming *view2 = [[Upcoming alloc] initWithNibName"Upcoming" bundle:nil];
view2.title = @"Upcoming";

TipsViewController *view3 = [[TipsViewController alloc] initWithNibName"TipsView" bundle:nil];
view3.title = @"Tips";

UINavigationController *nav1 = [[UINavigationController alloc] initWithRootViewController:view1];
UINavigationController *nav2 = [[UINavigationController alloc] initWithRootViewController:view2];
UINavigationController *nav3 = [[UINavigationController alloc] initWithRootViewController:view3];

[view1 release];
[view2 release];
[view3 release];

self.tabBarController = [[[UITabBarController alloc] init] autorelease];
self.tabBarController.viewControllers = [NSArray arrayWithObjects:nav1,nav2,nav3,nil];
self.tabBarItem = [[[UITabBarItem alloc] init] autorelease];

[nav1 release];
[nav2 release];
[nav3 release];


if (launchOptions != nil)
{  
NSDictionary *remoteNotif = [launchOptions objectForKey: UIApplicationLaunchOptionsRemoteNotificationKey];
NSLog(@"Launched from push notification");
//Accept push notification when app is not open
if (remoteNotif) {      

 NSDictionary *alertBody = [remoteNotif objectForKey"loc-key"];

 self.window.rootViewController = nav2;  //this is what I want displayed when tapped but also maintain tab bar controller
    [window addSubview:tabBarController.view];
    [window makeKeyAndVisible];

  }
}
else {

    //Go here if just loading up normally without push
    [window addSubview:tabBarController.view];
    [window makeKeyAndVisible];

}
  return YES;

}



Best Answer-推荐答案


didFinishLaunchingWithOptions: 方法中完成。您可以检查应用程序是否因为通知而启动,并设置适当的 viewController 来显示。

类似:

-(BOOL)applicationUIApplication *)application didFinishLaunchingWithOptionsNSDictionary *)launchOptions {

    // other stuff

    if (launchOptions != nil) {
        NSLog(@"Launched from push notification");
        NSDictionary *notification = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
        // Do something with the notification dictionary
        self.myViewController = [LaunchFromNotificationViewController alloc] init];
    } else {
        self.myViewController = [OrdinaryLaunchViewController alloc] init];
    }

    self.window.rootViewController = self.myViewController;
    [self.windows makeKeyAndVisible];
    return YES;
}

关于objective-c - 从推送通知推送 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10345624/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap