首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MPMediaItem和iTunes匹配

MPMediaItem和iTunes匹配
EN

Stack Overflow用户
提问于 2011-11-16 01:23:51
回答 4查看 9.3K关注 0票数 30

我有一个应用程序,它使用iPod库API访问iOS中的歌曲数据库。随着iTunes匹配的发布,任何不在设备上的歌曲都将无法加载。有没有办法让我下载这首歌?也许使用新的iCloud API?

编辑:要明确的是,我不是在问如何使用下载与iTunes匹配的歌曲。iOS SDK允许通过MPMediaQuery/MPMediaItems访问iPod库。在iOS设备上,支持iTunes匹配的歌曲在iTunes匹配库中,但设备上的非本地歌曲通过MPMediaQuery返回,但是MPMediaItems的“可导出”标志设置为false。当我在音乐应用程序中访问这些歌曲时,它们会自动下载。我想通过MPMediaItem触发同样的自动下载。

我在iTunes Match中看到了作为iCloud的一部分的条目,还有iOS 5 SDK的一个新的iCloud部分。然而,据我所知,我只能得到我的应用程序上传的数据。我希望有一种通过MPMediaItem或者通过iCloud使用URL来触发iTunes匹配下载的方法。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-12-05 23:24:58

我发现了一些东西,但不是很好。如果您选择要通过iPod播放器播放的歌曲,那么这将触发下载。您可以使用iPod播放器访问MPMusicPlayerController。

代码语言:javascript
复制
MPMusicPlayerController *mDRMAudioPlayer;
mDRMAudioPlayer = [MPMusicPlayerController iPodMusicPlayer];

MPMediaQuery *assetQuery = [[MPMediaQuery alloc] init];
NSNumber *persistentID = [mediaItem valueForProperty: MPMediaItemPropertyPersistentID];
MPMediaPropertyPredicate *predicate = [MPMediaPropertyPredicate predicateWithValue: persistentID 
                                                                       forProperty: MPMediaItemPropertyPersistentID];
[assetQuery addFilterPredicate: predicate];

[mDRMAudioPlayer setQueueWithQuery: assetQuery];
[mDRMAudioPlayer play];

没有反馈这是否真的启动下载,或在下载的进度,但该项目将开始下载,如果您的连接良好,它将在第一次播放(否则你可以垃圾邮件播放,它将有时间开始)。

票数 15
EN

Stack Overflow用户

发布于 2012-01-06 15:34:53

我刚刚收到苹果公司关于这个问题的回复(我使用了我的一次技术支持事件)。

据苹果公司称,iOS SDK目前没有提供任何从iCloud下载的API。我被指示通过苹果的bug报告工具为这个特性提交一个增强请求。我鼓励其他人也这样做。

考虑到iCloud是iOS 5的定义特性之一,苹果确实应该为从iOS下载音频资源提供编程支持。

票数 7
EN

Stack Overflow用户

发布于 2013-03-10 21:09:26

MPMediaItem / iCloud或DRM受保护

上面的链接显示了如何使用iOS 6中引入的属性来查看MPMediaItem是否在云中。

MPMediaItemPropertyIsCloudItem

代码语言:javascript
复制
BOOL isCloud = FALSE;

if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"6.0")) {
    NSNumber *isCloudNumber = [mediaItem valueForProperty:MPMediaItemPropertyIsCloudItem];
    isCloud = [isCloudNumber boolValue];
}
if (isCloud) {
    DebugLog(@"Cloud Asset URL: %@", assetURL);
}

即使用宏来确保只有iOS 6使用与iOS 6一起添加的代码。下面是这个宏。

代码语言:javascript
复制
#define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v)  ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending)

不过,据我所知,您还是无法启动下载。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8145509

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档