一般的なMPMediaPicker
がios13(ipad air 2、iphone SE)で動作しなくなったようです
そこからコピーした1:1の例では、メディアピッカーが表示されません https://developer.Apple.com/documentation/mediaplayer/displaying_a_media_picker_from_your_app
機能を取り戻すためのヒントはありますか?
このようにMPMediaPickerController
を使って使う場合
musicPickerView = [[UIView alloc] initWithFrame:fullScreenRect];
musicPickerView.alpha = 0.0f;
musicPicker = [[MPMediaPickerController alloc] initWithMediaTypes:MPMediaTypeMusic];
musicPicker.showsCloudItems = false;
musicPicker.showsItemsWithProtectedAssets = false;
musicPicker.delegate = self;
musicPicker.allowsPickingMultipleItems = false;
musicPicker.Prompt = NSLocalizedString(@"Select a song", @"Select a song");
musicPicker.view.frame = musicPickerView.bounds;
[self addChildViewController:musicPicker];
[musicPickerView addSubview:musicPicker.view];
[self.view addSubview:musicPickerView];
[musicPicker didMoveToParentViewController:self];
[self fadeInMusicPicker:true];
デリゲートはまったく呼び出されません。ログは表示されず、ネイティブアラートのみが表示されます。
私はこのネイティブのオルターを入手しています
内部エラー
リクエストされたアプリ拡張機能が見つかりませんでした
[キャンセル]
Apple音楽アプリがそのデバイスにインストールされていない場合に問題が発生するようです。Apple音楽アプリがインストールされていますか?
メディアライブラリの権限をinfo.plistに設定しましたか? NSAppleMusicUsageDescription
以前のiOSバージョンとは異なり、iOS 13
MPMediaPicker
にはユーザー認証が必要です。したがって、最初に認証を処理し、ユーザーが権限を付与した場合はピッカーを表示する必要があります。あなたのコードは次のようになります、
MPMediaLibraryAuthorizationStatus authorizationStatus = MPMediaLibrary.authorizationStatus;
switch (authorizationStatus)
{
case MPMediaLibraryAuthorizationStatusAuthorized:
{
[self showPickerView];
break;
}
case MPMediaLibraryAuthorizationStatusNotDetermined:
{
// Not yet authorized - request it from the system
[MPMediaLibrary requestAuthorization:^(MPMediaLibraryAuthorizationStatus authorizationStatus)
{
if ( authorizationStatus == MPMediaLibraryAuthorizationStatusAuthorized )
{
dispatch_async(dispatch_get_main_queue(), ^{
[self showPickerView];
});
}
else
{
PLog(@"The Media Library was not authorized by the user");
}
}];
break;
}
case MPMediaLibraryAuthorizationStatusRestricted:
case MPMediaLibraryAuthorizationStatusDenied:
{
// user has previously denied access. Ask again with our own alert that is similar to the system alert
// then take them to the System Settings so they can turn it on for the app
break;
}
}
-(void)showPickerView
{
musicPickerView = [[UIView alloc] initWithFrame:fullScreenRect];
musicPickerView.alpha = 0.0f;
musicPicker = [[MPMediaPickerController alloc] initWithMediaTypes:MPMediaTypeMusic];
musicPicker.showsCloudItems = false;
musicPicker.showsItemsWithProtectedAssets = false;
musicPicker.delegate = self;
musicPicker.allowsPickingMultipleItems = false;
musicPicker.Prompt = NSLocalizedString(@"Select a song", @"Select a song");
musicPicker.view.frame = musicPickerView.bounds;
[self addChildViewController:musicPicker];
[musicPickerView addSubview:musicPicker.view];
[self.view addSubview:musicPickerView];
[musicPicker didMoveToParentViewController:self];
[self fadeInMusicPicker:true];
}