Разрешения на push-уведомления

Пытаюсь обойти несколько угловых случаев, когда push-уведомления запрещены в приложении, и у меня есть два вопроса:

1) Есть ли способ сбросить, видел ли пользователь всплывающее окно с запросом на уведомление?

2) Есть ли способ определить, ответил ли пользователь на запрос уведомления?


person Brian King    schedule 27.08.2010    source источник


Ответы (2)


1) Нет, если только это не делает частный API, но это не разрешено Apple.

2) При первом запуске приложения после вызова registerForRemoteNotificationTypes вы можете проверить, вызывается ли didRegisterForRemoteNotificationsWithDeviceToken. Если это не так, пользователь говорит «Нет, спасибо».

person Philippe Leybaert    schedule 27.08.2010
comment
1) То, что я думал... ворчать 2) единственная проблема с этим - промежуток времени между registerForRemoteNotificationTypes и didRegisterForRemoteNotificationsWithDeviceToken не определен. Я мог бы проверить это при выходе из приложения, но я не уверен, должен ли пользователь вообще делать выбор перед выходом. Также пользователь может изменить разрешения на уведомления в настройках, и я не могу обнаружить это изменение. - person Brian King; 27.08.2010

Вы всегда можете проверить статус разрешений, если пользователь изменит их, вы можете проверить их на applicationDidBecomeActive

- (void)applicationDidBecomeActive:(UIApplication *)application
{
     if ([[UIApplication sharedApplication]  respondsToSelector:@selector(isRegisteredForRemoteNotifications)]) {
        if ([[UIApplication sharedApplication]  isRegisteredForRemoteNotifications]){
            NSLog(@"Notifications Enabled ios 8");
        } else {
            NSLog(@"Notifications not Enabled ios 8");
        }
    } else {
        UIRemoteNotificationType types = [[UIApplication sharedApplication] enabledRemoteNotificationTypes];
        if (types & UIRemoteNotificationTypeAlert)
        {
            NSLog(@"Notifications Enabled");
        }
        else
        {
            NSLog(@"Notifications not Enabled");
        }
    }

}

обновлено, чтобы оно работало и на iOS 8

person jcesarmobile    schedule 01.08.2014
comment
Из документов кажется, что это будет установлено, если вы запросите разрешение на оповещение, даже если пользователь отключил оповещения для вашего приложения. - person Kendall Helmstetter Gelner; 12.09.2014
comment
Я не понимаю, что вы имеете в виду, это ничего не устанавливает, просто проверяет статус разрешения - person jcesarmobile; 12.09.2014
comment
Я думал, что он просто сообщит о разрешениях, которые вы просили зарегистрироваться ранее, но в дальнейших тестах, я думаю, вы правы, он сообщает только о разрешениях, предоставленных системой. - person Kendall Helmstetter Gelner; 12.09.2014
comment
Да, он проверяет текущие разрешения, я помещаю код в приложениеDidBecomeActive, чтобы проверить их, если вы измените разрешения в приложении «Настройки». - person jcesarmobile; 12.09.2014