2017-08-08 11 views
0

MPMediaPickerControllerを使用してMedia Playerからオーディオファイルを選択するプロジェクトがあります。しかし、URLを保存しようとすると、nullが返されます。私のコードは、以下に見られることができます。Objective-C MPMediaItem nullのURL

- (void)showMediaPicker:(NSString *)title { 
    MPMediaPickerController *picker = [[MPMediaPickerController alloc] initWithMediaTypes:MPMediaTypeAny]; 
    picker.delegate = self; 
    picker.prompt = title; 
    picker.allowsPickingMultipleItems = NO; 
    picker.showsCloudItems = NO; 
    [self.viewController presentViewController:picker animated:YES completion:NULL]; 
} 

- (void)mediaPicker: (MPMediaPickerController *)mediaPicker didPickMediaItems:(MPMediaItemCollection *)mediaItemCollection { 
    MPMediaItem *item = [mediaItemCollection.items firstObject]; 
    NSURL *assetURL = [item valueForProperty:MPMediaItemPropertyAssetURL];//returning null 
    NSString *type = [self contentTypeForFile:assetURL.lastPathComponent]; 
    NSString *title = [item valueForProperty:MPMediaItemPropertyTitle]; 
    [self callbackWithName:title type:type url:assetURL]; 
} 

を何らかの理由で、私の*assetURLは、デバイスのライブラリから単一のオーディオ項目を選択するとnilです。この問題に関して私が見つけることができる唯一の答えは、雲の項目がMediaPickerから選択されたときに、URLがnullになることです。しかし、上記のように、私はshowCloudItems = NOを設定しました。

私は非常に助けていただければ幸いです。追加情報が必要な場合はお知らせください。

+0

'item'の値は何ですか? –

+0

のNSLog(@ "%@"、項目)の結果で: 7217559012103102902 –

+0

'NSURL * assetURL =(NSURL *)項目valueForProperty:MPMediaItemPropertyAssetURL]ん。'任意の効果がありますか? –

答えて

0

「iCloudミュージックライブラリ」からの音楽はDRMで保護されているため、MPMediaPickerControllerで選択すると、assetURLはnullのままです。簡単な修正は、「音楽」アプリの設定内から「iCloudミュージックライブラリ」設定をオフにすることでした。私はこれを防ぐためにpicker.showsCloudItems = NO;が期待されますが、明らかに私は間違っていました。

関連する問題