Intereting Posts
Ожидаемый байт AFNetworking – -1 Swift AVAudioPlayer не воспроизводит звук Swift getter переопределяет невычислимую переменную Ошибка компоновщика Apple Mach-O Предупреждение о Xcode 5.1 Могу ли я игнорировать предупреждение Cora Data относительно слишком многих атрибутов? Макет для разных экранов iPhone Прокрутка между видами, такими как snapchat в Swift UISplitViewController + UIPageViewController + WKWebView = иногда не удается перелистывать страницы Ширина металлической линии iOS googlemap sdk, имеющий проблемы с архитектурой ios XMPP не отключается должным образом при завершении приложения? Где я должен удалить removeObserver из NSNotification CAAnimation: Синхронизация альфа представления с непрозрачностью слоя представления Что случилось с моим Xcode 8? Я даже не могу скомпилировать новый проект? Сообщение, отправленное на освобожденный экземпляр … Отправлено во время @synthesize?

Включить / отключить 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: ?

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