5

MPMediaPickerControllerDelegateを使用して音楽の選択リストを提示した最近の記事に従います。私はこのコードを使用していますSwift 3 iOS10を使用してMPMediaPickerControllerDelegate用のView Controllerで音楽ライブラリを表示するにはどうすればいいですか?

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

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

ない:

しかし
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) 
     } 
} 

私がいることを発見した

チュートリアルでは、次のURLで発見されました作業。残念ながら、スウィフト3の提案自動ソリューションは動作しません。次のいずれか

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

さらに、で見つかったiOSの10のベータ版のリリースノート、:

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

、18の10ページと言います

MPMediaPickerControllerオブジェクトが期待どおりに表示されないことがあります。

私はこの問題を自分で解決するために多くの時間を費やしてきましたが、成功することはありませんでした。

提案がありますか?

+0

リンクはベータ版のドキュメントです。 Appleの公式ドキュメントは常に使用するべきです。 iOS 10はリリースされ、ベータ版からリリースされました。 – JAL

+0

@George Lee、私は最近、[appstore](https://itunes.apple.com/in/app/playmates./id1156484061?mt=8)にMPMediaPickerControllerDelegate用のビューコントローラを備えたミュージックライブラリを提供するアプリケーションを公開していますSwift 3を使用してください。同じ要件を満たしているかどうかを確認してください。 – pkc456

+0

@ pkc456のような詳細もお手伝いできます。この記事でコードを共有できますか? –

答えて

16

は段階を通過します:

  1. 追加 'NSAppleMusicUsageDescriptionのプライバシー権のためのあなたのInfo.plistに。
  2. お使いのiPhoneで音楽アプリを使用できることを確認してください。シミュレータでは動作しません。
+0

plistキー 'NSAppleMusicUsageDescription'は質問のコードを正しく実行するためには必要ありません。 – JAL

+2

@ JAL新しいiOS10では、空白の表示が出ます。 iPhone6 Plus、iOS10でテスト済み。 –

+0

この回答は正しいです。 info.plistにNSAppleMusicUsageDescriptionを追加すると、MPMediaPickerDelegateが音楽リストを表示することができます。それはプライバシー - メディアライブラリの使用法タイプ:文字列、値:はいを持ち出すでしょう。 –

3

最近のコメントを私の最新のアプリnamed playmatesで使用しています。私はあなたと作業コードを共有しています。私は自明のコードを書いた。

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) 
      } 
} 

私はあなたのコードでdiscripenciesの下が見つかりました:

  • 使用self.presentないself.presentViewController
  • mediaPickerのグローバルインスタンスを作成する必要はありません。デリゲートメソッドの場合と同様に、インスタンスを取得していますMPMediaPickerController
+0

これでも、iOS10で使用するような曲を選択することはできません(選択する曲のリストを表示する)。私の指示が間違っている場合を除きます。 –

+0

Info.plistに 'NSAppleMusicUsageDescription'を追加してください。 – pkc456

関連する問題