Программно определить, были ли сброшены настройки конфиденциальности пользователя

Есть ли способ программно определить, были ли сброшены настройки конфиденциальности пользователя? Через Settings > General > Reset > Reset Location & Privacy

В настоящее время я работаю над структурой, чтобы упростить запрос разрешения пользователя и предоставить больше контекста: ISHPermissionKit

В некоторых случаях (например, при сохранении «Больше не спрашивать») было бы хорошо, если бы я мог также сбросить внутреннее состояние структуры разрешений, если система перезагружается.

Одним из способов, очевидно, было бы проверить, не определен ли ранее предоставленный / отклоненный статус (например, местоположение). Однако это требует проверки множества разрешений и не возможно для всех категорий разрешений.

Я проверил, что оба [[ASIdentifierManager sharedManager] advertisingIdentifier] и [[UIDevice currentDevice] identifierForVendor] остаются неизменными при сбросе конфиденциальности.


person Felix Lamouroux    schedule 30.06.2014    source источник


Ответы (2)


Извините, но это невозможно. Для этого нет вызова делегата. Лучший способ - проверить

applicationDidBecomeActive:

person penguinmaster    schedule 09.07.2014
comment
Как бы вы это проверили, если не сохраните, если пользователь ранее сделал выбор? - person Felix Lamouroux; 09.07.2014
comment
Тебе придется хранить это. Например, когда пользователь разрешает push-уведомления, вы можете: UIRemoteNotificationType types = [[UIApplication sharedApplication] enabledRemoteNotificationTypes]; и сохраните типы. Затем в applicationDidBecomeActive: вы можете проверить, изменилось ли это. Вы можете сделать то же самое с адресной книгой, а также с местоположением. - person penguinmaster; 09.07.2014
comment
Я знаю об этой технике / стратегии, однако вопрос конкретно касается способов, которые работают без проверки разрешений или сохранения предыдущих решений. - person Felix Lamouroux; 09.07.2014
comment
Это предназначено для общего использования и не должно ограничиваться удаленными уведомлениями или разрешениями на местоположение. Однако я ценю вашу помощь. - person Felix Lamouroux; 09.07.2014
comment
Я понимаю и сказал, что не знаю, как указано в моем первоначальном ответе. Четыре года проработал в Apple в команде iOS. Кроме того, вы должны знать, что в iOS8 есть много новых разрешений, таких как постоянное использование местоположения в фоновом режиме. - person penguinmaster; 09.07.2014
comment
Вот что я подозревал. Подача радара также кажется довольно безнадежной, поскольку, вероятно, это сделано намеренно. - person Felix Lamouroux; 09.07.2014
comment
Да, извините за плохие новости, хотя -1 кажется резким, поскольку я ответил на ваш вопрос (хотя и не то, что вы хотели). Удачи! - person penguinmaster; 09.07.2014
comment
Извините, возможно, это было немного преждевременно, но до комментариев в ответе не хватало глубины;). Вам нужно будет отредактировать свой ответ, иначе я не смогу отменить голосование. - person Felix Lamouroux; 09.07.2014
comment
Выполнено. Спасибо и удачи. Похоже, вы строите что-то действительно удобное. - person penguinmaster; 09.07.2014
comment
Был бы признателен, если бы сбросил счет хотя бы на 0. - person penguinmaster; 11.07.2014

[[NSNotificationCenter defaultCenter]addObserver:self
       selector:@selector(privacyWasReset:)  
           name:NSUserDefaultsDidChangeNotification
         object:nil];



[[NSNotificationCenter defaultCenter] removeObserver:self name:NSUserDefaultsDidChangeNotification object:nil];
to ->appDidBecomeActive method and also
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(privacyWasReset) name:NSUserDefaultsDidChangeNotification object:nil];
to-> applicationDidEnterBackground method.

Это может вам помочь ..

person Srinivasan N    schedule 11.07.2014
comment
Вызывается ли это после перезапуска приложения, если настройки были сброшены, когда приложение не работало? Из документов похоже, что он вызывается только при изменении фактических значений NSUserDefaults. - person Felix Lamouroux; 11.07.2014
comment
developer.apple.com/library/ios/samplecode/AppPrefs/ - person Srinivasan N; 11.07.2014
comment
Комментарии в этом проекте, похоже, подразумевают, что это относится только к настройкам, а не к разрешениям. - person Felix Lamouroux; 11.07.2014
comment
К сожалению, это уведомление не запускается при сбросе конфиденциальности. - person Felix Lamouroux; 15.07.2014