<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://nielsentest.mywikis.net/w/index.php?action=history&amp;feed=atom&amp;title=Swift_Basic_Sample</id>
	<title>Swift Basic Sample - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://nielsentest.mywikis.net/w/index.php?action=history&amp;feed=atom&amp;title=Swift_Basic_Sample"/>
	<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=Swift_Basic_Sample&amp;action=history"/>
	<updated>2026-04-12T23:28:06Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.5</generator>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=Swift_Basic_Sample&amp;diff=5371&amp;oldid=prev</id>
		<title>ColinBrown at 19:46, 28 September 2021</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=Swift_Basic_Sample&amp;diff=5371&amp;oldid=prev"/>
		<updated>2021-09-28T19:46:18Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 19:46, 28 September 2021&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l124&quot;&gt;Line 124:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 124:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;//  VideoPlayerWithSDKSwift&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;//  VideoPlayerWithSDKSwift&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;//&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;//&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;//  Created by Abdul on 17/01/18.&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;//  Copyright © 2018 Abdul. All rights reserved.&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;//&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;//&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>ColinBrown</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=Swift_Basic_Sample&amp;diff=4562&amp;oldid=prev</id>
		<title>ColinBrown at 04:49, 19 November 2020</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=Swift_Basic_Sample&amp;diff=4562&amp;oldid=prev"/>
		<updated>2020-11-19T04:49:44Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 04:49, 19 November 2020&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{Breadcrumb|DCR &amp;amp; DTVR}} {{Breadcrumb|DCR Video iOS SDK}} {{CurrentBreadcrumb}}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{Breadcrumb|DCR &amp;amp; DTVR}} {{Breadcrumb|DCR Video iOS SDK}} {{CurrentBreadcrumb}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:Digital]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:Digital]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[File:&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;iphonescreenshot&lt;/del&gt;.&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;png&lt;/del&gt;|thumb]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[File:&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;iPhone 11 Screenshot&lt;/ins&gt;.&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;jpg&lt;/ins&gt;|thumb]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Swift Version 5 Code Example ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Swift Version 5 Code Example ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>ColinBrown</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=Swift_Basic_Sample&amp;diff=4172&amp;oldid=prev</id>
		<title>ColinBrown: /* Swift Version 4 Code Example */</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=Swift_Basic_Sample&amp;diff=4172&amp;oldid=prev"/>
		<updated>2020-05-04T22:25:17Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Swift Version 4 Code Example&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 22:25, 4 May 2020&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l3&quot;&gt;Line 3:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 3:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[File:iphonescreenshot.png|thumb]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[File:iphonescreenshot.png|thumb]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Swift Version &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;4 &lt;/del&gt;Code Example ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Swift Version &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;5 &lt;/ins&gt;Code Example ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==== NielsenInit.swift ====&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==== NielsenInit.swift ====&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>ColinBrown</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=Swift_Basic_Sample&amp;diff=2955&amp;oldid=prev</id>
		<title>Admin3 at 23:17, 15 October 2018</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=Swift_Basic_Sample&amp;diff=2955&amp;oldid=prev"/>
		<updated>2018-10-15T23:17:36Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 23:17, 15 October 2018&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{Breadcrumb|DCR &amp;amp; DTVR}} {{Breadcrumb|&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;DCR_Video_iOS_SDK&lt;/del&gt;}} {{CurrentBreadcrumb}}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{Breadcrumb|DCR &amp;amp; DTVR}} {{Breadcrumb|&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;DCR Video iOS SDK&lt;/ins&gt;}} {{CurrentBreadcrumb}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:Digital]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:Digital]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[File:iphonescreenshot.png|thumb]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[File:iphonescreenshot.png|thumb]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Admin3</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=Swift_Basic_Sample&amp;diff=2926&amp;oldid=prev</id>
		<title>Admin3 at 21:03, 2 October 2018</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=Swift_Basic_Sample&amp;diff=2926&amp;oldid=prev"/>
		<updated>2018-10-02T21:03:27Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 21:03, 2 October 2018&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{Breadcrumb|DCR &amp;amp; DTVR}} &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; &lt;/del&gt;{{CurrentBreadcrumb}}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{Breadcrumb|DCR &amp;amp; DTVR}} &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{Breadcrumb|DCR_Video_iOS_SDK}} &lt;/ins&gt;{{CurrentBreadcrumb}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:Digital]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:Digital]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[File:iphonescreenshot.png|thumb]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[File:iphonescreenshot.png|thumb]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Admin3</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=Swift_Basic_Sample&amp;diff=2925&amp;oldid=prev</id>
		<title>Admin3: Created page with &quot;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{Breadcrumb|DCR &amp; DTVR}}  {{CurrentBreadcrumb}} Category:Digital thumb  == Swift Version 4 Code Examp...&quot;</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=Swift_Basic_Sample&amp;diff=2925&amp;oldid=prev"/>
		<updated>2018-10-02T21:02:16Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{Breadcrumb|DCR &amp;amp; DTVR}}  {{CurrentBreadcrumb}} &lt;a href=&quot;/wiki/Category:Digital&quot; title=&quot;Category:Digital&quot;&gt;Category:Digital&lt;/a&gt; &lt;a href=&quot;/wiki/File:iphonescreenshot.png&quot; title=&quot;File:iphonescreenshot.png&quot;&gt;thumb&lt;/a&gt;  == Swift Version 4 Code Examp...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{Breadcrumb|DCR &amp;amp; DTVR}}  {{CurrentBreadcrumb}}&lt;br /&gt;
