ALAssetsLibrary оповещение о разрешении пользовательских служб определения местоположения iPhone

Я использую ALAssetsLibrary для доступа к фотографиям в своем приложении, и когда приложения впервые пытаются получить доступ к фотографиям, они запрашивают разрешения для служб определения местоположения. Я хочу дать собственное сообщение для этого предупреждения, например, приложение хотело бы получить доступ к вашим фотографиям, а не к службам определения местоположения.

Я много искал в Google, а также в переполнении стека, и я нашел решения после того, как пользователь отказал в разрешениях для служб определения местоположения, но не для пользовательского сообщения. Я видел это во многих приложениях, таких как InstaCollage, Pic Jointer и т. д.

Pic Jointer Image Alert


person robin.cssoft    schedule 11.02.2013    source источник


Ответы (3)


Вы не можете (как вы, несомненно, видели в своих поисках). Это системное сообщение, и вы не можете переопределить или избежать его. Другими словами: нет значит нет.

person spring    schedule 11.02.2013
comment
приложение Pic Jointer показывает указанное выше предупреждение на изображении, когда мы хотим получить фотографии в первый раз, а не сгенерированные системой, поэтому есть ли способ показать альтернативное предупреждение, как на изображении выше. - person robin.cssoft; 11.02.2013
comment
@robin.cssoft — это системное сообщение. Нет никакого способа обойти это. Это связано с безопасностью, потому что ALAssets может содержать данные о местоположении. Если пользователь отказывает в доступе, вы не можете получить к нему доступ. Вы можете спросить пользователя заранее — до того, как вы попытаетесь получить доступ к библиотеке — и затем сделать что-то на основе этого, но опять же: нет значит нет. - person spring; 11.02.2013

Начиная с iOS 6 вы можете добавить пользовательский текст в диалоговое окно предупреждения (чтобы указать, что вы делаете с данными и т. д.). Чтобы установить этот текст описания, добавьте

NSPhotoLibraryUsageDescription

ключ к Info.plist и установите значение для текста, который вы хотите отобразить.

Из документации разработчика:

NSPhotoLibraryUsageDescription (String — iOS) описывает причину, по которой приложение обращается к библиотеке фотографий пользователя. Когда система предлагает пользователю разрешить доступ, эта строка отображается как часть диалогового окна. Этот ключ поддерживается в iOS 6.0 и более поздних версиях.

person holtmann    schedule 14.02.2013
comment
Просто для пояснения, поскольку имена необработанных ключей не отображаются по умолчанию, «дружественный» текст ключа: Конфиденциальность — Описание использования библиотеки фотографий. Календари, контакты, местоположения и напоминания также начинаются с конфиденциальности - ... - person qix; 23.08.2013

Можешь сделать одно..

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

#import <CoreLocation/CoreLocation.h>

-(void)showAlertForLocationServiceEnabled{


    BOOL locationAllowed = [CLLocationManager locationServicesEnabled];

    if (locationAllowed == NO) {

        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Location Service Disabled!!!" 
                                                        message:@"Location Services is required for this application. Please enable Location Services" 
                                                       delegate:nil 
                                              cancelButtonTitle:@"OK" 
                                              otherButtonTitles:nil];
        [alert show];

    } 
}

or

-(void)checkAndNotifyLocationServiceAvailable{

    if (! ([CLLocationManager locationServicesEnabled]) || ( [CLLocationManager authorizationStatus] == kCLAuthorizationStatusDenied)){

        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Location Service Disabled!!!" message:@"Location Services is required for this application. Please enable Location Services" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; 
        [alert show];


    }

}
person Shamsudheen TK    schedule 13.02.2013