我有一个MPMediaPickerController,显示设备上可用的歌曲,可用于发送给我的应用程序上的其他用户。我已经过滤掉了Cloud项目,但我也想从Apple Music中过滤出已变为“离线可用”的歌曲。

-(void)openMusic:(NSNotification *)notification {

    if ([[notification name] isEqualToString:@"myMusic"]){

        dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 0.75 * NSEC_PER_SEC), dispatch_get_main_queue(), ^{
            MPMediaPickerController *mediaPicker = [[MPMediaPickerController alloc] initWithMediaTypes:MPMediaTypeMusic];
            mediaPicker.delegate = self;
            mediaPicker.allowsPickingMultipleItems = NO;
            mediaPicker.showsCloudItems = NO;
            [self presentViewController:mediaPicker animated:YES completion:nil];
        });

    }


}

当前,它仍显示所有下载的Apple Music曲目。如何过滤掉它们?

最佳答案

根据this answer,如果您使用:
picker.showsCloudItems = NO;
您将获得在音乐应用程序中手动下载歌曲或流式传输并因此缓存了的歌曲的列表。
但是,由于Apple Music songs are DRM protected要只显示本地下载的歌曲,您也需要添加以下行:

picker.showsItemsWithProtectedAssets = NO;

08-26 07:54