2016-11-03 10 views
0

Ich versuche, eine Xamarin.Forms-basierte App zum Abspielen von Musik zu schreiben. Ich verwende das Standardmuster für Xamarin Forms Dependency Service, um einen plattformspezifischen Player für iOS zu erstellen, der MPMusicPlayerController wie von Xamarin dokumentiert verwendet. Wenn ich den Code schreibe, ist die MPMusicPlayerController.NowPlayItem-Eigenschaft zugänglich;Xamarin.iOS: MPMusicPlayerController.NowPlayingItem -Eigenschaft verschwindet

NowPlayingItem is accessible

und als ich es zuerst alles getestet gearbeitet OK. Ich habe dann versucht, Benachrichtigungen vom MPMusicPlayerController zu hören und sie sind "verschwunden". wenn ich debugge, fehlt die Eigenschaft und wenn ich versuche, darauf zuzugreifen, bekomme ich eine tiefe Mono SIGSEGV Ausnahme;

Property has disappeared

Oft der Debugger versucht, die Eigenschaft zu verweisen und auch abstürzt. Damit; Ich habe die Benachrichtigungen herausgenommen und es passiert immer noch!

+0

Übrigens; es ist nicht nur null; das wäre schön; Es verschwindet komplett mit anderen Eigenschaften, während einige noch verfügbar sind! –

Antwort

1

Ich habe den Teil des Codes neu erstellt, der das Problem in Xcode und Objective C verursacht. Obwohl ich das Device-Log in Xcode nach dem Ausführen und Absturz von Xamarin gesehen habe, hätte sich das Problem ebenfalls gezeigt.

Neuere Versionen von iOS expect an Info.plist entry; Privacy - Apple Music Usage Description werden für alles bereitgestellt, das auf die Medienbibliothek zugreift. Interessanterweise scheint die Wiedergabe erlaubt zu sein und es fühlt sich an, als ob die NowPlayingItem-Eigenschaft nicht erlaubt sein sollte, aber irgendwie ist es manchmal so.

Am Ende stellte ich fest, dass ich den PLIST-Eintrag eingeben musste und auch nach einer Autorisierung wie in this post suchen und manchmal fragen musste.

Sobald ich beide getan hatte, funktioniert die NowPlayingItem-Eigenschaft und ich bekomme Benachrichtigungen.