记录 iOS 各种跳转到系统应用
MARK
----拨打电话
NSString* phoneVersion = [[UIDevice currentDevice] systemVersion]; if (phoneVersion.floatValue < 10.0) { //iOS10 以前使用 [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"Tel://123456"]]; } else { //iOS10 以后使用 [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"Tel://123456"] options:@{} completionHandler:nil]; }
只要给出对应的URL,系统就可以直接跳
//拨打电话 [NSURL URLWithString:@"tel://123456"] //发送短信 [NSURL URLWithString:@"sms://123456"] //发邮件 [NSURL URLWithString:@"mailto://123456@163.com"] //前往App Store [NSURL URLWithString:@"itms-apps://"] //使用Safari访问网址 [NSURL URLWithString:@"http://www.baidu.com"] //前往iBook [NSURL URLWithString:@"itms-books://"] //发起Facetime [NSURL URLWithString:@"facetime://"] //8、调用 地图Map [NSURL URLWithString:@"maps://"] //9、调用 Music [NSURL URLWithString:@"music://"] //10、跳转到系统设置相关界面 // iOS10 以前 [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=LOCATION"] options:@{} completionHandler:nil]; // iOS10 以后 [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"App-Prefs:root=LOCATION"] options:@{} completionHandler:nil];
#pragma mark - 以下为跳转设置的对应方式
//设置 [NSURL URLWithString:UIApplicationOpenSettingsURLString] //iCloud [NSURL URLWithString:@"App-Prefs:root=CASTLE"] //WIFI [NSURL URLWithString:@"App-Prefs:root=WIFI"] //蓝牙 [NSURL URLWithString:@"App-Prefs:root=Bluetooth"] //蜂窝数据 [NSURL URLWithString:@"App-Prefs:root=MOBILE_DATA_SETTINGS_ID"] //通知 [NSURL URLWithString:@"App-Prefs:root=NOTIFICATIONS_ID"] //通用 [NSURL URLWithString:@"App-Prefs:root=General"] //关于手机 [NSURL URLWithString:@"App-Prefs:root=General&path=About"] //辅助功能 [NSURL URLWithString:@"App-Prefs:root=General&path=ACCESSIBILITY"] //日期与时间 [NSURL URLWithString:@"App-Prefs:root=General&path=DATE_AND_TIME"] //键盘设置 [NSURL URLWithString:@"App-Prefs:root=General&path=Keyboard"] //显示与亮度 [NSURL URLWithString:@"App-Prefs:root=DISPLAY"] //墙纸设置 [NSURL URLWithString:@"App-Prefs:root=Wallpaper"] //声音 [NSURL URLWithString:@"App-Prefs:root=Sounds"] //Siri [NSURL URLWithString:@"App-Prefs:root=Siri"] //隐私 [NSURL URLWithString:@"App-Prefs:root=Privacy"] //定位 [NSURL URLWithString:@"App-Prefs:root=Privacy&path=LOCATION"] //电池电量 [NSURL URLWithString:@"App-Prefs:root=BATTERY_USAGE"] //iTunes Store 与 App Store [NSURL URLWithString:@"App-Prefs:root=STORE"]
-----------------------
顺便记录一下获取权限的方法
--判断定位权限
// 判断是否有权限定位 BOOL open = [CLLocationManager locationServicesEnabled] && [CLLocationManager authorizationStatus] == kCLAuthorizationStatusDenied; // 1表示没打开定位 0 表示打开
--判断图库权限
导入头文件#import<Photos/Photos.h>
PHAuthorizationStatus status = [PHPhotoLibrary authorizationStatus]; if (status == PHAuthorizationStatusRestricted || status == PHAuthorizationStatusDenied) { //无权限 这个时候最好给个提示,用户点击是就跳转到应用的权限设置内 用户动动小手即可允许权限 }
typedef NS_ENUM(NSInteger, PHAuthorizationStatus) {
PHAuthorizationStatusNotDetermined = 0,// 用户尚未做出选择这个应用程序的问候
PHAuthorizationStatusRestricted, // 此应用程序没有被授权访问的照片数据。可能是家长控制权限
PHAuthorizationStatusDenied, // 用户已经明确否认了权限的访问
PHAuthorizationStatusAuthorized //用户已经授权应用访问照片数据
} PHOTOS_AVAILABLE_IOS_TVOS(8_0, 10_0);
--判断相机权限
#import <AVFoundation/AVCaptureDevice.h> AVAuthorizationStatus authStatus = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeVideo]; if (authStatus == AVAuthorizationStatusRestricted || authStatus ==AVAuthorizationStatusDenied) { //无权限 }
typedefNS_ENUM(NSInteger,AVAuthorizationStatus) {AVAuthorizationStatusNotDetermined=0,// 系统还未知是否访问,第一次开启相机时AVAuthorizationStatusRestricted,// 受限制的AVAuthorizationStatusDenied,//不允许AVAuthorizationStatusAuthorized// 允许状态}NS_AVAILABLE_IOS(7_0) __TVOS_PROHIBITED;
--判断麦克风权限
#import <AVFoundation/AVCaptureDevice.h> AVAuthorizationStatus authStatus = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeAudio]; if (authStatus == AVAuthorizationStatusRestricted || authStatus ==AVAuthorizationStatusDenied) { //无权限 }
--判断推送权限
#define IOS8 ([[[UIDevice currentDevice] systemVersion] doubleValue] >=8.0 ? YES : NO) if (IOS8) { //iOS8以上包含iOS8 if ([[UIApplication sharedApplication] currentUserNotificationSettings].types ==UIUserNotificationTypeNone) { NSLog(@"没有开启"); }
typedef NS_OPTIONS(NSUInteger, UIUserNotificationType) {
UIUserNotificationTypeNone = 0, // 用户禁止了推送
UIUserNotificationTypeBadge = 1 << 0, // 用户开启了推送角标
UIUserNotificationTypeSound = 1 << 1, // 用户开启了推送提示音
UIUserNotificationTypeAlert = 1 << 2, // 用户开启了通知栏提醒
} NS_ENUM_DEPRECATED_IOS(8_0, 10_0, "Use UserNotifications Framework's UNAuthorizationOptions") __TVOS_PROHIBITED;