【发布时间】:2016-09-26 11:46:43
【问题描述】:
我的问题是,如果应用程序在后台并且通知到达并且我从 icon 打开应用程序;应用程序恢复它的状态,但我想在这种情况下更新屏幕数据。有什么方法可以在通知到达时在后台更新数据?
这是我用来处理这种情况的代码:
ViewController.m文件代码:
- (void)viewDidLoad {
[super viewDidLoad];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(appIsComingFromBackground:)
name:UIApplicationDidBecomeActiveNotification
object:nil];
// Do any additional setup after loading the view, typically from a nib.
}
- (void) appIsComingFromBackground:(NSNotification *) note {
// code
NSString *hasMessage = [[NSUserDefaults standardUserDefaults] objectForKey:@"alertmsg"];
if([hasMessage length]!=0)
{
_labelText.text = hasMessage;
[[NSUserDefaults standardUserDefaults] setObject:@"" forKey:@"alertmsg"];
}
else{
_labelText.text = @"";
}
}
AppDelegate.m文件代码:
- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification
{
if (application.applicationState == UIApplicationStateActive) {
}
else if(application.applicationState == UIApplicationStateBackground || application.applicationState == UIApplicationStateInactive)
{
[[NSUserDefaults standardUserDefaults] setObject:notification.alertTitle forKey:@"alertmsg"];
}
NSLog(@"Alert Message: %@", notification.alertTitle);
NSLog(@"Alert Body: %@", notification.alertBody);
}
【问题讨论】:
-
如果应用程序被挂起,那么在显示本地通知时不会调用应用程序委托方法。
-
@Paulw11 所以这个问题没有解决办法吗?
-
如果用户没有从通知中打开应用但从图标打开,我们有什么办法可以更新数据?
-
适当的操作是让您的应用检查新数据或采取任何适当的操作,无论它是如何启动的。点击通知通常是将用户带到您应用中的特定位置,例如特定消息或事件
-
@Paulw11 问题是当我从图标打开应用程序时;
didReceiveLocalNotification没有打电话。如果调用此方法,那么我的问题将得到解决。因为你必须从本地通知 Payload 更新数据。
标签: ios objective-c notifications uilocalnotification