2014-11-17 3 views
1

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

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

// Register for Push Notifications, if running iOS 8 
        if ([application respondsToSelector:@selector(registerUserNotificationSettings:)]) 
        { 
         UIUserNotificationType userNotificationTypes = UIUserNotificationTypeNone; 
         UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:userNotificationTypes categories:nil]; 
         [application registerUserNotificationSettings:settings]; 
         [application registerForRemoteNotifications]; 
        } 

        else 
        { 
         // Register for Push Notifications before iOS 8 
         [application registerForRemoteNotificationTypes:UIRemoteNotificationTypeNone]; 
        } 

Это работает. Удаленные уведомления отключены!

Но когда пользователь нажмет еще раз, чтобы включить удаленные уведомления

if ([application respondsToSelector:@selector(registerUserNotificationSettings:)]) 
        { 
         UIUserNotificationType userNotificationTypes = (UIUserNotificationTypeAlert | UIUserNotificationTypeBadge | UIUserNotificationTypeSound); 
         UIUserNotificationSettings * settingsAvailable = [UIUserNotificationSettings settingsForTypes:userNotificationTypes categories:nil]; 
         [application registerUserNotificationSettings:settingsAvailable]; 
         [application registerForRemoteNotifications]; 

        } 

        else 
        { 
         // Register for Push Notifications before iOS 8 
         [application registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound)]; 

        } 

приложение не регистрирует ни для типа (оповещения, значок или звук)

Некоторые советы? Заранее спасибо.

ответ

0

Здесь вы должны выделить два понятия: сначала запрашивает у пользователя разрешение на получение push-уведомлений, что вы делаете. Если у вас есть это разрешение, не выключайте его. Насколько я понимаю, вы можете получить разрешение только один раз, и после этого изменения должны быть внесены в приложение настроек (Настройки -> Уведомления).

Что вы, вероятно, должны делать, это просить включить push-уведомления один раз, а также отслеживать в приложении и везде, где генерируются ваши нажатия, хочет ли пользователь получать push или нет. Разрешение управляется iOS. Вторичный (вкл/выкл) уровень управляется вами.

+0

Я пытался это сделать. каждый раз, когда кнопка включается или выключается, я сохраняю эту опцию в userDefault и пытаюсь позволить/или не получать push-уведомление в AppDelegate «didReceivePushNotifications», но я не знаю, почему удаленные уведомления по-прежнему получают его по телефону – Developer3000

+0

Ни один из то, что вы делаете, имеет смысл. Когда ** didReceiveRemoteNotification ** называется уже слишком поздно - push уже отправлен, получен, и пользователь, вероятно, его видел. Как я уже сказал, вы должны сами отслеживать предпочтения пользователя и отправлять (или не отправлять) push-уведомление на основе этого предпочтения. – stromdotcom

+0

, вероятно, вы правы и должны быть лучшим способом сделать это. Спасибо . – Developer3000