我有一个应用程序,它使用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匹配下载的方法。
发布于 2011-12-05 23:24:58
我发现了一些东西,但不是很好。如果您选择要通过iPod播放器播放的歌曲,那么这将触发下载。您可以使用iPod播放器访问MPMusicPlayerController。
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];没有反馈这是否真的启动下载,或在下载的进度,但该项目将开始下载,如果您的连接良好,它将在第一次播放(否则你可以垃圾邮件播放,它将有时间开始)。
发布于 2012-01-06 15:34:53
我刚刚收到苹果公司关于这个问题的回复(我使用了我的一次技术支持事件)。
据苹果公司称,iOS SDK目前没有提供任何从iCloud下载的API。我被指示通过苹果的bug报告工具为这个特性提交一个增强请求。我鼓励其他人也这样做。
考虑到iCloud是iOS 5的定义特性之一,苹果确实应该为从iOS下载音频资源提供编程支持。
发布于 2013-03-10 21:09:26
上面的链接显示了如何使用iOS 6中引入的属性来查看MPMediaItem是否在云中。
MPMediaItemPropertyIsCloudItem
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一起添加的代码。下面是这个宏。
#define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending)不过,据我所知,您还是无法启动下载。
https://stackoverflow.com/questions/8145509
复制相似问题