Этот вопрос немного устарел, но я все равно выскажу то, что нашел здесь.
Существует два метода, которые необходимо реализовать в делегате приложения, чтобы проверить, было ли ваше приложение запущено из удаленного уведомления (с момента, когда приложение не запущено на вашем устройстве), или получило удаленное уведомление во время работы (в фон или передний план).
Первый - это метод, который уже есть в вашем делегате приложения:
- (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 переданного приложения, чтобы выяснить, находились ли вы на переднем плане или в фоне.