美文网首页
验证权限是否开启

验证权限是否开启

作者: LX2014 | 来源:发表于2018-07-15 09:28 被阅读40次

1,音乐库访问权限

有两种方式:

//直接获取权限,如果没有弹出过系统的提示框,这里是不会弹出提示框的
MPMediaLibraryAuthorizationStatus status = [MPMediaLibrary authorizationStatus];
//这种方式会,如果没有弹出过系统的提示框,这里会弹出提示框,如果弹出过了不会再弹出
[MPMediaLibrary requestAuthorization:^(MPMediaLibraryAuthorizationStatus status) {
            
}];

注意第一次要获取音乐的权限和数据时,要通过block的形式返回数据。因为如果没有弹出过系统的权限提示框,直接去请求数据,会弹出提示框,但提示框不是同步的,是异步的,数据已经返回了空。

//如果没有调用requestAuthorization:,直接调用下面的代码,会弹出提示框"XXX Would Like to Access Apple Music And Your Media Library",但是在点击之前数据就反回了
  MPMediaQuery *allmp3 = [[MPMediaQuery alloc] init];
    MPMediaPropertyPredicate *albumNamePredicate =
    [MPMediaPropertyPredicate predicateWithValue:[NSNumber numberWithInt:MPMediaTypeMusic] forProperty: MPMediaItemPropertyMediaType];
    [allmp3 addFilterPredicate:albumNamePredicate];
    NSMutableArray *arr = [[NSMutableArray alloc] init];
    for (MPMediaItem *song in [allmp3 items]) {
        // NSString *songTitle = [song valueForProperty: MPMediaItemPropertyTitle];
        NSString *songTitle = song.title;
        NSLog (@"%@, %@, %@", songTitle, song.assetURL,song.artist);
        if (song.title.length && song.assetURL) {
            [arr addObject:song];
        }
    }

所以,在获取数据前需要通过下列方式获取权限:

[MPMediaLibrary requestAuthorization:^(MPMediaLibraryAuthorizationStatus status) {
     if(MPMediaLibraryAuthorizationStatusAuthorized == status) {
          MPMediaQuery *allmp3 = [[MPMediaQuery alloc] init];
    MPMediaPropertyPredicate *albumNamePredicate =
    [MPMediaPropertyPredicate predicateWithValue:[NSNumber numberWithInt:MPMediaTypeMusic] forProperty: MPMediaItemPropertyMediaType];
    [allmp3 addFilterPredicate:albumNamePredicate];
    NSMutableArray *arr = [[NSMutableArray alloc] init];
    for (MPMediaItem *song in [allmp3 items]) {
        // NSString *songTitle = [song valueForProperty: MPMediaItemPropertyTitle];
        NSString *songTitle = song.title;
        NSLog (@"%@, %@, %@", songTitle, song.assetURL,song.artist);
        if (song.title.length && song.assetURL) {
            [arr addObject:song];
        }
    }
     }
      block(arr);  //block返回数据
}];

这样数据的返回形式需要用block方式返回。

另一种方式是进入引用后就去请求权限,在使用的地方直接判断是否有权限即可。

//appDelegate中启动就获取权限
[MPMediaLibrary requestAuthorization:^(MPMediaLibraryAuthorizationStatus status) {
            
}];
//在获取数据前,判断权限
MPMediaLibraryAuthorizationStatus status = [MPMediaLibrary authorizationStatus];

相关文章

  • 验证权限是否开启

    1,音乐库访问权限 有两种方式: 注意第一次要获取音乐的权限和数据时,要通过block的形式返回数据。因为如果没有...

  • 初识 Token

    最简单通用的权限校验模型: 验证是否合法。 验证是否有效。 验证 token 对应的权限。微信小程序中的令牌检验 ...

  • ios 判断用户是否开启权限---并跳转设置

    ios 判断用户是否开启权限---并跳转“系统设置” 1.判断 访问相册 或 相机 权限是否开启 2.检测是否开启...

  • sa-token 之权限验证

    权限验证 核心思想 所谓权限验证,验证的核心就是当前账号是否拥有一个权限码有:就让你通过、没有:那么禁止访问再往底...

  • Android通知权限判断以及跳转到权限设置界面(兼容8.0及以

    当APP中有推送的时候就要考虑到通知权限是否用户有没有开启权限的情况,下面就是对判断用户是否开启权限并且跳转到权限...

  • 设置远程连接 mysql

    进入 mysql 数据库 修改权限 更新权限 验证是否成功 重启服务

  • 优惠券数据

    是否需要权限验证 否 请求头 | | 必选 | 类型 | 说明 ||:-------------:|:------...

  • 特惠预约数据

    是否需要权限验证 否 请求头 | | 必选 | 类型 | 说明 ||:-------------:|:------...

  • 特惠预约

    是否需要权限验证 否 请求头 | | 必选 | 类型 | 说明 ||:-------------:|:------...

  • 优惠券领取

    是否需要权限验证 否 请求头 | | 必选 | 类型 | 说明 ||:-------------:|:------...

网友评论

      本文标题:验证权限是否开启

      本文链接:https://www.haomeiwen.com/subject/nxmwuftx.html