使用iOS 5时,推送通知可以显示为横幅,并在几秒钟后消失。 我知道当用户点击横幅时会调用didReceiveRemoteNotification。
我的问题是,如果横幅消失且我的用户发现应用上有徽章编号,他们会点按应用图标以启动应用。现在,如果应用程序在后台运行,我该如何检查应用程序是否已经显示在前台并且有通知,并且是否已做必要的操作?
我的通知目的基本上是告知用户应用内容已更新,并鼓励他们运行应用以获取最新内容。我的应用程序仅在发布时检查最新内容,并且不会定期检查更新。
答案 0 :(得分:0)
这个问题有点陈旧,但无论如何我会在这里找到我发现的东西。
您需要在app委托中实施两种方法,以检查您的应用是从远程通知启动(从应用程序未在您的设备上运行时),还是在运行时收到远程通知(在背景或前景)。
首先是您的App Delegate中已有的方法:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
要检查这是否是从远程通知启动的,请使用与此类似的代码:
// Check to see if launched from notification
if (launchOptions != nil)
{
NSDictionary* dictionary = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
if (dictionary != nil)
{
NSLog(@"Launched from push notification: %@", dictionary);
// DO SOMETHING HERE
}
}
您需要实现的另一种方法是专门针对应用程序运行时的应用程序的情况:
-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{
NSLog(@"Received notification: %@", userInfo);
}
你如何处理通知取决于你,但这就是你的应用对它的了解!
在第二种方法中,您可以检查传递的应用程序的UIApplicationState,以确定您是在前台还是后台。