Il semble que le général MPMediaPicker
ne fonctionne plus sur ios13 (ipad air 2, iphone SE)
L'exemple 1: 1 copié à partir de là ne montre pas le sélecteur de média https://developer.Apple.com/documentation/mediaplayer/displaying_a_media_picker_from_your_app
Des conseils pour récupérer des fonctionnalités ??
Lors de l'utilisation de MPMediaPickerController
comme ceci
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];
Le délégué n'est pas du tout invoqué. Aucun journal n'est affiché, seule l'alerte native.
Je reçois ce altert natif
Erreur interne
L'extension d'application demandée est introuvable
[Annuler]
Cela semble être le problème lorsque l'application musicale Apple musique n'est pas installée sur cet appareil. Quelqu'un connaît-il un moyen fiable de savoir si Apple l'application musicale est installée?
avez-vous défini l'autorisation pour la médiathèque dans votre info.plist? NSAppleMusicUsageDescription
De iOS 13
MPMediaPicker
autorisation utilisateur requise, contrairement à la version iOS antérieure. Vous devez donc d'abord gérer l'authentification, puis afficher le sélecteur si l'utilisateur a accordé l'autorisation. Votre code sera comme suit,
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];
}