【问题标题】:Objective-C MPMediaItem with null URL具有空 URL 的 Objective-C MPMediaItem
【发布时间】:2017-08-08 23:12:58
【问题描述】:

我有一个项目使用MPMediaPickerController 从媒体播放器中选择音频文件。但是,当尝试存储它的 URL 时,我只得到了 null 返回。我的代码如下:

- (void)showMediaPicker:(NSString *)title {
    MPMediaPickerController *picker = [[MPMediaPickerController alloc] initWithMediaTypes:MPMediaTypeAny];
    picker.delegate = self;
    picker.prompt = title;
    picker.allowsPickingMultipleItems = NO;
    picker.showsCloudItems = NO;
    [self.viewController presentViewController:picker animated:YES completion:NULL];
}

- (void)mediaPicker: (MPMediaPickerController *)mediaPicker didPickMediaItems:(MPMediaItemCollection *)mediaItemCollection {
    MPMediaItem *item = [mediaItemCollection.items firstObject];
    NSURL *assetURL = [item valueForProperty:MPMediaItemPropertyAssetURL];//returning null
    NSString *type = [self contentTypeForFile:assetURL.lastPathComponent];
    NSString *title = [item valueForProperty:MPMediaItemPropertyTitle];
    [self callbackWithName:title type:type url:assetURL];
}

无论出于何种原因,我的*assetURL 在从设备库中选择单个音频项时为零。我能找到的关于这个问题的唯一答案通常与从 MediaPicker 选择云项目时的 url 是 null 相关。但是,如上所示,我设置了showCloudItems = NO

我将不胜感激任何帮助;如果您需要任何其他信息,请告诉我!

【问题讨论】:

  • item的值是多少?
  • NSLog(@"%@", item) 结果: 7217559012103102902
  • NSURL *assetURL = (NSURL*)[item valueForProperty:MPMediaItemPropertyAssetURL];有什么作用吗?
  • 不幸的是,我得到了同样的结果

标签: objective-c xcode media-player mpmediaitem


【解决方案1】:

事实证明,来自“iCloud 音乐库”的音乐受 DRM 保护,因此,当在 MPMediaPickerController 中选择时,assetURL 为空。简单的解决方法是从“音乐”应用程序的设置中关闭“iCloud 音乐库”设置。我希望picker.showsCloudItems = NO; 可以防止这种情况发生,但显然我错了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-11
    • 1970-01-01
    • 2016-09-11
    • 1970-01-01
    • 1970-01-01
    • 2014-09-30
    • 2012-01-03
    • 1970-01-01
    相关资源
    最近更新 更多