我从iPhone设备上检索了所有音乐和视频.我现在被困在保存到我的应用程序中,我无法从文件中获取原始数据.任何人都可以帮我找到解决方案.这是我用来获取音乐文件的代码.
MPMediaQuery *deviceiPod = [[MPMediaQuery alloc] init];
NSArray *itemsFromGenericQuery = [deviceiPod items];
for (MPMediaItem *media in itemsFromGenericQuery){
//i get the media item here.
}
Run Code Online (Sandbox Code Playgroud)
如何将其转换为NSData?这就是我试图获取数据的原因
audioURL = [media valueForProperty:MPMediaItemPropertyAssetURL];//here i get the asset url
NSData *soundData = [NSData dataWithContentsOfURL:audioURL];
Run Code Online (Sandbox Code Playgroud)
使用它对我来说毫无用处.我得到了来自的数据LocalAssestURL.任何解决方案.提前致谢
我正在查看Apple的文档,我似乎无法找到一种方法来判断MPMediaItem是否是"最喜欢的"曲目.用粉红色的心看下面的截图.
怎么能得到这个属性?我知道,因为它是一个新功能,它的可用性仅限于iOS 8.4或更高版本.
这里有一些代码,我用它来通过音乐选择器从MPMediaItems获取其他属性:
- (void) processMediaItems:(MPMediaItemCollection *)mediaItemCollection
{
//iterate through selected songs
if (mediaItemCollection) {
NSArray *allSelectedSongs = [mediaItemCollection items];
for(MPMediaItem *song in allSelectedSongs)
{
NSURL *songURL = [song valueForProperty:MPMediaItemPropertyAssetURL];
NSNumber *ident = [song valueForProperty:MPMediaEntityPropertyPersistentID];
NSString *identString = [BukketHelper convertULLToNSString:ident];
NSNumber *isCloud = [song valueForProperty:MPMediaItemPropertyIsCloudItem];
}
//do other stuff here
}
Run Code Online (Sandbox Code Playgroud)
有人有想法吗?
我需要使用NSUserDefaults存储的持久ID检索相应的MPMediaItem.我目前的做法是获取所有MPMediaItems,循环遍历它们,并找出与我存储的具有相同持久ID的那个.我认为这是一个非常糟糕的性能,所以有一个现有的方法来获取MPMediaItem与我拥有的持久ID吗?我检查了Apple的文档,但我找不到.
我想在我的应用程序第一次打开时请求音乐库权限。
我的 info.plist 中的隐私是:
隐私 - 媒体库使用说明
和
隐私 - 音乐使用说明
我希望这在我的应用程序委托中完成启动并带有选项,但如果它在我的应用程序的第一个 viewController 的 viewDidLoad 中,那也没关系。