iTunes Match + AVplayer + MPMediaQuery not working



我正在开发一个应用程序,使用AVPlayer, MPMediaItem和MPMediaQuery。只要Itunes匹配,它就能工作。我们从一个MPMediaQuery开始,然后我们执行一些过滤,留下一些MPMediaItems,然后我们一直使用AVPlayer,因为:1.-我们也在播放歌曲时播放噪音2.-我们需要订阅播放/停止事件从ipod。

所有这些功能目前都在工作,除非ipod库已启用itunes匹配。即使AVPlayer状态是播放,也没有声音。很明显,它不会触发从iCloud下载歌曲。

到目前为止,我对itunes match的所有信息都是这篇文章:MPMediaItem和iTunes匹配

说明你可以通过使用MPMusicPlayerController播放调用来触发下载。由于上述原因,我们不能使用这个类来控制我们自己的玩家。

对于如何解决这个问题,我有两个想法:a .找到一种方法来检查歌曲是否已经下载并可以在库中使用AVPlayer播放。如果歌曲不可用,让用户知道我们不支持不可用的歌曲。B.想办法在歌曲成为下一个播放项目之前触发它的下载。

我仍然找不到如何实现任何这些解决方案,我没有找到任何相关的文档,所以我提交了我的应用程序与警告信息,以防止用户使用此应用程序,如果他们使用itunes match

在iOS 6及以上版本中,你可以使用[[item valueForProperty:MPMediaItemPropertyIsCloudItem] boolValue]来检查一个项目是否已经下载。

。找到一种方法来检查歌曲是否已经下载并可用在库中使用AVPlayer播放。如果歌曲不可用让用户知道我们不支持不可用的歌曲。

这不是完美的,但它在大多数情况下是有效的。从iTunes Match下载的歌曲将免费提供数字版权管理。所以你可以检查资产DRM标志,如果它是不可导出的,那么它需要下载。使用有声书/pod有可能出现误报,但你基本上是安全的。

MPMediaItem* item
NSURL* url = [item valueForProperty:MPMediaItemPropertyAssetURL];
AVURLAsset* assetToLoad = [[AVURLAsset alloc] initWithURL:url options:nil];
bool protectedCon = assetToLoad.hasProtectedContent;
bool exportable = true;
if (gApp.mSysVersionInt >= 5) {
    exportable = assetToLoad.exportable;    //4.3+
}

B。想办法在播放之前触发歌曲下载成为下一个播放的项目。

您可以尝试在静音MPMusicPlayerController中这样做,但是没有办法跟踪歌曲何时下载,有时需要很长时间

相关内容

  • 没有找到相关文章

最新更新