Попробуйте вызвать этот метод [[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];
}
Для запуска установленного блока кода или запуска определенного метода, когда звук отключен, но все остальное включено.В любом случае, надеюсь, что этот ответ полезен для людей!