我ALAssetsLibrary
用于访问我的应用程序中的照片,当应用程序首次尝试访问照片时,它会请求位置服务的权限。我想为该警报提供自定义消息,例如 App 想访问您的照片而不是位置服务。
我在谷歌上搜索了很多,也搜索了堆栈溢出,在用户拒绝位置服务权限但没有自定义消息权限后,我找到了解决方案,我在 InstaCollage、Pic Jointer 等许多应用程序中都看到了这一点。
我ALAssetsLibrary
用于访问我的应用程序中的照片,当应用程序首次尝试访问照片时,它会请求位置服务的权限。我想为该警报提供自定义消息,例如 App 想访问您的照片而不是位置服务。
我在谷歌上搜索了很多,也搜索了堆栈溢出,在用户拒绝位置服务权限但没有自定义消息权限后,我找到了解决方案,我在 InstaCollage、Pic Jointer 等许多应用程序中都看到了这一点。
你不能(正如你在搜索中看到的那样)。这是一条系统消息,您无法覆盖或避免它。换句话说:没有就是没有。
从 iOS 6 开始,您可以将自定义文本添加到警报对话框(以指定您正在对数据执行的操作等)。要设置此描述文本,请添加
NSPhotoLibraryUsageDescription
键 Info.plist 并将值设置为要显示的文本。
来自开发者文档:
NSPhotoLibraryUsageDescription (String - iOS) 描述了应用访问用户照片库的原因。当系统提示用户允许访问时,此字符串将显示为对话框的一部分。iOS 6.0 及更高版本支持此密钥。
你可以做一件事..
只需在您的应用程序加载时检查您的应用程序位置服务设置并显示您的自定义消息
#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];
}
}
或者
-(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];
}
}