Kantar Media Streaming Sensor iOS
Kantar Media Streaming Measurement Library for iOS
|
[[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
}
}
Kantar Media Streaming Sensor iOS 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 iOS Timer and send the data as soon as possible. Please notice:
Device ID(did) | Advertising ID(ai) | MAC ID(mid) | ID_For_Vendor(ifv) | |
---|---|---|---|---|
iOS 4 | — | — | MAC ID(mid) | — |
iOS 5 | — | — | MAC ID(mid) | — |
iOS 6 | — | Advertising ID(ai) | MAC ID(mid) | ID_For_Vendor(ifv) |
iOS 7 | — | Advertising ID(ai) | — | ID_For_Vendor(ifv) |
iOS 8 | — | Advertising ID(ai) | — | ID_For_Vendor(ifv) |
iOS 9 | — | Advertising ID(ai) | — | ID_For_Vendor(ifv) |
Considering that the Apple private policy is changing all the time, Kantar Media Sensor libs have to adapt different UDIDs for identifying the end user's devices.
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 Kantar Media Sensor libs, If the Advertising ID should be used as udid, please import Advertising-Framework into your projects.
Starting from streaming 1.11.1 we are changing the way we measure data in chomecast context. Instead of measuring everything from the sender application we created a new custom reciever which you will receive with kantarmedia-streaming-js artifact. To achieve this you need to include all the files that are included inside src folder in the package except adapter into your project. And On cast session connected(didStartSession) and resume(didResumeSession) events, you need to call sendMessage method of CastSessionManager class
Please Note: Some components in Kantar Media Sensor libs are running in background threads. Please keep the initialization and usage of Kantar Media Sensor libs in your main thread, Kantar Media Sensor libs will not block your UI display.
File | Description |
---|---|
kantarmedia-streaming-device.a | This is the version that has been compiled with ARM support and which is intended for execution on iOS devices |
kantarmedia-streaming-simulator.a | This is the version that has been compiled with x86 support and which is intended for execution on iOS simulator |
kantarmedia-streaming-fat.a | This is a combined version of the two libraries above, which can be executed on both, iOS devices and iOS simulator because it contains code for ARM and x86 execution. This file is called "fat" as it is roughly double the size (because it combines both versions) |
If size does not matter for the app, the "fat" version is the carefree option to be used for execution on simulator and real devices.
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. |
Changes | Attribute | Description |
---|---|---|
Universal | Improvement |
New market FI will now be supported inside SDK as part of multi-market measurement |
Changes | Attribute | Description |
---|---|---|
IDFA | Update |
SDK will now drop the usage of IDFA |
Timers | Improvement |
Timers are now cleared on unload of SDK |
URLScheme | Enhancement |
SDK will now check for old URLScheme first and then the new one |
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 |
iOS14/iPadOS14 | Platform review |
SDK is now compatible and working with iOS14/iPadOS14 |
Changes | Attribute | Description |
---|---|---|
Demo Libraries | Improvement |
Added new target "Demo" to libraries |
WKWebview | Improvement |
Replaced UIWebview with WKWebview |
Changes | Attribute | Description |
---|---|---|
Scrubbing | Improvement |
Improved scrubbing algorithm so that it would not add additional playstates in certain scenarios |
Changes | Attribute | 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) |
Changes | Attribute | Description |
---|---|---|
ITP 2.0 | Analysis |
Analysis: Cookie and Local Storage behavior in New Safari. |
iOS 12 | Analysis |
Test sensor on iOS 12. |
UID | Improvement |
Sensor provides a new method, which returns the UID of the next created stream (BARB only). |
ChromeCast | Improvement |
Add ChromeCast support to the iOS sensor. |
Payload elements | Improvement |
Additional variables for the operating system ("os") and the app version ("av") have been added. |
Changes | Attribute | 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. |
URL schema trigger | Bugfix |
VirtualMeter app trigger mechanism has been made more reliable. |
32Bit iOS devices | Bugfix |
Fixes a bug, which causes the VirtualMeter app been triggered to often. |
Changes | Attribute | Description |
---|---|---|
Control over IDFA Access | Bugfix |
The use of the IDFA can now be disabled in constructor. See API documentation for more information. |
Changes | Attribute | Description |
---|---|---|
UID | Bugfix |
UID generation now working correctly also on 32-bit devices. |
Changes | Attribute | Description |
---|---|---|
Useragent | Improvement |
OS Version and Application Name now are added to the user agent string. |
Payload object | Improvement |
OS Version (osv) and Application Name (an) now are added to the payload object of each request. |
Changes | Attribute | Description |
---|---|---|
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. |
Changes | Attribute | Description |
---|---|---|
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. |
Changes | Attribute | Description |
---|---|---|
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. |
Changes | Attribute | Description |
---|---|---|
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 | bug fix |
URL encoding component is updated in the library. Symbols will be also url-encoded in measurement requests. |
Changes | Attribute | Description |
---|---|---|
URL Scheme | Improvement |
In iOS 10, all the url schemes have to be lower-case string, please modify the plist to grant lower-cased url scheme. |
API modifications | Improvement |
All the KMA streaming library components are now with KMA as prefix, please adapt the changes in your implementation, more details can be found in the API documentation enclosed. |
API replacement | Improvement |
Some of the APIs are replaced with the latest iOS APIs, for better compability. From this version, iOS 6 will not be supported any more. |
Changes | Attribute | Description |
---|---|---|
Https transmission | Improvement |
Change the https prefix for some clients on their demand. QSIClient now is also aligned with ssl options. |
Changes | Attribute | Description |
---|---|---|
Https transmission | Improvement |
new API setSSL() is added to the library, default https ssl transmission is off, can be switched on. please don't swtich it on until Kantar media Support Team suggest so. |
Changes | Attribute | Description |
---|---|---|
Bitcode | Bug |
Enabled "-fembed-bitcode" in 'Other C Flags', so that bitcode service can be enabled in applications. |
Compiling warnings | Improvement |
Set "Precompiling Header Prefix" to NO, to avoid precompiling warnings. |
Changes | Attribute | Description |
---|---|---|
Bitcode | Improvement |
Bitcode is enabled in the KMA_SpringStreams lib, clients have the chance to enable or disable the bitcode service in their applications. |
Changes | Attribute | Description |
---|---|---|
Request Timer | Fix |
dipatch the NStimer in background thread, avoid the UI block |
Background Thread Handler | Improvement |
Modify the corresponding background thread expiration handlers, prevent from the crash caused by the auto-release of the OS(180sec, or 600sec) |
Changes | Attribute | Description |
---|---|---|
Bundle Name | Improvement |
The 'an' parameter in the http request is restored to be the CFBundleDisplayname, instead of CFBundleName. |
Changes | Attribute | Description |
---|---|---|
ARC | Fix |
The Kantar Media Sensor lib is now changing to ARC(automatic reference counting), in order to wipe out/fix the potential/existing bugs. |
Delay on Url switch | Improvment |
Postpone the URL scheme call to UIApplicationDidBecomeActive, only for panelApp users |
CFBundleName | Fix |
Replace the CFBundleDisplayName with CFBundleName in the requests |
Changes | Attribute | Description |
---|---|---|
Debug Mode | Modification |
Starting from the version 1.2.4, the debug mode of Kantar Media Streaming Sensor lib is set back to false. When debug mode is switch to YES, advertising ID and ID_for_vendor will be displayed in plain text in console, as the reference for the further test. |
Changes | Attribute | Description |
---|---|---|
Panel App | Improvement |
Starting from the version 1.2.3, Kantar Media Streaming Sensor lib is able to pair with previous customized panelApp, as well as 'Nip App'. The related component is optimized. |
Advertising ID | Modification |
As Apple requested, add the check of user's 'Limit Ad tracking' option before reading the advertising ID. |
Changes | Attribute | Description |
---|---|---|
Data encoding | Fix |
Fix a parameter encoding problem |
Panel App | Improvement |
Speed up the switch to panel App, this improvement applies to the related clients |
Panel App | Modification |
Preconditions which leads to the panel App switch has been modified. With this modification, the main App with Kantar Media Sensor lib imported can also trigger the panel App even though the panel App has been installed after the main App. New Kantar Media Sensor lib attempts on switching to the panel App every time when the main App goes foreground. This modification applies to the related clients |
Changes | Attribute | Description |
---|---|---|
Compatibility of Kantar Media Streaming Sensor libs | Special feature |
Strating with KMA_SpringStreams 1.2.0, Spirng normal and streaming sensor can be imported and measure in one application |
App name retrieving | Fix |
Spirng libs will be tolerant even if the app name is not registered correctly in application |
User-agent String | New Feature |
Starting with KMA_SpringStreams 1.1.1, the default user-agent string of the device is inserted into http client parameters to be collected by the backend box. The user-agent string will be used for device type recognition. |
Availablity of retrieving IFV | Fix |
Fixed the crash caused by unavailable call of retrieving IFV (idforVendor). This bug crashes the app in iOS versions below 6.0.0. |
Reorganization of imports | Improvement |
Reorganized the header files, includes, imports, in order to avoid potential duplicate-symbols-error in case the -all_load flag is set in the main application. |
Force to apply aid | Special feature |
This update is only applied to some of our clients based on their requirements. Kantar Media Sensor lib will produce a compile error to force the usage of advertising id (with the adSupportFramework imported into application) |
Changes | Attribute | Description |
---|---|---|
PanelApp Switch: Url Scheme | New Feature |
Since KMA_SpringStreams 1.1.0, the lib will try to call a corresponding PanelApp (by URL Scheme, happens in the initialization phase, only called once if ifv is not changed since last lauch), and send ifv (identifier_for_vendor) and related parameters to the PanelApp. This mechanism is designed for identifying each single device owned by the end user. (ifv is unique for each vendor, but not globally) For adapting this mechanism, the clients of KMA_SpringStreams lib has to implement their own PanelApp and also import KMA_Spring/KMA_SpringStreams lib into it. |
arm64 bits support | New Feature |
Since KMA_SpringStreams 1.1.0, the lib will support arm64 bit architecture, KMA_SpringStreams lib will be applicable for latest iOS devices. |
Customized special fields | Changes |
More customized parameteres/special fields are inserted into measuring http request, applied to our lib accordingly based on the different domains. |
Changes | Attribute | Description |
---|---|---|
Identifier of Device | New Feature | The identifier of the device would be advertisement id + identifier_for_vendor(https://developer.apple.com/library/ios/documentation/uikit/reference/UIDevice_Class/Reference/UIDevice.html#//apple_ref/occ/instp/UIDevice/identifierForVendor) if your application contains video advertisement, otherwise the identifier of the device would be only identifier for vendor. This change responses to the modification of Apple Developers' Policy, advertisement ids are not accepted if no video adversements are involved in the application. |
Changes | Attribute | Description |
---|---|---|
OfflineMode | New Feature | If the app is configured to offlineMode, Kantar Media Streaming Sensor library would hold all requests in a local buffer and send them until the device goes back online. Kantar Media Streaming Sensor lib checks the internet connection regularly by using a Timer and send the data as soon as possible. Please notice:
|
memory leak | Fix | If the method Stream.stop is called in some cases a memory leak will occur |
Problem maxstates | Fix | Problem fixed if maxstates is reached |
KMA_StreamAdapter and Meta Object | Change | KMA_StreamAdapter is now a protocol and Meta is now a class implementation |
Method KMA_Stream.setDuration | Remove | The duration has to be delivered by the method getDuration (KMA_StreamAdapter-p) |