У меня есть приложение, которое должно запрашивать постоянный доступ к разрешению геолокации (также в фоновом режиме) для сбора данных. При запуске приложений я проверяю разрешения так (упрощенно)
private static function check():void{
if (Geolocation.permissionStatus == PermissionStatus.GRANTED){
onPermGranted();
}else{
_geo = new Geolocation();
_geo.addEventListener(PermissionEvent.PERMISSION_STATUS, onPermission );
try {
_geo.locationAlwaysUsePermission = true;
_geo.requestPermission();
} catch(e:Error){
onError(e);
}
}
};
private static function onPermission(e:PermissionEvent):void{
trace("GeolocationUtil::onPermission: "+e.status);
};
При первом запуске приложение вызывается и работает. Теперь, если я выйду из приложения, затем изменю разрешение на «никогда» и перезапущу приложение, я увижу, что
_geo.requestPermission();
вызывается, но ответа нет, и я также не получаю диалоговое окно разрешений iOS.
Есть идеи? Большое спасибо!





Система будет запрашивать разрешение только один раз, даже если вы удалите приложение и переустановите его снова, похоже, у него есть кеш системного уровня, Попробуйте перейти на Настройки -> Общие -> Сброс -> Сбросить местоположение и конфиденциальность
Ok. Поэтому лучше всего иметь диалоговое окно следующего содержания: «Вы изменили разрешения на «x», но этому приложению необходимо установить разрешения на «y», чтобы оно работало должным образом». «Правильно?
@zantafio да, но в большинстве случаев пользователь намеренно менял разрешение, поэтому вам действительно нужна четкая причина «для правильной работы». О том, как спроектировать запрос разрешения, вы можете обратиться к официальному руководству Apple: https://developer.apple.com/design/human-interface-guidelines/ios/app-architecture/requesting-permission/
Да, ну, это научное приложение для сбора данных, которым также пользуются стажеры. Предыдущий опыт показал, что это помогает сохранять твердость...
Правильно, пользователя спросят только один раз. Вы можете проверить, было ли отклонено разрешение, и действовать соответствующим образом.