Предупреждение о синтаксисе из didReceiveRemoteNotification: fetchCompletionHandler

Я получаю сообщение об ошибке после добавления этого кода с сайта parse.com:

- (void)application:(UIApplication *)application
didReceiveRemoteNotification:(NSDictionary *)userInfo
fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {
    if (application.applicationState == UIApplicationStateInactive) {
        [PFAnalytics trackAppOpenedWithRemoteNotificationPayload:userInfo];
    }
}

Я не понимаю, что происходит, но я получаю это предупреждение в журнале:

Вы реализовали - [ application: didReceiveRemoteNotification: fetchCompletionHandler:], но вам все равно нужно добавить "удаленное уведомление" в список ваших поддерживаемых UIBackgroundModes в вашем Info.plist.

Я думаю, что добавление в ваш файл plist UIBackgroundModes - remote-notification устранит проблему,

Но когда я это делаю, он меняет слова на следующие:

Required Background ModesApp downloads content in response to push notifications

Что мое приложение не делает, поэтому я смущен тем, почему я делаю это в первую очередь.

Ответ 1

Если вы не собираетесь извлекать данные в ответ на удаленное уведомление, я думаю, что вы можете реализовать этот метод делегата:

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

например.

- (void)application:(UIApplication *)application
didReceiveRemoteNotification:(NSDictionary *)userInfo {
    if (application.applicationState == UIApplicationStateInactive) {
        [PFAnalytics trackAppOpenedWithRemoteNotificationPayload:userInfo];
    }
}

вместо текущего, который вы используете.

Ответ 2

Если вы не хотите вручную добавлять ключ в свой .plist файл, то вот графическая версия ответа @MurraySagal, выполните шаги от 1 до 7, и вы сделаете это.:)

enter image description here

Примечание. Если вы не можете прочитать эти шаги, вы можете уменьшить свою текущую вкладку, используя комбинацию Command + + (для увеличения) и Command + - (для уменьшения масштаба). Если Command не будет работать, вы можете попробовать с помощью Ctrl.

Ответ 3

Я думаю, что @djshiow не решает вашу проблему.

Вам нужно добавить в файл info.plist следующее:

remote-notification

1) Добавьте новую строку и в левом столбце выберите Необходимые фоновые режимы.

2) В строке "Позиция 0" щелкните правой колонке и введите: удаленное уведомление. Нажмите Enter.

Источник: http://hayageek.com/ios-silent-push-notifications/

Ответ 4

В Xcode 6:

  • В Навигаторе проектов щелкните проект
  • В списке "Проекты и цели" щелкните цель.
  • Возможности Click
  • Развернуть и включить Фоновые режимы
  • Нажмите "Удаленные уведомления"

Это добавит ключ Required background modes и App downloads content in response to push notifications к info.plist.

Ответ 5

Когда вы используете новый метод didReceive..., вы должны сделать две вещи:

  • Добавьте необходимую запись в свой plist
  • Добавить обработчик завершения, который будет обрабатывать событие для обработки данных

Если вы не хотите загружать какие-либо данные, вы можете добавить это в свой метод didReceive...

completionHandler(.NoData)