【问题标题】:iOS local notifications with objective c带有目标 c 的 iOS 本地通知
【发布时间】:2014-10-07 07:47:25
【问题描述】:

我在我的应用上使用本地通知。当通知到达时,我会完美地处理通知,即使应用程序没有运行,也可以按下它,当您从设备的“通知”中打开通知时。但是当应用程序没有运行并且您直接打开应用程序时,通知屏幕不会打开并且徽章编号不会为 0。我错过了什么?

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
 {
      UILocalNotification *locationNotification = [launchOptions objectForKey:UIApplicationLaunchOptionsLocalNotificationKey];
if (locationNotification) {
    UILocalNotification *localNotif =
    [launchOptions objectForKey:UIApplicationLaunchOptionsLocalNotificationKey];
    NotificationsViewController *vc = nil;
    if (localNotif) {
        //base on notification create right view controller
        vc = [[NotificationsViewController alloc] init];
        NSLog(@"Recieved Notification %@",localNotif);
    }
    else
    {
        //create default view controller
        vc = [[NotificationsViewController alloc] init];
    }

    // Add the view controller's view to the window and display.
    _window.rootViewController = vc;
    [_window makeKeyAndVisible];

    // Set icon badge number to zero
    application.applicationIconBadgeNumber = 0;
}

return YES;
 }




   -(void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification
  {

NotificationsViewController *vc = nil;

vc = [[NotificationsViewController alloc] init];
_window.rootViewController = vc;
// Set icon badge number to zero
application.applicationIconBadgeNumber = 0;

//We take the rootViewController first which is expected to be a UINavigationController in your case

   }

【问题讨论】:

  • 如果你不从通知中打开应用,应用不知道有通知
  • 检查 applicationIconBadgeNumber 怎么样。我做了这样的事情,它似乎有效,但我想这不是最好的方法: if (application.applicationIconBadgeNumber>0) { NotificationsViewController *vc = nil; vc = [[NotificationsViewController alloc] init]; _window.rootViewController = vc; [_window makeKeyAndVisible]; // 将图标徽章编号设置为零 application.applicationIconBadgeNumber = 0; }
  • 这样你可以知道是否有通知,但你无法获取通知信息(你发送的消息或其他数据)
  • @jcesarmobile 非常感谢。你是对的,你可以把它作为答案。我会标记它
  • 完成,我添加了 2 个 cmets 作为答案

标签: ios objective-c notifications local


【解决方案1】:

如果你不从通知中打开应用,应用不知道有通知

查看applicationIconBadgeNumber可以知道是否有通知,但无法获取通知信息(你发送的消息或其他数据)

【讨论】:

    【解决方案2】:

    当您的应用未运行时 如果您“didFinishLaunchingWithOptions”将被调用而不是 didReceiveLocalNotification,您应该跟踪参数 launchOptions 以检测启动模式: 如果应用程序直接从应用程序图标启动,则不应将用户重定向到通知屏幕。 如果应用程序从 NSNotification 开始,您应该将用户重定向到通知、取消安排通知、更新应用程序图标徽章等...

    所以在这种情况下,当您从应用图标位置打开应用时,位置通知可能为零。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多