Пробуждение приложения из фона iOS

Я использую тихие уведомления, чтобы разбудить свое приложение из фона. Когда я закрываю свое приложение, все работает нормально, но когда я его завершаю (проведите пальцем вверх), оно перестает работать. Я чувствую (вибрацию), что тихое уведомление было доставлено, но мое приложение не обрабатывает его. Я сделал локальное уведомление, которое должно срабатывать, когда приходят тихие уведомления. В моем .plist включены удаленные уведомления и фоновая выборка. В AppDelegate.m у меня есть это:

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler

{

    UILocalNotification *notification_ = [[UILocalNotification alloc]init];

    notification_.alertBody = [NSString stringWithFormat:@"Psst!"];

    notification_.soundName = UILocalNotificationDefaultSoundName;

    [notification_ setFireDate:[NSDate dateWithTimeIntervalSinceNow:2]];

    [notification_ setTimeZone:[NSTimeZone defaultTimeZone]];

    [application setScheduledLocalNotifications:[NSArray arrayWithObject:notification_]];

}

person user894132    schedule 15.02.2015    source источник


Ответы (1)


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

Когда ваше приложение не запущено и открыто из уведомления, вместо этого уведомление должно обрабатываться в application:didFinishLaunchingWithOptions. Словарь launchOptions должен содержать ключ UIApplicationLaunchOptionsRemoteNotificationKey, который относится к полезной нагрузке уведомления.

Для получения дополнительной информации см. раздел «Обработка локальных и удаленных уведомлений» в Руководство по программированию локальных и удаленных уведомлений

person Markus    schedule 15.02.2015
comment
Мне нужно доставить тихий толчок, чтобы запустить мое приложение один раз в день в фоновом режиме, и теперь я немного запутался. Чтобы выполнить это, когда приложение завершено, мне нужно использовать UIApplicationLaunchOptionsRemoteNotificationKey в application:didFinishLaunchingWithOptions? - person user894132; 15.02.2015
comment
Извините, я не заметил там тихую часть. Несмотря на то, что молчаливое уведомление AFAIK — это просто уведомление, которое имеет content-available как часть своей полезной нагрузки. Обработка этого в application:didFinishLaunchingWithOptions на самом деле не имеет особого смысла. - person Markus; 16.02.2015
comment
Как я могу обработать тихий толчок, когда приложение завершено? - person user894132; 16.02.2015
comment
По-видимому, вы не можете обрабатывать тихие уведомления, когда приложение закрывается. См. этот ответ для более подробного объяснения. - person Markus; 16.02.2015
comment
Так что нет никакого способа разбудить мое приложение в фоновом режиме? - person user894132; 16.02.2015