Включить / отключить push-уведомление после завершения запуска или внутри нашего приложения

Мне нужно включить / отключить или зарегистрировать / отменить регистрацию push-уведомления внутри нашего приложения после завершения запуска. Я сделаю эту функцию после запуска и в настройках учетной записи моего приложения "

Я пытаюсь выполнить код ниже, но это не работает.

if (cell.switchButton.on) { if ([[UIApplication sharedApplication]respondsToSelector:@selector(isRegisteredForRemoteNotifications)]) { UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge categories:nil]; [[UIApplication sharedApplication] registerUserNotificationSettings:settings]; [[UIApplication sharedApplication] registerForRemoteNotifications]; } } else { [[UIApplication sharedApplication] unregisterForRemoteNotifications]; } 

Мое требование: я включу или отключу уведомление, переключаясь в моем приложении программно, вместо того, чтобы напрямую перейти к настройке -> Уведомление.

Вы не должны использовать unregisterForRemoteNotifications, он полностью отменит регистрацию APNS, поскольку apple сказал

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

здесь ссылка

Будет лучше, если вы реализуете отключение push-уведомлений на стороне вашего сервера. Просто сказал вашему серверу, чтобы служба не отправляла APN.

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

 if (&UIApplicationOpenSettingsURLString != NULL){ [[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]]; } 

Вы можете легко включить и отключить push-уведомления в своем приложении, вызвав registerForRemoteNotificationTypes и unregisterForRemoteNotificationTypes соответственно.

Включить

 [[UIApplication sharedApplication] registerForRemoteNotifications]; 

Отключить

 [[UIApplication sharedApplication] unregisterForRemoteNotifications]; 

Что именно не работает?

application:didRegisterForRemoteNotificationsWithDeviceToken: ли вы токен устройства (приложение делегата application:didRegisterForRemoteNotificationsWithDeviceToken: или ошибка ( application:didFailToRegisterForRemoteNotificationsWithError: ?

В качестве альтернативного решения вы можете сохранить предпочтение пользователя (получать уведомления или нет) на своем сервере вместо подписки и отмены подписки.

  • Push-уведомление с распределением Ad Hoc и Store
  • iOS отправляет объект уведомлений в UserNotificationCenter и в файл didFinishLaunchingWithOptions
  • Последовательность методов, вызываемых при вводе push-уведомлений
  • Есть ли способ узнать, что пользователь отказался получать push-уведомления?
  • Подрядчик, запрашивающий секретные ключи для разработки push-уведомлений
  • Push-уведомления: требования к надежности Apple
  • XMPPFramework - pubsub + push уведомления?
  • Как перейти к произвольной сцене в сложной раскадровке из push-уведомления?
  • Как отменить push-уведомление в iOS
  • Бесшумное уведомление работает в iOS7 без wifi
  • Parse iOS API - добавление каналов
  • Давайте будем гением компьютера.