这个问题有点老,但我会弹出我在这里找到的东西。
您需要在应用程序委托中实现以下两种方法来检查您的应用程序是从远程通知启动的(从应用程序未在设备上运行时启动)还是在运行时收到远程通知背景或前景)。
首先是已经在应用程序委托的方法:
- (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以确定您是否处于前景或背景中。