【问题标题】:MPMediaItemPropertyAssetURL returning null only for iPhone 5sMPMediaItemPropertyAssetURL 返回 null 仅适用于 iPhone 5s
【发布时间】:2014-02-07 07:47:14
【问题描述】:

我一直在使用以下代码从 MPMediaItemPickerController 返回的 MPMediaItem 对象中提取资产 url,以便我可以将音乐文件从用户 iPhone iTunes 音乐库复制到文档文件夹进行处理,但在 iPhone 5s 上我总是从 MPMediaItemPropertyAssetURL 获取空值,但是当我在 iPhone 4 或 iPhone 5 上运行相同的代码时,它应该返回正确的 url。

- (void) mediaPicker: (MPMediaPickerController *) mediaPicker didPickMediaItems: (MPMediaItemCollection *) mediaItemCollection {

    [self dismissViewControllerAnimated:YES completion:nil];

        if(mediaItemCollection){
           MPMediaItem *mediaItem = (MPMediaItem *)[mediaItemCollection.items objectAtIndex: 0];
           NSString *songTitle = [mediaItem valueForProperty: MPMediaItemPropertyTitle];
           NSLog(@"songtitle: %@", songTitle);
           NSURL *assetURL = [mediaItem valueForProperty: MPMediaItemPropertyAssetURL];
           NSLog(@"%@", assetURL);
        }

}

我已尝试从有效架构中删除 arm64,只为 armv7 和 armv7s 构建,但这并没有解决这个问题。

有谁知道为什么会发生这种情况以及我可以如何解决它或者是否有可以使用的解决方法?我需要能够将音乐从 iPhone 的音乐库复制到文档文件夹,以便我可以为 dj 应用程序正确处理音乐。

谢谢

【问题讨论】:

  • 不幸的是,这正是我已经在使用的代码,它可以在除 iPhone 5s 之外的所有设备上运行。下面的代码在 iPhone 5s 上总是导致一个 NULL 的assetURL 变量。 NSURL *assetURL = [item valueForProperty:MPMediaItemPropertyAssetURL];我想它一定与 64 位架构有关,但我无法想象为什么会出现问题......谢谢
  • 我也遇到了这个问题,但使用的是 iPhone 5。MPMediaItemPropertyAssetURL 总是为从设备上的查询返回的曲目返回 nil - 所以它必须在那里(我可以播放它来自 iPod)
  • 嗨 Jonny,我发现这首歌实际上不在我的设备上。它列在媒体库中,但实际上仍在 iCloud 中。将歌曲下载到设备后,问题就解决了。我希望这对你也有帮助。
  • @GregEllis 您应该添加您的评论作为答案,这完全为我解决了:) 很高兴知道是否有一种方法可以在没有 URL 的情况下从 iCloud 流式传输数据

标签: ios iphone objective-c xcode5


【解决方案1】:

我们可以使用

添加不显示 iCloud 项目的过滤器
[mediaPicker setShowsCloudItems:NO];

【讨论】:

    【解决方案2】:

    我发现问题在于我试图获取 MPMediaItemPropertyAssetURL 属性的歌曲实际上不在我的设备上。它列在媒体库中,但实际上仍在 iCloud 中。将歌曲下载到设备后,问题就解决了。尽管我不喜欢回答自己的问题,但我采纳了 Jeroen 的建议,希望它能帮助其他人。

    【讨论】:

    • 谢谢。真的是一个很好的答案
    • @Greg Ellis 我直接从 iTunes 购买了 3 张专辑,然后下载到我的 iPhone 上。对于某些歌曲,我的 URL 值为零。所以这仍然很奇怪。
    • 如果歌曲是受保护的资产,它也会返回一个 nil 值。您可以通过 [mediaItem hasProtectedAsset] 进行检查
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-09
    • 1970-01-01
    • 2015-12-17
    相关资源
    最近更新 更多