2017-02-12 2 views
0

В каком-то виде контроллера я всплывал настройки уведомления о сообщенияхКак обрабатывать выбор пользователя настроек уведомлений разрешения оповещения

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

Как обрабатывать Don't Allow и Allow кнопки о сообщении?

Если пользователь нажмите на Allow мне нужно изменить текст надписи в том же контроллере представления

ответ

1

Я предполагаю, что где-то в вашем приложении у вас есть код, который:

UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:... categories:...]; 
[application registerUserNotificationSettings:settings]; 

После выполнения этого, система будет показать предупреждение, о котором вы говорите. В этот момент приложение получит UIApplicationWillResignActiveNotification (вы можете зарегистрироваться для него в делегате приложения или на NSNotificationCenter). Затем, после того как пользователь сделает какой-то выбор, система отправит UIApplicationDidBecomeActiveNotification (также в делегат приложения или путем уведомления). В этот момент проверьте права доступа, используя такой код:

UIUserNotificationSettings *settings = application.currentUserNotificationSettings; 
if (settings.types & UIUserNotificationTypeSound & UIUserNotificationTypeBadge) { 
    // sound and icon badge allowed 
} 
else { 
    // either sound or icon badge or both disallowed 
} 
1

Ниже приведена проблема.

При системном уровне всплывающее сообщение виден applcation будет вызывать resignActivity при нажатии «Разрешить» и «Не разрешать» кнопку оповещения вы предупредительное сообщение отклонил и это будет вызывать applicationDidBecomeActive в вашем AppDelegate классе при регистрации с NSNotificationCenter может изменять текст при непосредственном доступе пользователя.

- (void)applicationDidBecomeActive:(UIApplication *)application { 
     // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. 
    dispatch_async(dispatch_get_main_queue(), ^{ 
     [[NSNotificationCenter defaultCenter] postNotificationName:@"NOTIFICATION_KEY" 
                  object:self]; 
    }); 
}