[[Category:Digital]]&lt;br /&gt;
[[File:iphonescreenshot.png|thumb]]&lt;br /&gt;
&lt;br /&gt;
== Swift Version 4 Code Example ==&lt;br /&gt;
&lt;br /&gt;
==== NielsenInit.swift ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;swift&amp;quot;&amp;gt;&lt;br /&gt;
// This is sample code of a very basic implementation of the Nielsen API&lt;br /&gt;
// This code is for educational purposes only&lt;br /&gt;
//&lt;br /&gt;
import Foundation&lt;br /&gt;
import NielsenAppApi&lt;br /&gt;
&lt;br /&gt;
class NielsenInit : NSObject {&lt;br /&gt;
    class func createNielsenApi(delegate: NielsenAppApiDelegate) -&amp;gt; NielsenAppApi?{&lt;br /&gt;
        &lt;br /&gt;
        let appInformation:[String: String] = [&lt;br /&gt;
            &lt;br /&gt;
            &amp;quot;appid&amp;quot;: &amp;quot;PDA7D5EE6-B1B8-4123-9277-2A788BXXXXXX&amp;quot;,&lt;br /&gt;
            &amp;quot;appversion&amp;quot;: &amp;quot;1.0&amp;quot;,&lt;br /&gt;
            &amp;quot;sfcode&amp;quot;: &amp;quot;dcr&amp;quot;,&lt;br /&gt;
            &amp;quot;nol_devDebug&amp;quot;: &amp;quot;DEBUG&amp;quot;&lt;br /&gt;
        ]&lt;br /&gt;
        &lt;br /&gt;
        return NielsenAppApi(appInfo:appInformation, delegate:delegate)&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== SDKMethods.swift ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;swift&amp;quot;&amp;gt;&lt;br /&gt;
//&lt;br /&gt;
//  SDKMethods.swift&lt;br /&gt;
//  VideoPlayerWithSDKSwift&lt;br /&gt;
//&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
import Foundation&lt;br /&gt;
&lt;br /&gt;
class SDKMethods : NSObject {&lt;br /&gt;
     var url = NSURL(string: &amp;quot;&amp;quot;) &lt;br /&gt;
    func setContentUrl() {        &lt;br /&gt;
        //Loading Content URL       &lt;br /&gt;
        url = NSURL(string: &amp;quot;http://www.nielseninternet.com/NielsenConsumer/prog_index.m3u8&amp;quot;)&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    func setAdUrl() {        &lt;br /&gt;
        //Loading Ad URL        &lt;br /&gt;
        url = NSURL(string: &amp;quot;http://www.nielseninternet.com/NWCC-3002/prog_index.m3u8&amp;quot;)&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    func setDtvrUrl() {      &lt;br /&gt;
        //Loading DTVR URL      &lt;br /&gt;
        url = NSURL(string: &amp;quot;http://www.nielseninternet.com/VOD/NielsenScienceBehindWhatsNext/prog_index.m3u8&amp;quot;)&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    func loadChannelInfo() -&amp;gt; [String : Any] { &lt;br /&gt;
        //Loading Channel Info.&lt;br /&gt;
        let strUrl : String = (url?.absoluteString)!    &lt;br /&gt;
        let channel = [ &amp;quot;channelName&amp;quot; : &amp;quot;ChannelTitle&amp;quot;,&lt;br /&gt;
                               &amp;quot;mediaURL&amp;quot; : strUrl] as [String : Any]     &lt;br /&gt;
        return channel&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    func loadContent() -&amp;gt; [String : Any] {&lt;br /&gt;
        &lt;br /&gt;
        //Loading Content data&lt;br /&gt;
        &lt;br /&gt;
        url = NSURL(string: &amp;quot;http://www.nielseninternet.com/NielsenConsumer/prog_index.m3u8&amp;quot;)&lt;br /&gt;
        &lt;br /&gt;
        let content = [&lt;br /&gt;
            &amp;quot;type&amp;quot;:&amp;quot;content&amp;quot;,&lt;br /&gt;
            &amp;quot;assetid&amp;quot;:&amp;quot;C77664&amp;quot;,&lt;br /&gt;
            &amp;quot;length&amp;quot;:&amp;quot;3600&amp;quot;,&lt;br /&gt;
            &amp;quot;program&amp;quot;:&amp;quot;MyProgram&amp;quot;,&lt;br /&gt;
            &amp;quot;segB&amp;quot;:&amp;quot;CustomSegmentValueB&amp;quot;,&lt;br /&gt;
            &amp;quot;segC&amp;quot;:&amp;quot;segmentC&amp;quot;,&lt;br /&gt;
            &amp;quot;title&amp;quot;:&amp;quot;S2,E3&amp;quot;,&lt;br /&gt;
            &amp;quot;section&amp;quot;:&amp;quot;cloudApi_app&amp;quot;,&lt;br /&gt;
            &amp;quot;airdate&amp;quot;:&amp;quot;20180221 10:00:00&amp;quot;,&lt;br /&gt;
            &amp;quot;isfullepisode&amp;quot;:&amp;quot;y&amp;quot;,&lt;br /&gt;
            &amp;quot;adloadtype&amp;quot;:&amp;quot;2&amp;quot;,&lt;br /&gt;
            &amp;quot;channelName&amp;quot;:&amp;quot;My Channel 1&amp;quot;,&lt;br /&gt;
            &amp;quot;pipMode&amp;quot;:&amp;quot;false&amp;quot; ] as [String : Any]&lt;br /&gt;
        &lt;br /&gt;
        &lt;br /&gt;
        return content&lt;br /&gt;
        &lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    func loadPreRollAd() -&amp;gt; [String : Any] {       &lt;br /&gt;
        //loading Ad data.        &lt;br /&gt;
        url = NSURL(string: &amp;quot;http://www.nielseninternet.com/NWCC-3002/prog_index.m3u8&amp;quot;)&lt;br /&gt;
        &lt;br /&gt;
        let ad = [&lt;br /&gt;
            &amp;quot;type&amp;quot;:&amp;quot;preroll&amp;quot;,&lt;br /&gt;
            &amp;quot;assetid&amp;quot;:&amp;quot;AD1&amp;quot;,&lt;br /&gt;
            &amp;quot;title&amp;quot;:&amp;quot;ADPreTitle&amp;quot;] as [String : Any]&lt;br /&gt;
        &lt;br /&gt;
        return ad&lt;br /&gt;
        &lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    func loadDtvr() -&amp;gt; [String : Any] {        &lt;br /&gt;
        //Loading DTVR data        &lt;br /&gt;
        let dtvr = [&lt;br /&gt;
        &amp;quot;adModel&amp;quot;: &amp;quot;1&amp;quot; ] as [String : Any]        &lt;br /&gt;
        return dtvr&lt;br /&gt;
        &lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== ViewController.swift ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;swift&amp;quot;&amp;gt;&lt;br /&gt;
//&lt;br /&gt;
//  ViewController.swift&lt;br /&gt;
//  VideoPlayerWithSDKSwift&lt;br /&gt;
//&lt;br /&gt;
//  Created by Abdul on 17/01/18.&lt;br /&gt;
//  Copyright © 2018 Abdul. All rights reserved.&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
import UIKit&lt;br /&gt;
import AVKit&lt;br /&gt;
import CoreLocation&lt;br /&gt;
import AdSupport&lt;br /&gt;
import AVFoundation&lt;br /&gt;
import NielsenAppApi&lt;br /&gt;
&lt;br /&gt;
class ViewController: UIViewController, NielsenAppApiDelegate, AVPlayerViewControllerDelegate {&lt;br /&gt;
    &lt;br /&gt;
    var nielsenApi : NielsenAppApi!&lt;br /&gt;
    var videoType : Int!&lt;br /&gt;
    var player : AVPlayer!&lt;br /&gt;
    var controller : AVPlayerViewController!&lt;br /&gt;
    var sdkMethods : SDKMethods!&lt;br /&gt;
    &lt;br /&gt;
    var data : [String : Any]!&lt;br /&gt;
    var timeObserver: Any!&lt;br /&gt;
    var totalVideosPlayed = 0&lt;br /&gt;
    var totalVideos : Int!&lt;br /&gt;
    &lt;br /&gt;
    var TimedMetadataObserverContext = 3&lt;br /&gt;
    var array : Any!&lt;br /&gt;
    let timedMetadataKey = &amp;quot;currentItem.timedMetadata&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    override func viewDidLoad() {&lt;br /&gt;
        super.viewDidLoad()&lt;br /&gt;
        &lt;br /&gt;
        //Mark: In NielsenInit class we are initialising the NielsenApi.&lt;br /&gt;
        &lt;br /&gt;
        //Getting the instance of NielsenApi&lt;br /&gt;
        self.nielsenApi = NielsenInit.createNielsenApi(delegate: self)&lt;br /&gt;
        &lt;br /&gt;
        //Mark: In SDKMethods class we wrote methods which creates content,Ad,DTVR objects&lt;br /&gt;
        sdkMethods = SDKMethods()&lt;br /&gt;
        &lt;br /&gt;
        if(videoType == Constants.onlyContent){&lt;br /&gt;
            //loading video content url&lt;br /&gt;
            sdkMethods.setContentUrl()&lt;br /&gt;
            &lt;br /&gt;
        }else if(videoType == Constants.dtvrVideo){&lt;br /&gt;
            //loading video DTVR url&lt;br /&gt;
            sdkMethods.setDtvrUrl()&lt;br /&gt;
            &lt;br /&gt;
        }else{&lt;br /&gt;
            //loading video Ad url&lt;br /&gt;
            sdkMethods.setAdUrl()&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        &lt;br /&gt;
        setPlayer()&lt;br /&gt;
        &lt;br /&gt;
        if(videoType != Constants.dtvrVideo){&lt;br /&gt;
            &lt;br /&gt;
            //For DTVR video playHeadPosition is not required&lt;br /&gt;
            //For DCR Content,Ad videos only this method will execute.&lt;br /&gt;
            setPlayHeadPosition()&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        //Setting observer to know the completion of video&lt;br /&gt;
        setVideoFinishObserver()&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    func setPlayer() {&lt;br /&gt;
        &lt;br /&gt;
        //creating player&lt;br /&gt;
        player  = AVPlayer.init(url: sdkMethods.url! as URL)&lt;br /&gt;
        controller = AVPlayerViewController()&lt;br /&gt;
        controller.view.frame = CGRect(x:0 , y:100, width: self.view.frame.width, height: 300)&lt;br /&gt;
        controller.player = player;&lt;br /&gt;
        controller.showsPlaybackControls = true;&lt;br /&gt;
        controller.delegate = self;&lt;br /&gt;
        &lt;br /&gt;
        player.play()&lt;br /&gt;
        &lt;br /&gt;
        if(totalVideosPlayed == 0){&lt;br /&gt;
            //For first time sending Channel info to SDK using &amp;quot;play&amp;quot; method.&lt;br /&gt;
            nielsenApi.play(sdkMethods.loadChannelInfo())&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        if(videoType == Constants.dtvrVideo){&lt;br /&gt;
            &lt;br /&gt;
            //loading DTVR metadata&lt;br /&gt;
            self.data = sdkMethods.loadDtvr()&lt;br /&gt;
        }else{&lt;br /&gt;
            &lt;br /&gt;
            //loading video content metadata data&lt;br /&gt;
            self.data = sdkMethods.loadContent()&lt;br /&gt;
        }&lt;br /&gt;
        //Sending metadata to SDK.&lt;br /&gt;
        nielsenApi.loadMetadata(self.data)&lt;br /&gt;
        &lt;br /&gt;
        if(videoType == Constants.contentWithOneAd){&lt;br /&gt;
            //loading Ad data&lt;br /&gt;
            self.data = sdkMethods.loadPreRollAd()&lt;br /&gt;
            nielsenApi.loadMetadata(self.data)&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        //Adding observer to player to track play,pause and reverse&lt;br /&gt;
        player.addObserver(self, forKeyPath: &amp;quot;rate&amp;quot;, options: NSKeyValueObservingOptions.new, context: nil)&lt;br /&gt;
        &lt;br /&gt;
        //Only for DTVR videos we are tracking iD3 Tags and sends to SDK after extracting.&lt;br /&gt;
        if(videoType == Constants.dtvrVideo){&lt;br /&gt;
            &lt;br /&gt;
            //Setting observer to track timedMetadata&lt;br /&gt;
            player.addObserver(self, forKeyPath: timedMetadataKey, options: NSKeyValueObservingOptions.new, context: &amp;amp;TimedMetadataObserverContext)&lt;br /&gt;
            &lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        self.addChildViewController(controller)&lt;br /&gt;
        self.view .addSubview(controller.view)&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    func setPlayHeadPosition() {&lt;br /&gt;
        //Setting play head position&lt;br /&gt;
        let timeInterval : CMTime = CMTimeMakeWithSeconds(1.0, 10)&lt;br /&gt;
        controller.player?.addPeriodicTimeObserver(forInterval: timeInterval, queue: DispatchQueue.main) {(elapsedTime: CMTime) -&amp;gt; Void in&lt;br /&gt;
            &lt;br /&gt;
            let time : Float64 = self.controller.player!.currentTime().seconds;&lt;br /&gt;
            let pos = Int64(time);&lt;br /&gt;
            //Sending playHeadPosition to SDK.&lt;br /&gt;
            self.nielsenApi?.playheadPosition(pos);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    func setVideoFinishObserver() {&lt;br /&gt;
        //observer fires on completion video.&lt;br /&gt;
        NotificationCenter.default.addObserver(self, selector: #selector(playerDidFinishPlaying), name: NSNotification.Name.AVPlayerItemDidPlayToEndTime, object: controller.player?.currentItem)&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    //rate 0.0 = Video Pause or stopped&lt;br /&gt;
    //rate 1.0 = Video played or resumed&lt;br /&gt;
    override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {&lt;br /&gt;
        &lt;br /&gt;
        if keyPath == timedMetadataKey {&lt;br /&gt;
            if(context == &amp;amp;TimedMetadataObserverContext){&lt;br /&gt;
                if change != nil {&lt;br /&gt;
                    let timedMetadataArray = change![.newKey]&lt;br /&gt;
                    if timedMetadataArray != nil &amp;amp;&amp;amp; (timedMetadataArray! as AnyObject) is Array&amp;lt;Any&amp;gt; {&lt;br /&gt;
                        for item in timedMetadataArray as! [AVMetadataItem]  {&lt;br /&gt;
                            //Handling TimedMetadata&lt;br /&gt;
                            self.handleTimedMetadata(metadataItem: item)&lt;br /&gt;
                        }&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        if keyPath == &amp;quot;rate&amp;quot; {&lt;br /&gt;
            if let rate = change?[NSKeyValueChangeKey.newKey] as? Float {&lt;br /&gt;
                &lt;br /&gt;
                if rate == 0.0 {&lt;br /&gt;
                    print(&amp;quot;Playback stopped&amp;quot;)&lt;br /&gt;
                    //On Video pause calling the &amp;quot;stop&amp;quot; method of SDK.&lt;br /&gt;
                    nielsenApi.stop()&lt;br /&gt;
                }&lt;br /&gt;
                if rate == 1.0 {&lt;br /&gt;
                    print(&amp;quot;normal playback&amp;quot;)&lt;br /&gt;
                    //On video Resume calling &amp;quot;loadMetada&amp;quot; method of SDK&lt;br /&gt;
                    nielsenApi.loadMetadata(self.data)&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    override func viewDidDisappear(_ animated: Bool) {&lt;br /&gt;
        &lt;br /&gt;
        //On moving to other screen calling &amp;quot;stop&amp;quot; method of SDK.&lt;br /&gt;
        nielsenApi.stop()&lt;br /&gt;
        player.rate = 0&lt;br /&gt;
        player.pause()&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    @objc func playerDidFinishPlaying(note: NSNotification) {&lt;br /&gt;
        &lt;br /&gt;
        self.player?.removeObserver(self, forKeyPath: &amp;quot;rate&amp;quot;)&lt;br /&gt;
        &lt;br /&gt;
        //As 1 video completed playing, incrementing the variable value.&lt;br /&gt;
        totalVideosPlayed += 1&lt;br /&gt;
        &lt;br /&gt;
        if(videoType == Constants.onlyContent || totalVideosPlayed == totalVideos){&lt;br /&gt;
             //When content video completes or total videos finishes, call &amp;quot;end&amp;quot; method.&lt;br /&gt;
            nielsenApi.end()&lt;br /&gt;
            &lt;br /&gt;
        }else if(videoType == Constants.contentWithOneAd){&lt;br /&gt;
            &lt;br /&gt;
            //On completion of &amp;quot;AD&amp;quot; call &amp;quot;stop&amp;quot; method.&lt;br /&gt;
            nielsenApi.stop()&lt;br /&gt;
            &lt;br /&gt;
            //After preRoll ad completes, load content video.&lt;br /&gt;
            self.data = sdkMethods.loadContent()&lt;br /&gt;
            &lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        //Checking if total videos played or not.&lt;br /&gt;
        if(totalVideosPlayed != totalVideos){&lt;br /&gt;
            &lt;br /&gt;
            setPlayer()&lt;br /&gt;
            setPlayHeadPosition()&lt;br /&gt;
            &lt;br /&gt;
            //Setting observer to know the completion of video&lt;br /&gt;
            setVideoFinishObserver()&lt;br /&gt;
            &lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    deinit {&lt;br /&gt;
        &lt;br /&gt;
        print(&amp;quot;Remove NotificationCenter Deinit&amp;quot;)&lt;br /&gt;
        NotificationCenter.default.removeObserver(self)&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    //######### DTVR code starts here #############//&lt;br /&gt;
    &lt;br /&gt;
    func handleTimedMetadata(metadataItem: AVMetadataItem) {&lt;br /&gt;
        guard let extraAttributeType = metadataItem.extraAttributes else {&lt;br /&gt;
            return&lt;br /&gt;
        }&lt;br /&gt;
        let info : AVMetadataExtraAttributeKey = AVMetadataExtraAttributeKey(rawValue: &amp;quot;info&amp;quot;)&lt;br /&gt;
        let extraString = extraAttributeType[info] as AnyObject&lt;br /&gt;
        let key = metadataItem.key as! String&lt;br /&gt;
        &lt;br /&gt;
        //If tag starts with &amp;quot;www.nielsen.com&amp;quot;, then only sending to SDK&lt;br /&gt;
        if key == &amp;quot;PRIV&amp;quot; &amp;amp;&amp;amp; extraString.range(of: &amp;quot;www.nielsen.com&amp;quot;).length &amp;gt; 0 {&lt;br /&gt;
            &lt;br /&gt;
            DispatchQueue.global(qos: .default).async { () -&amp;gt; Void in&lt;br /&gt;
                self.nielsenApi?.sendID3(extraString as! String)&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin3</name></author>
	</entry>
</feed>