Пуш-уведомление iOS 5 исчезает, пользователь нажимает на значок приложения, чтобы запустить приложение - PullRequest
0 голосов
/ 08 февраля 2012

В iOS 5 push-уведомления могут отображаться в виде баннера и исчезать через несколько секунд. Я понимаю, что didReceiveRemoteNotification будет вызываться, когда пользователь нажимает на баннер.

Мой вопрос: если баннер исчез, и мой пользователь видит, что в приложении есть номер значка, он нажимает на значок приложения, чтобы запустить приложение. Теперь, если приложение работает в фоновом режиме, как я могу проверить, что приложение выведено на передний план, и было ли уведомление, и выполнить необходимое?

Цель моего уведомления в основном состоит в том, чтобы информировать пользователей об обновлении содержимого приложения и побуждать их запускать приложение для получения новейшего содержимого. Мое приложение проверяет только последнее содержимое во время запуска и не проверяет обновления периодически.

1 Ответ

0 голосов
/ 05 июля 2012

Этот вопрос немного устарел, но я все равно выскажу то, что нашел здесь.

Существует два метода, которые необходимо реализовать в делегате приложения, чтобы проверить, было ли ваше приложение запущено из удаленного уведомления (с момента, когда приложение не запущено на вашем устройстве), или получило удаленное уведомление во время работы (в фон или передний план).

Первый - это метод, который уже есть в вашем делегате приложения:

- (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 переданного приложения, чтобы выяснить, находились ли вы на переднем плане или в фоне.

...