Kantar Media Streaming Sensor APPLE_TV
Kantar Media Streaming Measurement Library for APPLE_TV
Kantar Media Streaming Sensor APPLE_TV Documentation

Kantar Media Streaming Sensor AppleTV User Manual

SDK 1.12.0 and higher

Starting from SDK version 1.12.0 we are dropping the usage of IDFA addressing the privacy changes that apple introduced in iOS 14.
The constructor that disables the use of IDFA is now removed

AppStore Submission with tvOS 11

Please be aware that if you do not include the AdSupport.framework in your app you will have to disable the use of the IDFA via API in the constructor. Otherwise your App may be rejected from the AppStore for legal reasons.
For more information see the API documentation of the constructor.

App Transport Security (ATS)

In Apple TV apps, App Transport Security (ATS) enforces best practices in the secure connections between an app and its back end. Migrating from http to https has to be planed for the more secure communication. However for this moment, if you decide to keep http in KMA_Springstreams library, please add following into the project plist file, otherwise please activate ssl on in the library.
<key>NSAppTransportSecurity</key>
<dict>
        <key>NSAllowsArbitraryLoads</key>
        <false/>
        <key>NSExceptionDomains</key>
        <dict>
            <key>tns-cs.net</key>
            <dict>
                <key>NSIncludesSubdomains</key>
                <true/>
                <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
                <true/>
                <key>NSExceptionRequiresForwardSecrecy</key>
                <false/>
            </dict>
        </dict>
    </dict>
if ATS is not enabled in your application, as NSAllowsArbitraryLoads = true, then you don't need to modify anything.

Notification registration for debug purpose

From KMA streaming iOS version 1.7.0, a notification is inserted into the implementation, so that the customers are able to retrieve the requests sent by the library, see more info KMA_STREAMING_DEBUGINTERFACE_NOTIFICATION. The notification contains a NSDictionary object, with the keys, "Request" and "Statuscode". With the following implementation, it is sample to fetch the debug information.

 [[NSNotificationCenter defaultCenter] addObserver:self selector:@ selector(handleApplicationEvent:) name:KMA_STREAMING_DEBUGINTERFACE_NOTIFICATION object:nil];
 − (void) handleApplicationEvent:(NSNotification *)n {
 if(KMA_STREAMING_DEBUGINTERFACE_NOTIFICATION == [n name]) {
         have the implementation
 }
 }
 
Please Note: Set the debug mode (KMA_SpringStreams.debug) to false in your live product, otherwise there will be a debug flag in the measurement request.

BitCode

Bitcode is a new feature on iOS 9, an intermediate representation of a compiled program. Now you have the new KMA_SpringStreams lib with bitcode enabled, for your application you have the chance to enable or disable the bitcode service.

Integration into Swift Project

If the project is a Swift project, a swift bridging header file is required for the integration, more tutorial can be found here: https://kantarmedia.atlassian.net/wiki/spaces/public/pages/159726961/Tutorial+on+how+to+import+KMA+measurement+Objective-C+library+into+Swift+project

Offline Mode

Kantar Media Streaming Sensor AppleTV has feature so called "offlineMode". This mode can be switched on and off by using public API: KMA_SpringStreams.offlineMode. If the lib is configured to offlineMode, KMA_SpringStreams library will hold all requests in a local buffer and send them when the device goes back online. KMA_SpringStreams lib checks the Internet connection regularly by using the Timer and send the data as soon as possible. Please notice:

  1. Old requests will be dropped if too many requests pump into local buffer for the limitation in buffer size. The default buffer size is 500. The data will be stored in a local file, so the lib will not lose the requests even if the application terminates.
  2. KMA_SpringStreams lib tries to send the requests in a fixed rate, 10 seconds by default, and sends them if device is online.

NextUID

Beginning with the Kantar Media Streaming Library 1.9.0, we are providing a getter-method to retrieve the next UID that will be used when tracking is started in the streaming sensor. Developers can call getNextUID() to retrieve the UID of the stream, which is played next. The track() method will now accept additional parameter handle which is UID retrieved before.

UDID

Advertising ID is optional in springstream library, if it exists, it will be used as primary unique ID (AdsupportFramework is required for advertising ID). ID_For_Vendor is retrieved by KMA_springstreams library and will be used to ID the device by the help of "Panel App".

Please attention: Apple will reject all the applications which retrieve advertising ID but with no advertising content provided. So Advertising-Framework is linked as optional in the library, If the Advertising ID should be used as udid, please import Advertising-Framework into your projects.

NOTICE

Please Note: Some components in Kantar Media Sensor libs are running in background threads. Please keep the initialization and usage of Spring libs in your main thread, Spring libs will not block your UI display.

Release Notes

Version 1.13.0

Changes Attribute Description
c-parameter Improvement

c-parameter is added to the request as a fallback for missing cookie.

kid Improvement

A new identifier kid is now added to the measurement.

