2015-05-27 2 views
0

В приложении iOS, использующем удаленные уведомления (исходящие от Parse.com), я пришел, потратив некоторое время на изучение предмета, на вывод, что я не должен использовать удаленные уведомления в фоновом режиме или, возможно, использовать тихие уведомления.(silent) RemoteNotification

Но silent notification кажется довольно сложным.

Например:

В этом коде:

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo 
fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler 
{ 
    NSLog(@"application:didReceiveRemoteNotification:fetchCompletionHandler:"); 
    completionHandler(UIBackgroundFetchResultNewData); 
} 

Факт добавления последней строки (completionHandler) предотвращает сообщение об ошибке. Но что это делает? Откуда происходит это завершение?

Я никогда не прикасался к тихим уведомлениям, и я отчасти теряюсь там.

ответ

1

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

- (void)application:(UIApplication *)application 
didReceiveRemoteNotification:(NSDictionary *)userInfo 

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

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

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

При поступлении удаленного уведомления система выводит уведомление пользователю и запускает приложение в фоновом режиме (при необходимости), чтобы он мог вызвать этот метод. Запуск приложения в фоновом режиме дает вам время для обработки уведомления и загрузки любых связанных с ним данных, что минимизирует время, которое истекает между приходом уведомления и отображением этих данных для пользователя.

Сообщите мне, если вам нужно больше разъяснений.

+0

Спасибо за этот ответ. Я понимаю, что вы пишете. Но я хотел бы знать, что именно: completeHandler (UIBackgroundFetchResultNewData); . Это похоже на вызов функции, но я понятия не имею, что он делает. Я уже использовал: - (void) application: didReceiveRemoteNotification: Так что я понимаю, как это работает. Но для другого: -void) application: didReceiveRemoteNotification: fetchCompletionHandler: Я не совсем понимаю, как я могу вписаться в то, что я хочу сделать. – Michel