iOS Push-уведомления с пустым словарем aps - PullRequest
10 голосов
/ 01 декабря 2011

Проведение исследований, чтобы попытаться выбрать направление для типов уведомлений.Я хотел бы иметь возможность уведомить мое приложение, что есть новые данные, которые необходимо обновить, но не беспокоить пользователя всплывающим сообщением / уведомлением.Идея состоит в том, что те же уведомления выходят, если приложение открыто или закрыто, и когда приходит это «специальное» сообщение и приложение открыто, оно знает, что нужно извлечь данные.

Моя идея состояла в том, чтобы отправить пустой словарь apsкак в примере 5 внизу этого яблочного документа .

Мой вопрос: что произойдет, когда будет получен этот тип сообщения?Он говорит, что очистит значок, но появится ли какое-то сообщение по умолчанию для пользователя?Или это будет совершенно бесшумно?

Последующий вопрос, есть ли лучший способ сделать это, кроме проверки, запущено ли приложение, и указание моему серверу начать отправку "специальных" полезных нагрузок (я хотел бысправиться со всем через пуш)?

1 Ответ

9 голосов
/ 08 декабря 2011

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

Посмотрите еще раз на пример 5 в документе, на который вы ссылались. aps может быть пустым, и вы можете указать любые пользовательские данные, которые вы хотите, как они делают с помощью клавиши "acme2". Данные «acme2» являются примером того, где «особая» полезная нагрузка вашего сервера может находиться в полезной нагрузке JSON.

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

  1. Если ваше приложение находится на переднем плане, то iOS не будет перехватывать уведомление. Вы получите уведомление в приложении делегата приложения: didReceiveRemoteNotification: метод (при условии, что делегат приложения переопределяет метод).
  2. Если iOS действительно перехватила ваш push-запрос, то, когда вы решите запустить приложение в ответ на уведомление, вам потребуется извлечь «push-словарь» в приложении делегата приложения: didFinishLaunchingWithOptions: метод, как в следующем примере:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    [self application:application didReceiveRemoteNotification:[launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey]];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...