5

Próbuję śledzić ostatni wpis na temat korzystania z MPMediaPickerControllerDelegate, aby przedstawić listę wyboru muzyki.Jak udostępnić bibliotekę muzyczną za pomocą kontrolera widoku dla obiektu MPMediaPickerControllerDelegate przy użyciu Swift 3 iOS10?

Tutorial znajduje się pod następującym adresem URL:

http://www.justindoan.com/tutorials/

Używam tego kodu:

import UIKit 
import MediaPlayer 

class ViewController: UIViewController, MPMediaPickerControllerDelegate { 

    var mediapicker1: MPMediaPickerController! 

    override func viewDidLoad() { 
     super.viewDidLoad() 


     let mediaPicker: MPMediaPickerController = MPMediaPickerController.self(mediaTypes:MPMediaType.music) 
     mediaPicker.allowsPickingMultipleItems = false 
     mediapicker1 = mediaPicker 
     mediaPicker.delegate = self 
     self.presentViewController(mediapicker1, animated: true, completion: nil) 
     } 
} 

Jednak odkryłem, że:

self.presentViewController(mediapicker1, animated: true, completion: nil) 

nie praca. Niestety, zasugerował automatyczne rozwiązanie Swift 3 nie działa albo:

self.present(mediapicker1, animated: true, completion: nil) 

Ponadto iOS 10 Beta Release Notes znaleźć na stronie:

https://www.scribd.com/doc/315770725/IOS-10-Beta-Release-Notes

mówi na stronie 10 18,

Obiekt MPMediaPickerController może nie wyświetlać się zgodnie z oczekiwaniami.

Spędziłem dużo czasu, szukając rozwiązania tego problemu na własną rękę bez powodzenia.

Wszelkie sugestie?

+0

Twój link jest odzwierciedleniem dokumentacji beta. Powinieneś zawsze używać oficjalnej dokumentacji Apple. iOS 10 jest wydany i jest w wersji beta. – JAL

+0

@George Lee, Niedawno publikuję aplikację na [appstore] (https://itunes.apple.com/in/app/playmates./id1156484061?mt=8), która przedstawia bibliotekę muzyczną z kontrolerem widoku dla MPMediaPickerControllerDelegate używając Swift 3. Sprawdź, czy masz takie same wymagania, to pomogę ci szczegółowo (również z kodem) – pkc456

+0

@ pkc456, co byłoby miłe. Czy możesz udostępnić kod w tym poście? –

Odpowiedz

16

Przejdź przez kolejne etapy:

  1. Dodaj 'NSAppleMusicUsageDescription' do Info.plist dla władzy prywatności.
  2. Upewnij się, że aplikacja Muzyka jest dostępna na Twoim iPhonie. To nie zadziała w symulatorze.
+0

Klucz plist "NSAppleMusicUsageDescription" nie jest niezbędny do prawidłowego działania kodu w pytaniu. – JAL

+2

@JAL W nowym iOS10 pojawi się pusty widok. Testowane w iPhone6 ​​Plus, iOS10. –

+0

Ta odpowiedź jest poprawna. Dodanie NSAppleMusicUsageDescription w info.plist pozwala MPMediaPickerDelegate na wyświetlenie listy muzyki. Pojawi się Prywatność - Wykorzystanie biblioteki medialnej Typ: Ciąg, Wartość: Tak. –

3

Zgodnie z naszą dyskusją nad komentarzami, ostatnio używam MPMediaPickerController w mojej najnowszej aplikacji named playmates. Dzielę się z tobą roboczym kodem. Napisałem objaśniający kod.

import MediaPlayer 

class viewControllerName: UIViewController,MPMediaPickerControllerDelegate { 

//Below is Inaction for picking music from media library 
    @IBAction func btnMediaPickerAction(_ sender: UIButton) {   
      let mediaPicker: MPMediaPickerController = MPMediaPickerController.self(mediaTypes:MPMediaType.music) 
      mediaPicker.delegate = self 
      mediaPicker.allowsPickingMultipleItems = false 
      self.present(mediaPicker, animated: true, completion: nil) 
     } 

// MPMediaPickerController Delegate methods 
    func mediaPickerDidCancel(_ mediaPicker: MPMediaPickerController) { 
      self.dismiss(animated: true, completion: nil) 
     } 

     func mediaPicker(_ mediaPicker: MPMediaPickerController, didPickMediaItems mediaItemCollection: MPMediaItemCollection) { 
      self.dismiss(animated: true, completion: nil) 
      print("you picked: \(mediaItemCollection)")//This is the picked media item. 
// If you allow picking multiple media, then mediaItemCollection.items will return array of picked media items(MPMediaItem) 
      } 
} 

znalazłem poniżej discripencies w kodzie:

  • użycie self.present nie self.presentViewController
  • Nie potrzeba stworzenia globalnego wystąpienie z mediaPicker. Tak jak w przypadku metody delegatów, otrzymujesz instancję: MPMediaPickerController
+0

To nadal nie pozwala mi wybrać utworu takiego, jak na to pozwalał (wyświetla listę utworów do wybrania) w iOS10. O ile nie postępuję zgodnie z instrukcjami niepoprawnie. –

+0

Dodaj 'NSAppleMusicUsageDescription' do pliku Info.plist. – pkc456

Powiązane problemy