私はトップビューコントローラを選択するためのプレイリストのリストを表示するテーブルビューコントローラに設定したスプリットビューコントローラを持っています。最初にアプリケーションが読み込まれると、音楽アクセスの許可が求められます。 Yesと答えると許可されますが、テーブルビューにはプレイリストが表示されません。私は、アプリを殺してもう一度それを実行する必要があります。私は音楽ライブラリの許可を間違った場所に要求していますか?それは、トップビューコントローラのviewWillです。再生リストのクラスで、私が使用しているプレイリストを貼り付けて保存します(一部は一部が除外されているため)。コメントのswift初期表示コントローラの音楽許可をお願いします
override func viewWillAppear(_ animated: Bool) {
self.clearsSelectionOnViewWillAppear = self.splitViewController!.isCollapsed
super.viewWillAppear(animated)
checkMediaAccessAndSetup()
}
func checkMediaAccessAndSetup() {
let authorizationStatus = MPMediaLibrary.authorizationStatus()
switch authorizationStatus {
case .notDetermined:
// Show the permission prompt.
MPMediaLibrary.requestAuthorization({[weak self] (newAuthorizationStatus: MPMediaLibraryAuthorizationStatus) in
// Try again after the prompt is dismissed.
self?.checkMediaAccessAndSetup()
})
case .denied, .restricted:
// Do not use MPMediaQuery.
return
default:
// Proceed as usual.
break
}
// Do stuff with MPMediaQuery
self.setupPlaylistStore()
tableView.reloadData()
}
MPMediaLibraryのrequestAuthorizationブロックは[weak self]として実装されているため、selfはブロック内には存在しない可能性があります。 checkMediaAccessAndSetupメソッドがMPMediaLibraryでの認証を要求した後に呼び出されていますか? – Rendel
メインスレッドで 'requestAuthorization'コールバックが呼び出されていないことが原因です。 –
viewWillAppear内のDispatchQueue.main.async {}内でself.checkMediaAccessAndSetup()を試してみました(self?.checkMediaAccessAndSetup()は許可されません)。 。同じこと。 – EdZ