iOS 15/iPadOS 15 Platform Review

Support for iOS 15/iPadOS 15 platforms is added.

Version 1.12.1 (Universal Only)

ChangesAttributeDescription
Universal Improvement

New market FI will now be supported inside SDK as part of multi-market measurement

Version 1.12.0

ChangesAttributeDescription
IDFA Enhancement

SDK will now drop the usage of IDFA

Timers Improvement

Timers are now cleared on unload of SDK

SSL off-loader Improvement

Removing ssl off-loader. Box will now take care of all ssl requests.(Internal)

Offline Mode Bug fix

Apps built with Xcode 12 will not crash with this release of SDK

tvOS-14 Platform review

SDK is now compatible and working with tvOS14

Version 1.11.0

ChangesAttributeDescription
Demo Libraries Improvement

Added new target "Demo" to libraries

Version 1.10.0

ChangesAttribute

Description

MultiMarket Support Improvement

Sensor now provides a way to set market/domain via new constructor(limited to Universal artifact, currently supports only UK,NO & DK markets)

Version 1.9.0

ChangesAttribute

Description

ITP 2.0 Analysis

Analysis: Cookie and Local Storage behavior in New Safari.

iOS 12 Analysis

Test sensor on tvOS 12.

UID Improvement

Sensor provides a new method, which returns the UID of the next created stream (BARB only).

Payload elements Improvement

Additional variables for the operating system ("os") and the app version ("av") have been added.

Version 1.8.0

ChangesAttribute

Description

32Bit iOS devices Bugfix

Fixes a crash on 32-bit devices, when using a VirtualMeter app.

Scrubbing Improvement

Scrubbing now will not add more playstates to request.

Requests Improvement

New payload information in requestes: OS Version & Application Name.

32Bit iOS devices Bugfix

Fixes a bug, which causes the VirtualMeter app been triggered to often.

Version 1.7.3

ChangesAttribute

Description

Control over IDFA Access Bugfix

The use of the IDFA can now be disabled in constructor. See API documentation for more information.

Version 1.7.2

ChangesAttribute

Description

UID Bugfix

UID generation now working correctly also on 32-bit devices.

Version 1.7.1

ChangesAttribute

Description

Payload object Improvement

OS Version (osv) and Application Name (an) now are added to the payload object of each request.

User agent Improvement

OS Version and Application Name now are added to the user agent string.

Cookie Management Improvement

Store cookies in app data in order to prevent deletion of the cookies.

Expose identifiers Improvement

The mobile identifiers can be accessed with the new public method getEncryptedIdentifiers of the class Stream.

Ringbuffer Improvement

Ringbuffer now flushes all requests when the app goes into background.

SSL Improvement

Non-SSL communication has been removed.

Ringbuffer Improvement

Requests from the ringbuffer will now be sent always, not only in offline mode.

Streamname Refaktoring

Variable stream is now mandatory.

UID Improvement

Randomness of UID has been increased and UID is now accessable with an getter.

Ringbuffer Handling Improvement

Requests from the ringbuffer should be sent always, not only in offline mode.

Player position Bugfix

Player position (PST object) not accurate in Offline mode for app streaming.

URL Scheme Trigger Improvement

The VM Trigger frequence has been raised. Within first month after install trigger VM once a week. After the first month after install, trigger VM once a month.

URL Scheme Trigger Improvement

The URL scheme trigger triggers the CamelCase version first, if unsuccessful the lowercase version is called.

AVPlayerViewController Improvement

The deprecated API MPMoviePlayerController now is replaced by AVPlayerViewController, in the sample KMA_MediaPlayerAdapter implementation.

Request Debugger Improvement

A debug Notification is integrated into the library, so that the customers are able to fetch the request sent by the library. See more KMA_STREAMING_DEBUGINTERFACE_NOTIFICATION.

Debug mode Improvement

Debug mode should be set to false if the application is live product. If the debug set to true, the KMA library will automatic add a flag "isDebug=1" in the http request.

URL Scheme Improvement

New beta iOS 10 release has already fixed the url-scheme bug, now capital letters are again valid in url-scheme registration.

URL encoding Bugfix

URL encoding component is updated in the library. Symbols will be also url-encoded in measurement requests.

Version 1.4.3

ChangesAttribute

Description

Project setting Improvement

Enabled Modules (C and Objective-C) (CLANG_ENABLE_MODULES) = NO, in order to eliminate the wired warnings.

Version 1.4.2

ChangesAttribute

Description

Bitcode Improvement

Compile the libraries by using xcode 7, in order to avoid bitcode version confict by xcode 7 and 8.

Version 1.4.1

ChangesAttribute

Description

Compile Target Improvement

Downgrade the compile target to tvOS 9.0, so that all tvOS projects can apply.

Version 1.4.0

ChangesAttribute

Description

First Release Improvement

This is the first version for Apple TVOS, the library is based on the iOS streaming project, but a new project and configured for Apple TVOS.