iOS Privacy and Opt-Out: Difference between revisions
From Engineering Client Portal
ColinBrown (talk | contribs) |
ColinBrown (talk | contribs) |
||
Line 38: | Line 38: | ||
super.viewDidLoad() | super.viewDidLoad() | ||
self.view.backgroundColor = UIColor(patternImage: UIImage(named: "new_ios_bg.png")!) | self.view.backgroundColor = UIColor(patternImage: UIImage(named: "new_ios_bg.png")!) | ||
self.nielsenApi = NielsenInit.createNielsenApi(delegate: self) | self.nielsenApi = NielsenInit.createNielsenApi(delegate: self) //create an instance | ||
if let appApi = self.nielsenApi { | if let appApi = self.nielsenApi { |
Revision as of 22:05, 7 October 2020
Privacy and Opt-Out
There are two primary methods for implementing user Opt-out preferences:
- OS-level Opt-out - managed by AppTracking or Limit Ad Tracking setting on device (preferred approach).
- User Choice - Direct call to SDK. Can be used without the Ad Framework
Special Note Regarding Apps in the Kids Category
If you are building an app that will be listed in the Kids Category:
- Ensure that you are using the NoID version of the Nielsen SDK Framework.
- Immediately following the initialization of the Nielsen SDK ensure you call the userOptOut API with Opt out selection:
NielsenAppApi?.userOptOut("nielsenappsdk://1"); // User opt-out
OS-level Opt-out
OS-level Opt-out method available on Nielsen iOS
The Nielsen SDK automatically leverages the iOS's Limit Ad Tracking or AppTracking setting.
- If the User's device is running < iOS 13.x, the Nielsen SDK will check the status of Limit Ad Tracking.
- iOS14 modifies the way Apple manages the collection of a User's Opt-In status through AppTracking. Starting with Version 8.x+, the Nielsen App SDK will check the iOS version during initialization. If the device is running iOS12 or iOS13, the Limit Ad Tracking setting is requested. If iOS14.x +, then AppTracking is utilized.
Webview Example
The below code is an example of displaying the Nielsen Privacy page to the user.
import UIKit
import WebKit
import NielsenAppApi
class OptOutVC: UIViewController, NielsenAppApiDelegate, WKNavigationDelegate {
var webView: WKWebView!
var nielsenApi: NielsenAppApi!
override func loadView() {
webView = WKWebView()
webView.navigationDelegate = self
view = webView
}
override func viewDidLoad() {
super.viewDidLoad()
self.view.backgroundColor = UIColor(patternImage: UIImage(named: "new_ios_bg.png")!)
self.nielsenApi = NielsenInit.createNielsenApi(delegate: self) //create an instance
if let appApi = self.nielsenApi {
//Getting the optPut URL from SDK
if let url = URL(string: appApi.optOutURL) { //query the nielsensdk for the current privacy page
webView.load(URLRequest(url: url))
webView.allowsBackForwardNavigationGestures = true
}}}}
User Choice
The User Choice method can be used without the Ad Framework, or in situations where the publisher does not wish to use the App Tracking Transparency Framework.
The User Choice opt-out method works as follows:
- Get the Nielsen opt-out URL via optOutURL
- Display a WebView element whose loadUrl is set to the value obtained from optOutURL
- Detect if the WebView URL changes to a special URL that indicates Opt-in, or Opt-out and close the WebView
- Opt-out if the WebView URL =
nielsenappsdk://1
- Opt-in if the WebView URL =
nielsenappsdk://0
- Opt-out if the WebView URL =
- Pass the detected URL to the userOptOut function
- Example:
NielsenAppApi?.userOptOut("nielsenappsdk://1"); // User opt-out
- Example:
Legacy Opt-out example code
Objective-C
- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)
navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler {
NSURLRequest *request = [navigationAction request];
NSString *url = [[request URL]absoluteString];
if([url isEqualToString:self.NIELSEN_URL_OPT_OUT] || [url isEqualToString:self.NIELSEN_URL_OPT_IN]){
[self.nielsenApi userOptOut:url];
decisionHandler(WKNavigationActionPolicyAllow);
}else{
decisionHandler(WKNavigationActionPolicyCancel);
}
}
Swift
var webView: WKWebView!
var NIELSEN_URL_OPT_OUT : String = "nielsenappsdk://1"
var NIELSEN_URL_OPT_IN : String = "nielsenappsdk://0"
func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction,
decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
let urlStr = navigationAction.request.url?.absoluteString
if(urlStr == NIELSEN_URL_OPT_OUT || urlStr == NIELSEN_URL_OPT_IN){
let appApi = self.nielsenApi
appApi?.userOptOut(urlStr)
decisionHandler(.allow)
}else{
decisionHandler(.cancel)
}
}
Retrieve current Opt-Out preference
Whether the user is opted out via OS-level Opt-out or via User Choice Opt-out, the current Opt-Out status as detected by the SDK is available via the optOutStatus property in the Nielsen SDK API
Required Privacy Links
Users must either have access to the "About Nielsen Measurement" page, or have similar text available within the native app. Include "About Nielsen Measurement" and "Your Choices" link in the Privacy Policy / EULA or as a button near the link to the app's Privacy Policy.
In addition, the following text must be included in your app store description.
"Please note: This app features Nielsen’s proprietary measurement software which contributes to market research, like Nielsen’s TV Ratings. Please see https://www.nielsen.com/us/en/legal/privacy-statement/digital-measurement/ for more information"