【发布时间】: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