Флаг чтения уведомлений в приложении «Настройки» внутри приложения iPhone - PullRequest
5 голосов
/ 23 марта 2011

Я включаю push-уведомление для своего приложения.Как мы можем прочитать флаги для уведомления в приложении «Настройки», когда мое приложение работает.По некоторым причинам мне нужно знать, установлено ли для конкретного уведомления (оповещения, звука, значка) значение ON / OFF.

Пожалуйста, руководство.

Ответы [ 2 ]

11 голосов
/ 06 января 2012

Попробуйте вызвать этот метод [[UIApplication sharedApplication] enabledRemoteNotificationTypes]

Он вернет тип UIRemoteNotificationType, с которым вы можете работать, чтобы определить, что доступно.

UIRemoteNotificationType status = [[UIApplication sharedApplication] enabledRemoteNotificationTypes];

Теперь статус можно рассматривать какint используя NSLog(@"status = ", status);, к которому мы можем точно определить, что включено.Но чтобы сделать это, нам нужно понять UIRemoteNotificationType.

typedef enum {
   UIRemoteNotificationTypeNone    = 0,
   UIRemoteNotificationTypeBadge   = 1 << 0,
   UIRemoteNotificationTypeSound   = 1 << 1,
   UIRemoteNotificationTypeAlert   = 1 << 2,
   UIRemoteNotificationTypeNewsstandContentAvailability = 1 << 3
} UIRemoteNotificationType;

Не вдаваясь в подробности, вам, по сути, нужно отойти от этого знания, что ...

  • ЕслиЗначки включены, добавьте 1
  • Если звук включен, добавьте 2
  • Если включены оповещения, добавьте 4
  • Если доступно содержимое газетного киоска, добавьте 8 (яне буду беспокоиться об этом парне)

Допустим, вы хотите знать, включены ли значки / звук / оповещения.UIRemoteNotificationType (статус, если вы играете вместе) должен получиться равным 7.

Теперь давайте работать в обратном направлении.Допустим, что status == 5.Существует только одна конфигурация настроек, которая может дать нам это значение, а именно, если значки и оповещения включены (значки добавляют 1, оповещения добавляют 4, всего 5) и звук отключен.

Что если status == 6?Опять же, есть только одна конфигурация настроек, которая будет возвращать это число, и это если оповещения и звук включены, а значки выключены.

Используя операторы IF, мы можем сделать что-то вроде

If (status == 5)
{
    NSLog(@"User has sound alerts disabled");
    [self fireThatSpecialMethod];
}

Для запуска установленного блока кода или запуска определенного метода, когда звук отключен, но все остальное включено.В любом случае, надеюсь, что этот ответ полезен для людей!

0 голосов
/ 17 февраля 2015

Обратите внимание, что начиная с iOS 8 метод, который вы ищете, чтобы определить, зарегистрированы ли удаленные уведомления, таков:

[[UIApplication sharedApplication] isRegisteredForRemoteNotifications]

Вы можете определить, какие виды уведомлений, которые пользователь в настоящее время включил, используя следующий метод

[[UIApplication sharedApplication] currentUserNotificationSettings]

Возвращает объект UIUserNotificationSettings со всей необходимой информацией.

ДокументацияСсылки:

isRegisteredForRemoteNotifications

currentUserNotificationSettings

UIUserNotificationSettings

...