Доступ к Apple Music
Я хочу получить доступ к музыке Apple, поэтому я пишу
MPMediaQuery *query = [MPMediaQuery songsQuery];
Оповещение автоматически выскакивает с сообщением для доступа. Теперь я хочу знать, когда пользователь предоставляет или отказывает в доступе, как CLLocationManager
метод делегата didChangeAuthorizationStatus
, Является ли это возможным?
3 ответа
Я нашел ответ на свой вопрос. В ios 9.3 доступны два метода
- (MPMediaLibraryAuthorizationStatus) authorizationStatus
- (void) requestAuthorization: (void (^) (MPMediaLibraryAuthorizationStatus status)) handler // Вызывает обратный вызов при изменении статуса авторизации.
Я полагаю, что это есть в вашем info.plist...Apple переключила многие (если не все) запросы на доступ непосредственно в plist.
Теперь я хочу знать, когда пользователь предоставляет или отказывает в доступе
Там нет обратного вызова / уведомления только потому, что пользователь меняет доступ. Однако это может произойти только тогда, когда ваше приложение находится в фоновом режиме, поэтому все, что вам нужно сделать, это проверять свой статус доступа каждый раз, когда ваше приложение заранее установлено или активировано.
Например, вот как я делаю это в одном из моих приложений (этот код находится в контроллере корневого представления, который всегда присутствует):
override func viewDidLoad() {
super.viewDidLoad()
NotificationCenter.default.addObserver(self, selector: #selector(didBecomeActive), name: .UIApplicationDidBecomeActive, object: nil)
}
func didBecomeActive(_ n:Notification) {
self.checkForMusicLibraryAccess()
// ... only proceed if we have access
}