2015-09-22 4 views
0

У меня есть вопрос о push-уведомлениях.отключить push-уведомления ios

У меня есть база данных со всеми устройствами токенов. Это структура таблицы.

ID (number) 

APP_NAME (varchar) 

APP_TOKEN (varchar) 

ENABLE (bool) 

Если пользователи перейти к настройкам устройства и выключить мои уведомления приложения, есть в любом случае, чтобы изменить поле позволяют ложным? Я имею в виду, что у меня есть плагин в wordpress, который посылает уведомления всем устройствам, зарегистрированным в моей базе данных, и я хочу знать, отключил ли пользователь уведомления, чтобы поле «включить» было ложным, а затем не отправило ему уведомление.

ответ

1

Вы можете проверить все типы уведомлений cf this question:

BOOL remoteNotificationsEnabled, noneEnabled,alertsEnabled, badgesEnabled, soundsEnabled = NO; 

// iOS8+ 
if ([[UIApplication sharedApplication] respondsToSelector:@selector(registerUserNotificationSettings:)]) { 

    remoteNotificationsEnabled = [UIApplication sharedApplication].isRegisteredForRemoteNotifications; 

    UIUserNotificationSettings *userNotificationSettings = [UIApplication sharedApplication].currentUserNotificationSettings; 

    noneEnabled = userNotificationSettings.types == UIUserNotificationTypeNone; 
    alertsEnabled = userNotificationSettings.types & UIUserNotificationTypeAlert; 
    badgesEnabled = userNotificationSettings.types & UIUserNotificationTypeBadge; 
    soundsEnabled = userNotificationSettings.types & UIUserNotificationTypeSound; 
} 
else { // iOS 7 and below 
     UIRemoteNotificationType enabledRemoteNotificationTypes = [UIApplication sharedApplication].enabledRemoteNotificationTypes; 

     noneEnabled = enabledRemoteNotificationTypes == UIRemoteNotificationTypeNone; 
     alertsEnabled = enabledRemoteNotificationTypes & UIRemoteNotificationTypeAlert; 
     badgesEnabled = enabledRemoteNotificationTypes & UIRemoteNotificationTypeBadge; 
     soundsEnabled = enabledRemoteNotificationTypes & UIRemoteNotificationTypeSound; 
} 

Тогда в зависимости от результатов, обновите булево на своем внутреннем интерфейсе, делая вызов ваш API.

+0

В любом случае, для iOS 7 или более ранних существует? –

+0

отредактировал ответ – BoilingLime

+0

Спасибо за все, он работает! –

1

К сожалению, нет обратного вызова делегата от iOS, уведомляющего приложение, когда push-уведомление включено или отключено из приложения настроек. Приложению необходимо запросить свойство UIApplicationenabledRemoteNotificationTypes, например, в applicationDidBecomeActive:, а затем сделать вызов сервера, чтобы сохранить настройку, как в вашем случае ENABLE = NO.

Однако, даже если сервер отправляет уведомление, когда пользователь решил не прослушивать его, iOS игнорирует уведомление.

1

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

UIRemoteNotificationType types = [[UIApplication sharedApplication] enabledRemoteNotificationTypes]; 
if (types == UIRemoteNotificationTypeNone) { 
    //set your flag to disabled 
} 
Смежные вопросы