【发布时间】:2015-10-26 10:04:31
【问题描述】:
不知道有没有人经历过这种情况,但是是这样的:
我已经完成了 APNS,应用确实收到了通知。当我从通知(调用appDidReceiveRemoteNotification:)打开应用程序时,它运行良好。
奇怪的是,当应用程序处于后台时,它会收到通知(显示在通知框中)。当我通过点击图标(不是通知)打开应用程序时,调试器并没有停在appDidReceiveRemoteNotification: 或appDidFinishLaunchWithOption:,所以我的通知没有保存。当我再次拉下通知框并点击通知时,调试器按预期停止在appDidReceiveRemoteNotification:。如何通过在应用图标上打开应用来更新通知?
** 编辑 **
感谢 abhinav,我意识到我误用了该方法。我应该使用任何一个
- (void)applicationWillEnterForeground:(UIApplication *)iApplication // Or
- (void)applicationDidBecomeActive:(UIApplication *)iApplication.
但是,我的应用程序设计显示服务器可以向用户发送消息(关于更新、新闻......)。代码如下:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
//....
if (launchOptions) {
NSDictionary *dictionary = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
if (dictionary) {
[Message saveMessage:dictionary];
NSLog(@"Launched from push notification: %@", dictionary);
}
}
//....
}
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{
// Save message to coredata.
[Message saveMessage:userInfo];
// Perform seggue, showing inbox viewcontrollers here.
}
但是从后台打开应用程序时使用的两种方法都没有提供通知字典,而且我的老板要求我在从后台打开应用程序时更新核心数据,我该怎么做?或者我应该告诉我的老板不能被收购?我们不希望用户错过有关更新的通知。
【问题讨论】:
-
请展示您的代码块
-
appDidReceiveRemoteNotification:或appDidFinishLaunchWithOption:当您的应用来自后台时,永远不会被调用。进入前台时,applicationWillEnterForeground:或applicationDidBecomeActive:代表将通知您。如果你想更新通知徽章,那么你可以在这里做。
标签: ios objective-c notifications apple-push-notifications uiapplicationdelegate