public TrackingPage() { this.InitializeComponent(); this.navigationHelper = new NavigationHelper(this); var positionTrackingPlugin = new PositionTrackingPlugin(); player.Plugins.Add(positionTrackingPlugin); positionTrackingPlugin.EventTracked += trackingPlugin_EventTracked; positionTrackingPlugin.TrackingEvents.Add(new PositionTrackingEvent() { PositionPercentage = 0, Data = "PositionTrackingEvent: 0%" }); positionTrackingPlugin.TrackingEvents.Add(new PositionTrackingEvent() { PositionPercentage = .25, Data = "PositionTrackingEvent: 25%" }); positionTrackingPlugin.TrackingEvents.Add(new PositionTrackingEvent() { PositionPercentage = .50, Data = "PositionTrackingEvent: 50%" }); positionTrackingPlugin.TrackingEvents.Add(new PositionTrackingEvent() { PositionPercentage = .75, Data = "PositionTrackingEvent: 75%" }); positionTrackingPlugin.TrackingEvents.Add(new PositionTrackingEvent() { PositionPercentage = 1, Data = "PositionTrackingEvent: 100%" }); positionTrackingPlugin.TrackingEvents.Add(new PositionTrackingEvent() { Position = TimeSpan.FromSeconds(5), Data = "PositionTrackingEvent: 5 seconds" }); positionTrackingPlugin.TrackingEvents.Add(new PositionTrackingEvent() { Position = TimeSpan.FromSeconds(15), Data = "PositionTrackingEvent: 15 seconds" }); positionTrackingPlugin.TrackingEvents.Add(new PositionTrackingEvent() { Position = TimeSpan.FromSeconds(25), Data = "PositionTrackingEvent: 25 seconds" }); var playTimeTrackingPlugin = new PlayTimeTrackingPlugin(); player.Plugins.Add(playTimeTrackingPlugin); playTimeTrackingPlugin.EventTracked += trackingPlugin_EventTracked; playTimeTrackingPlugin.TrackingEvents.Add(new PlayTimeTrackingEvent() { PlayTimePercentage = 0, Data = "PlayTimeTrackingEvent: 0%" }); playTimeTrackingPlugin.TrackingEvents.Add(new PlayTimeTrackingEvent() { PlayTimePercentage = .50, Data = "PlayTimeTrackingEvent: 50%" }); playTimeTrackingPlugin.TrackingEvents.Add(new PlayTimeTrackingEvent() { PlayTime = TimeSpan.FromSeconds(5), Data = "PlayTimeTrackingEvent: 5 seconds" }); playTimeTrackingPlugin.TrackingEvents.Add(new PlayTimeTrackingEvent() { PlayTime = TimeSpan.FromSeconds(15), Data = "PlayTimeTrackingEvent: 15 seconds" }); playTimeTrackingPlugin.TrackingEvents.Add(new PlayTimeTrackingEvent() { PlayTime = TimeSpan.FromSeconds(45), Data = "PlayTimeTrackingEvent: 45 seconds" }); PlayTimeEventList.ItemsSource = playTimeTrackingPlugin.TrackingEvents; PositionEventList.ItemsSource = positionTrackingPlugin.TrackingEvents; ResultsEventList.ItemsSource = new ObservableCollection<EventTrackedEventArgs>(); }
public TrackingPage() { this.InitializeComponent(); this.navigationHelper = new NavigationHelper(this); var positionTrackingPlugin = new PositionTrackingPlugin(); player.Plugins.Add(positionTrackingPlugin); positionTrackingPlugin.EventTracked += trackingPlugin_EventTracked; positionTrackingPlugin.TrackingEvents.Add(new PositionTrackingEvent() { PositionPercentage = 0, Data = "PositionTrackingEvent: 0%" }); positionTrackingPlugin.TrackingEvents.Add(new PositionTrackingEvent() { PositionPercentage = .25, Data = "PositionTrackingEvent: 25%" }); positionTrackingPlugin.TrackingEvents.Add(new PositionTrackingEvent() { PositionPercentage = .50, Data = "PositionTrackingEvent: 50%" }); positionTrackingPlugin.TrackingEvents.Add(new PositionTrackingEvent() { PositionPercentage = .75, Data = "PositionTrackingEvent: 75%" }); positionTrackingPlugin.TrackingEvents.Add(new PositionTrackingEvent() { PositionPercentage = 1, Data = "PositionTrackingEvent: 100%" }); positionTrackingPlugin.TrackingEvents.Add(new PositionTrackingEvent() { Position = TimeSpan.FromSeconds(5), Data = "PositionTrackingEvent: 5 seconds" }); positionTrackingPlugin.TrackingEvents.Add(new PositionTrackingEvent() { Position = TimeSpan.FromSeconds(15), Data = "PositionTrackingEvent: 15 seconds" }); positionTrackingPlugin.TrackingEvents.Add(new PositionTrackingEvent() { Position = TimeSpan.FromSeconds(25), Data = "PositionTrackingEvent: 25 seconds" }); var playTimeTrackingPlugin = new PlayTimeTrackingPlugin(); player.Plugins.Add(playTimeTrackingPlugin); playTimeTrackingPlugin.EventTracked += trackingPlugin_EventTracked; playTimeTrackingPlugin.TrackingEvents.Add(new PlayTimeTrackingEvent() { PlayTimePercentage = 0, Data = "PlayTimeTrackingEvent: 0%" }); playTimeTrackingPlugin.TrackingEvents.Add(new PlayTimeTrackingEvent() { PlayTimePercentage = .50, Data = "PlayTimeTrackingEvent: 50%" }); playTimeTrackingPlugin.TrackingEvents.Add(new PlayTimeTrackingEvent() { PlayTime = TimeSpan.FromSeconds(5), Data = "PlayTimeTrackingEvent: 5 seconds" }); playTimeTrackingPlugin.TrackingEvents.Add(new PlayTimeTrackingEvent() { PlayTime = TimeSpan.FromSeconds(15), Data = "PlayTimeTrackingEvent: 15 seconds" }); playTimeTrackingPlugin.TrackingEvents.Add(new PlayTimeTrackingEvent() { PlayTime = TimeSpan.FromSeconds(45), Data = "PlayTimeTrackingEvent: 45 seconds" }); PlayTimeEventList.ItemsSource = playTimeTrackingPlugin.TrackingEvents; PositionEventList.ItemsSource = positionTrackingPlugin.TrackingEvents; ResultsEventList.ItemsSource = new ObservableCollection <EventTrackedEventArgs>(); }
/// <summary> /// Loads ads from a source URI. Note, this is called automatically if you set the source before the MediaLoading event fires and normally does not need to be called. /// </summary> /// <param name="source">The SmartXML source URI</param> /// <param name="c">A cancellation token that allows you to cancel a pending operation</param> /// <returns>A task to await on.</returns> public async Task LoadAds(Uri source, CancellationToken c) { adSlots.Clear(); var cancellationToken = CancellationTokenSource.CreateLinkedTokenSource(c, cts.Token).Token; #if SILVERLIGHT adResponse = await FreeWheelFactory.LoadSource(source, cancellationToken); #else adResponse = await FreeWheelFactory.LoadSource(source).AsTask(cancellationToken); #endif var videoTracking = adResponse.SiteSection.VideoPlayer.VideoAsset.EventCallbacks.FirstOrDefault(ec => ec.Name == FWEventCallback.VideoView); if (videoTracking != null) { // use the tracking plugins to help with tracking markers. Create it if it doesn't exist. var positionTrackingPlugin = MediaPlayer.Plugins.OfType <PositionTrackingPlugin>().FirstOrDefault(); if (positionTrackingPlugin == null) { positionTrackingPlugin = new PositionTrackingPlugin(); MediaPlayer.Plugins.Add(positionTrackingPlugin); } positionTrackingPlugin.EventTracked += trackingPlugin_EventTracked; lastTrackingEvent = null; // reset trackingEnded = false; positionTrackingPlugin.TrackingEvents.Add(new PositionTrackingEvent() { PositionPercentage = 1, Data = videoTracking, Area = TrackingEventArea }); var playTimeTrackingPlugin = MediaPlayer.Plugins.OfType <PlayTimeTrackingPlugin>().FirstOrDefault(); if (playTimeTrackingPlugin == null) { playTimeTrackingPlugin = new PlayTimeTrackingPlugin(); MediaPlayer.Plugins.Add(playTimeTrackingPlugin); } playTimeTrackingPlugin.EventTracked += trackingPlugin_EventTracked; for (int i = 0; i < 60; i = i + 15) { playTimeTrackingPlugin.TrackingEvents.Add(new PlayTimeTrackingEvent() { PlayTime = TimeSpan.FromSeconds(i), Data = videoTracking, Area = TrackingEventArea }); } for (int i = 60; i < 60 * 3; i = i + 30) { playTimeTrackingPlugin.TrackingEvents.Add(new PlayTimeTrackingEvent() { PlayTime = TimeSpan.FromSeconds(i), Data = videoTracking, Area = TrackingEventArea }); } for (int i = 60 * 3; i < 60 * 10; i = i + 60) { playTimeTrackingPlugin.TrackingEvents.Add(new PlayTimeTrackingEvent() { PlayTime = TimeSpan.FromSeconds(i), Data = videoTracking, Area = TrackingEventArea }); } for (int i = 60 * 10; i < 60 * 30; i = i + 120) { playTimeTrackingPlugin.TrackingEvents.Add(new PlayTimeTrackingEvent() { PlayTime = TimeSpan.FromSeconds(i), Data = videoTracking, Area = TrackingEventArea }); } for (int i = 60 * 30; i < 60 * 60; i = i + 300) { playTimeTrackingPlugin.TrackingEvents.Add(new PlayTimeTrackingEvent() { PlayTime = TimeSpan.FromSeconds(i), Data = videoTracking, Area = TrackingEventArea }); } for (int i = 60 * 60; i < 60 * 180; i = i + 600) { playTimeTrackingPlugin.TrackingEvents.Add(new PlayTimeTrackingEvent() { PlayTime = TimeSpan.FromSeconds(i), Data = videoTracking, Area = TrackingEventArea }); } } var videoAsset = adResponse.SiteSection.VideoPlayer.VideoAsset; if (videoAsset != null) { foreach (var adSlot in videoAsset.AdSlots) { Advertisement ad = null; switch (adSlot.TimePositionClass) { case "preroll": ad = new PrerollAdvertisement(); break; case "postroll": ad = new PostrollAdvertisement(); break; default: var midroll = new MidrollAdvertisement(); midroll.Time = adSlot.TimePosition; ad = midroll; break; } #if SILVERLIGHT var payload = await FreeWheelFactory.GetAdDocumentPayload(adSlot, adResponse, cancellationToken); #else var payload = await FreeWheelFactory.GetAdDocumentPayload(adSlot, adResponse).AsTask(cancellationToken); #endif ad.Source = new AdSource(payload, DocumentAdPayloadHandler.AdType); Advertisements.Add(ad); adSlots.Add(ad, adSlot); } } ShowCompanions(); }
/// <summary> /// Loads ads from a source URI. Note, this is called automatically if you set the source before the MediaLoading event fires and normally does not need to be called. /// </summary> /// <param name="source">The SmartXML source URI</param> /// <param name="c">A cancellation token that allows you to cancel a pending operation</param> /// <returns>A task to await on.</returns> public async Task LoadAds(Uri source, CancellationToken c) { adSlots.Clear(); var cancellationToken = CancellationTokenSource.CreateLinkedTokenSource(c, cts.Token).Token; #if SILVERLIGHT adResponse = await FreeWheelFactory.LoadSource(source, cancellationToken); #else adResponse = await FreeWheelFactory.LoadSource(source).AsTask(cancellationToken); #endif var videoTracking = adResponse.SiteSection.VideoPlayer.VideoAsset.EventCallbacks.FirstOrDefault(ec => ec.Name == FWEventCallback.VideoView); if (videoTracking != null) { // use the tracking plugins to help with tracking markers. Create it if it doesn't exist. var positionTrackingPlugin = MediaPlayer.Plugins.OfType<PositionTrackingPlugin>().FirstOrDefault(); if (positionTrackingPlugin == null) { positionTrackingPlugin = new PositionTrackingPlugin(); MediaPlayer.Plugins.Add(positionTrackingPlugin); } positionTrackingPlugin.EventTracked += trackingPlugin_EventTracked; lastTrackingEvent = null; // reset trackingEnded = false; positionTrackingPlugin.TrackingEvents.Add(new PositionTrackingEvent() { PositionPercentage = 1, Data = videoTracking, Area = TrackingEventArea }); var playTimeTrackingPlugin = MediaPlayer.Plugins.OfType<PlayTimeTrackingPlugin>().FirstOrDefault(); if (playTimeTrackingPlugin == null) { playTimeTrackingPlugin = new PlayTimeTrackingPlugin(); MediaPlayer.Plugins.Add(playTimeTrackingPlugin); } playTimeTrackingPlugin.EventTracked += trackingPlugin_EventTracked; for (int i = 0; i < 60; i = i + 15) playTimeTrackingPlugin.TrackingEvents.Add(new PlayTimeTrackingEvent() { PlayTime = TimeSpan.FromSeconds(i), Data = videoTracking, Area = TrackingEventArea }); for (int i = 60; i < 60 * 3; i = i + 30) playTimeTrackingPlugin.TrackingEvents.Add(new PlayTimeTrackingEvent() { PlayTime = TimeSpan.FromSeconds(i), Data = videoTracking, Area = TrackingEventArea }); for (int i = 60 * 3; i < 60 * 10; i = i + 60) playTimeTrackingPlugin.TrackingEvents.Add(new PlayTimeTrackingEvent() { PlayTime = TimeSpan.FromSeconds(i), Data = videoTracking, Area = TrackingEventArea }); for (int i = 60 * 10; i < 60 * 30; i = i + 120) playTimeTrackingPlugin.TrackingEvents.Add(new PlayTimeTrackingEvent() { PlayTime = TimeSpan.FromSeconds(i), Data = videoTracking, Area = TrackingEventArea }); for (int i = 60 * 30; i < 60 * 60; i = i + 300) playTimeTrackingPlugin.TrackingEvents.Add(new PlayTimeTrackingEvent() { PlayTime = TimeSpan.FromSeconds(i), Data = videoTracking, Area = TrackingEventArea }); for (int i = 60 * 60; i < 60 * 180; i = i + 600) playTimeTrackingPlugin.TrackingEvents.Add(new PlayTimeTrackingEvent() { PlayTime = TimeSpan.FromSeconds(i), Data = videoTracking, Area = TrackingEventArea }); } var videoAsset = adResponse.SiteSection.VideoPlayer.VideoAsset; if (videoAsset != null) { foreach (var adSlot in videoAsset.AdSlots) { Advertisement ad = null; switch (adSlot.TimePositionClass) { case "preroll": ad = new PrerollAdvertisement(); break; case "postroll": ad = new PostrollAdvertisement(); break; default: var midroll = new MidrollAdvertisement(); midroll.Time = adSlot.TimePosition; ad = midroll; break; } #if SILVERLIGHT var payload = await FreeWheelFactory.GetAdDocumentPayload(adSlot, adResponse, cancellationToken); #else var payload = await FreeWheelFactory.GetAdDocumentPayload(adSlot, adResponse).AsTask(cancellationToken); #endif ad.Source = new AdSource(payload, DocumentAdPayloadHandler.AdType); Advertisements.Add(ad); adSlots.Add(ad, adSlot); } } ShowCompanions(); }