[mediaplayer] Update for iOS 10.3 beta 1 (#1627)
* introspection-ios MPMusicPlayerControllerMutableQueue and MPMusicPlayerControllerQueue's headers show no trace of NSCoding, NSSecureCoding or NSMutableCopying therefore we're skipping them.
This commit is contained in:
Родитель
b7dd01c770
Коммит
b15d2e256b
|
@ -292,6 +292,13 @@ namespace XamCore.MediaPlayer {
|
|||
return (ValueForProperty (DateAddedProperty) as NSDate);
|
||||
}
|
||||
}
|
||||
|
||||
[iOS (10,3)]
|
||||
public NSString PlaybackStoreID {
|
||||
get {
|
||||
return (ValueForProperty (PlaybackStoreIDProperty) as NSString);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -50,6 +50,8 @@ namespace XamCore.MediaPlayer {
|
|||
public MPNowPlayingInfoMediaType? MediaType { get; set; }
|
||||
[iOS (10,0)]
|
||||
public bool? IsLiveStream { get; set; }
|
||||
[iOS (10,3)]
|
||||
public NSUrl AssetUrl { get; set; }
|
||||
|
||||
public string AlbumTitle;
|
||||
public string Artist;
|
||||
|
@ -93,6 +95,8 @@ namespace XamCore.MediaPlayer {
|
|||
Add (dict, MPNowPlayingInfoCenter.PropertyMediaType, new NSNumber ((int)MediaType.Value));
|
||||
if (IsLiveStream.HasValue)
|
||||
Add (dict, MPNowPlayingInfoCenter.PropertyIsLiveStream, new NSNumber (IsLiveStream.Value));
|
||||
if (AssetUrl != null)
|
||||
Add (dict, MPNowPlayingInfoCenter.PropertyAssetUrl, AssetUrl);
|
||||
|
||||
if (AlbumTrackCount.HasValue)
|
||||
dict.Add (MPMediaItem.AlbumTrackCountProperty, new NSNumber (AlbumTrackCount.Value));
|
||||
|
@ -167,6 +171,8 @@ namespace XamCore.MediaPlayer {
|
|||
MediaType = (MPNowPlayingInfoMediaType) (result as NSNumber).UInt32Value;
|
||||
if (TryGetValue (source, MPNowPlayingInfoCenter.PropertyIsLiveStream, out result))
|
||||
IsLiveStream = (bool) (result as NSNumber).BoolValue;
|
||||
if (TryGetValue (source, MPNowPlayingInfoCenter.PropertyAssetUrl, out result))
|
||||
AssetUrl = result as NSUrl;
|
||||
|
||||
if (source.TryGetValue (MPMediaItem.AlbumTrackCountProperty, out result))
|
||||
AlbumTrackCount = (int) (result as NSNumber).UInt32Value;
|
||||
|
|
|
@ -303,6 +303,7 @@ namespace XamCore.MediaPlayer {
|
|||
NotSupported,
|
||||
[iOS (10,1)]
|
||||
Cancelled,
|
||||
RequestTimedOut,
|
||||
}
|
||||
|
||||
[NoMac]
|
||||
|
|
|
@ -249,6 +249,11 @@ namespace XamCore.MediaPlayer {
|
|||
[Field ("MPMediaItemPropertyDateAdded")]
|
||||
[EditorBrowsable (EditorBrowsableState.Advanced)]
|
||||
NSString DateAddedProperty { get; }
|
||||
|
||||
[iOS (10,3)]
|
||||
[Field ("MPMediaItemPropertyPlaybackStoreID")]
|
||||
[EditorBrowsable (EditorBrowsableState.Advanced)]
|
||||
NSString PlaybackStoreIDProperty { get; }
|
||||
}
|
||||
|
||||
[Mac (10,12,2, onlyOn64: true)]
|
||||
|
@ -1132,6 +1137,11 @@ namespace XamCore.MediaPlayer {
|
|||
[Static, Export ("applicationMusicPlayer")]
|
||||
MPMusicPlayerController ApplicationMusicPlayer { get; }
|
||||
|
||||
[iOS (10,3)]
|
||||
[Static]
|
||||
[Export ("applicationQueuePlayer")]
|
||||
MPMusicPlayerApplicationController ApplicationQueuePlayer { get; }
|
||||
|
||||
[Static, Export ("iPodMusicPlayer")]
|
||||
[Availability (Deprecated = Platform.iOS_8_0, Message="Use SystemMusicPlayer starting with iOS 8.0")]
|
||||
MPMusicPlayerController iPodMusicPlayer { get; }
|
||||
|
@ -1174,6 +1184,14 @@ namespace XamCore.MediaPlayer {
|
|||
[Export ("setQueueWithDescriptor:")]
|
||||
void SetQueue (MPMusicPlayerQueueDescriptor descriptor);
|
||||
|
||||
[iOS (10,3)]
|
||||
[Export ("prependQueueDescriptor:")]
|
||||
void Prepend (MPMusicPlayerQueueDescriptor descriptor);
|
||||
|
||||
[iOS (10,3)]
|
||||
[Export ("appendQueueDescriptor:")]
|
||||
void Append (MPMusicPlayerQueueDescriptor descriptor);
|
||||
|
||||
[iOS (10,1)]
|
||||
[Async]
|
||||
[Export ("prepareToPlayWithCompletionHandler:")]
|
||||
|
@ -1389,6 +1407,10 @@ namespace XamCore.MediaPlayer {
|
|||
[TV (10,0)]
|
||||
[Field ("MPNowPlayingInfoPropertyIsLiveStream")]
|
||||
NSString PropertyIsLiveStream { get; }
|
||||
|
||||
[iOS (10,3)]
|
||||
[Field ("MPNowPlayingInfoPropertyAssetURL")]
|
||||
NSString PropertyAssetUrl { get; }
|
||||
}
|
||||
|
||||
[Mac (10,12,2, onlyOn64: true)]
|
||||
|
@ -2024,4 +2046,43 @@ namespace XamCore.MediaPlayer {
|
|||
void SetEndTime (double endTime, string storeID);
|
||||
}
|
||||
#endif
|
||||
|
||||
[NoTV]
|
||||
[NoMac]
|
||||
[iOS (10,3)]
|
||||
[BaseType (typeof(NSObject))]
|
||||
[DisableDefaultCtor]
|
||||
interface MPMusicPlayerControllerQueue
|
||||
{
|
||||
[Export ("items", ArgumentSemantic.Copy)]
|
||||
MPMediaItem[] Items { get; }
|
||||
|
||||
[Field ("MPMusicPlayerControllerQueueDidChangeNotification")]
|
||||
[Notification]
|
||||
NSString DidChangeNotification { get; }
|
||||
}
|
||||
|
||||
[NoTV]
|
||||
[NoMac]
|
||||
[iOS (10,3)]
|
||||
[BaseType (typeof(MPMusicPlayerControllerQueue))]
|
||||
interface MPMusicPlayerControllerMutableQueue
|
||||
{
|
||||
[Export ("insertQueueDescriptor:afterItem:")]
|
||||
void InsertAfter (MPMusicPlayerQueueDescriptor queueDescriptor, [NullAllowed] MPMediaItem item);
|
||||
|
||||
[Export ("removeItem:")]
|
||||
void RemoveItem (MPMediaItem item);
|
||||
}
|
||||
|
||||
[NoTV]
|
||||
[NoMac]
|
||||
[iOS (10,3)]
|
||||
[BaseType (typeof(MPMusicPlayerController))]
|
||||
interface MPMusicPlayerApplicationController
|
||||
{
|
||||
[Async]
|
||||
[Export ("performQueueTransaction:completionHandler:")]
|
||||
void Perform (Action<MPMusicPlayerControllerMutableQueue> queueTransaction, Action<MPMusicPlayerControllerQueue, NSError> completionHandler);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -179,6 +179,9 @@ namespace Introspection {
|
|||
case "VSAccountMetadataRequest":
|
||||
// iOS 10.2
|
||||
case "VSAccountProviderResponse":
|
||||
// iOS 10.3
|
||||
case "MPMusicPlayerControllerMutableQueue":
|
||||
case "MPMusicPlayerControllerQueue":
|
||||
return true;
|
||||
#if __WATCHOS__
|
||||
case "CLKComplicationTemplate":
|
||||
|
@ -278,6 +281,9 @@ namespace Introspection {
|
|||
case "VSAccountMetadataRequest":
|
||||
// iOS 10.2
|
||||
case "VSAccountProviderResponse":
|
||||
// iOS 10.3
|
||||
case "MPMusicPlayerControllerMutableQueue":
|
||||
case "MPMusicPlayerControllerQueue":
|
||||
return true;
|
||||
#if __WATCHOS__
|
||||
case "CLKComplicationTemplate":
|
||||
|
@ -366,6 +372,9 @@ namespace Introspection {
|
|||
case "NSMutableCopying":
|
||||
switch (type.Name) {
|
||||
case "UNNotificationSound":
|
||||
// iOS 10.3
|
||||
case "MPMusicPlayerControllerMutableQueue":
|
||||
case "MPMusicPlayerControllerQueue":
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
|
|
|
@ -37,6 +37,7 @@ namespace MonoTouchFixtures.MediaPlayer {
|
|||
var six_dot_oh = TestRuntime.CheckSystemAndSDKVersion (6, 0);
|
||||
var nine_dot_two = TestRuntime.CheckSystemAndSDKVersion (9, 2);
|
||||
var ten_dot_oh = TestRuntime.CheckSystemAndSDKVersion (10, 0);
|
||||
var ten_dot_three = TestRuntime.CheckSystemAndSDKVersion (10, 3);
|
||||
|
||||
foreach (var i in items) {
|
||||
object dummy;
|
||||
|
@ -81,6 +82,8 @@ namespace MonoTouchFixtures.MediaPlayer {
|
|||
Assert.DoesNotThrow (() => dummy = i.IsExplicitItem, "IsExplicitItem");
|
||||
Assert.DoesNotThrow (() => dummy = i.DateAdded, "DateAdded");
|
||||
}
|
||||
if (ten_dot_three)
|
||||
Assert.DoesNotThrow (() => dummy = i.PlaybackStoreID, "PlaybackStoreID");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -30,6 +30,7 @@ namespace MonoTouchFixtures.MediaPlayer
|
|||
bool v8_0 = TestRuntime.CheckSystemAndSDKVersion (8, 0);
|
||||
bool v9_0 = TestRuntime.CheckSystemAndSDKVersion (9, 0);
|
||||
bool v10_0 = TestRuntime.CheckSystemAndSDKVersion (10, 0);
|
||||
bool v10_3 = TestRuntime.CheckSystemAndSDKVersion (10, 3);
|
||||
|
||||
[SetUp]
|
||||
public void SetUp ()
|
||||
|
@ -59,6 +60,7 @@ namespace MonoTouchFixtures.MediaPlayer
|
|||
PlaybackProgress = 0.5f,
|
||||
MediaType = MPNowPlayingInfoMediaType.Audio,
|
||||
IsLiveStream = false,
|
||||
AssetUrl = new NSUrl ("https://developer.xamarin.com"),
|
||||
|
||||
//MPMediaItem
|
||||
AlbumTitle = "AlbumTitle",
|
||||
|
@ -118,6 +120,9 @@ namespace MonoTouchFixtures.MediaPlayer
|
|||
Assert.IsInstanceOfType (typeof (ulong), np.PersistentID, "#25");
|
||||
Assert.IsInstanceOfType (typeof (double), np.PlaybackDuration, "#26");
|
||||
Assert.IsInstanceOfType (typeof (string), (object)np.Title, "#27");
|
||||
|
||||
if (v10_3)
|
||||
Assert.IsInstanceOfType (typeof (NSUrl), np.AssetUrl, "#28");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче