【问题标题】:UILocalNotification App in BackgroundUILocalNotification 应用程序在后台
【发布时间】:2013-03-15 09:39:45
【问题描述】:

我已在我的应用中成功实施 UILocalNotifications。我面临的唯一问题是应用程序处于后台时以及用户是否清除了通知。一旦用户打开应用程序,应用程序仍会显示带有 1 的徽章。

但是我用

清除了徽章
 application.applicationIconBadgeNumber = 0;

在 didFinishLaunchingWithOptions 和 didReceiveLocalNotification 这两个函数上。

应用程序进入前台并带有所有通知数据后如何提示我。

我们将非常感谢您在这方面的任何帮助和建议。

问候。

【问题讨论】:

  • 显示你的 didReceiveLocalNotification 代码

标签: ios objective-c uilocalnotification


【解决方案1】:

applicationWillEnterForeground: 告诉代理应用程序即将进入前台。

- (void)applicationWillEnterForeground:(UIApplication *)application{
     application.applicationIconBadgeNumber = 0;
}

didFinishLaunchingWithOptions 仅在应用启动时调用。而且我不确定 didReceiveLocalNotification 是否在后台调用。

所以 applicationWillEnterForeground 应该可以工作。

【讨论】:

  • 要理解 MrBonjour 的答案,我建议你在 AppDelegate 的每个方法中做一个 NSLog,看看它们什么时候被调用。更多信息:developer.apple.com/library/ios/#documentation/iphone/…
  • 感谢您的及时回复。我同意您的观点 Mr.Bonjour 但 applicationWillEnterForeground 'applicationWillEnterForeground' 没有给我访问通知详细信息的选项......这样我就可以访问“userInfo”对象并根据通知采取行动。是否有任何方法可以访问当前通知并获取所需的值。请提出建议。
  • 您将在 didFinishLaunchingWithOptions 和 didReceiveLocalNotification 中收到通知
  • 从文档中,您可以查阅 UIApplication 中的 scheduleLocalNotifications。您仍然需要实现一个自定义对象,以确定您是否已经完成/检查了最后一个通知的工作(scheduledLocalNotifications 是一个数组,因此它应该是第一个或最后一个索引)。至少您拥有所需的所有数据
  • 感谢您的帮助 Mr.Bonjour。
【解决方案2】:

你需要使用

- (void)applicationDidBecomeActive:(UIApplication *)application{
}

来自您的 Apps 委托的方法,而不是

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
}

然后,在您的应用重新激活后,此点将被调用...

【讨论】:

  • 丹尼斯正如我在上面的评论中提到的,applicationDidBecomeActive 将无法向我提供通知数据(用户信息)。请建议是否有任何方法可以访问通知数据。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多