Я создаю приложение, которое запрашивает у пользователя разрешение на отправку уведомлений, когда пользователь включает коммутатор. Я использую этот код:Удаление ключа в зависимости от решения пользователя
- (IBAction)mySwitchValueChanged:(id)sender {
if ([UIApplication instancesRespondToSelector:@selector(registerUserNotificationSettings:)]){
[[UIApplication sharedApplication] registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert|UIUserNotificationTypeBadge|UIUserNotificationTypeSound categories:nil]]; // ask the user for permission
}
if ([[UIApplication sharedApplication] respondsToSelector:@selector(currentUserNotificationSettings)]) { // Check it's iOS 8 and above
UIUserNotificationSettings *grantedSettings = [[UIApplication sharedApplication] currentUserNotificationSettings];
if (grantedSettings.types != UIUserNotificationTypeNone)
{
// Accepted
} else
{
[self.mySwitch setOn:NO]; // Declined
}
}
}
Желаемое поведение следующим образом:
- горок ПЕРЕКЛЮЧИТЬ
- оповещения просит разрешения
- код ждет пользователя, чтобы решить
- Либо делает то, что я кодирую, где я положил //, или отключил переключатель.
Текущее поведение заставляет код запускаться сразу и не ждет, когда пользователь примет решение. Как я могу изменить это, чтобы получить желаемое поведение?
Спасибо!
Вы смотрели на делегатов обратных вызовов вы получаете? – Wain
Прочитайте обсуждение в документах для 'registerUserNotificationSettings'. Он рассказывает вам, как с этим справиться. – rmaddy
@rmaddy чтение сейчас. Я вижу, что документы сообщают вам следующее: «Если ваше приложение отображает предупреждения, воспроизводит звуки или значки с его значком, вы должны вызвать этот метод во время цикла запуска, чтобы запросить разрешение на оповещение пользователя таким образом». Но я называю это, когда пользователь переводит переключатель, который дает гораздо больше контекста пользователю, поскольку они знают, что они «подписывают». Это разрешено? – Erik