Difference between revisions of "Digital Measurement iOS Artifactory Guide"

From Engineering Client Portal

 
(13 intermediate revisions by the same user not shown)
Line 1: Line 1:
{{Breadcrumb|}} {{Breadcrumb|Digital}} {{Breadcrumb|DCR & DTVR}} {{CurrentBreadcrumb}}
+
{{Breadcrumb|}} {{Breadcrumb|Digital}} {{Breadcrumb|Digital Downloads}} {{CurrentBreadcrumb}}
 
[[Category:Digital]]
 
[[Category:Digital]]
 +
 
__NOTOC__
 
__NOTOC__
The Nielsen AppSDK can either be downloaded directly or can be integrated directly within an application through the use of a CocoaPod or Gradle.
+
The Nielsen AppSDK can either be downloaded directly or integrated with a supported Dependency Manager.
 
 
= How to install Nielsen SDK in iOS  =
 
CocoaPods is a dependency manager for Swift and Objective-C Cocoa projects. It has over 30 thousand libraries and is used in over 1.9 million apps. The Nielsen SDK now uses this distribution framework for improved version management and provides a Static and Dynamic Framework.
 
 
 
== Initial Configuration ==
 
The Nielsen SDK integration requires Cocoapods. 
 
* The Dynamic Framework which requires Cocoapods Version 1.6.1 or higher.
 
* The Static Framework requires Cocoapods version 1.4.0. or higher.
 
 
 
The full installation guide for this framework is provided on the [https://guides.cocoapods.org/using/getting-started.html Getting Started] page, and how to set up the Podfile is mentioned in [https://guides.cocoapods.org/using/using-cocoapods.html Using Cocoapods] page.
 
 
 
== Repository Credentials ==
 
The first step is to add the credentials received from Nielsen into your .netrc file.
 
Navigate to your home folder and create a file called .netrc
 
<syntaxhighlight lang=Swift>
 
cd ~/
 
vi .netrc
 
</syntaxhighlight>
 
 
 
Within this file you need to add your credentials in the following format:
 
<syntaxhighlight lang=Javascript>
 
machine raw.githubusercontent.com
 
login <Nielsen App SDK client>
 
password <Auth token>
 
</syntaxhighlight>
 
<br>
 
<blockquote>
 
[[Image:AlertIcon.png|left|60px|link=|class=smallIcon]] Please do not upload any file to github or bitbucket containing the credentials above.
 
This will automatically lock your access.
 
</blockquote>
 
=== Credentials ===
 
Obtain credentials '''[[Digital Downloads| → here ←]]'''
 
 
 
== Verify version of Cocoapods ==
 
First verify that Cocoapods is installed.
 
<syntaxhighlight lang=Javascript>
 
pod --version
 
</syntaxhighlight>
 
If it is not, then install.<br >
 
===== Install via gem =====
 
<syntaxhighlight lang=Javascript>
 
sudo gem install cocoapods
 
</syntaxhighlight>
 
===== Install using homebrew =====
 
<syntaxhighlight lang=Javascript>
 
brew install cocoapods
 
</syntaxhighlight>
 
== Add Cocoapod repository ==
 
=== Dynamic Framework (Cocoapods 1.6.1+) ===
 
If using '''Dynamic Framework''' (preferred approach), from the command line, type the following:
 
<syntaxhighlight lang=Javascript>
 
pod repo add NielsenAppSDK https://github.com/NielsenDigitalSDK/nielsenappsdk-ios-specs-dynamic.git
 
</syntaxhighlight>
 
Make sure you run the pod init command in your **project's directory.**
 
<syntaxhighlight lang=Javascript>
 
pod init
 
</syntaxhighlight>
 
<br>You now need to slightly modify the PodFile that was created in this directory.  From the command line, you can use vi or vim to edit. <br> The following must be in the PodFile:
 
==== Podfile ====
 
<syntaxhighlight lang=Javascript>
 
platform :ios, '11.0'
 
source 'https://github.com/NielsenDigitalSDK/nielsenappsdk-ios-specs-dynamic.git'
 
 
 
target 'YourProjectsNameHere' do
 
use_frameworks!
 
    #Pods for ApplicationTarget
 
    pod 'NielsenAppSDK'
 
end
 
</syntaxhighlight>
 
 
 
=== For Static Framework (Cocoapods 1.4+) ===
 
From the command line, type the following:
 
<syntaxhighlight lang=Javascript>
 
pod repo add NielsenAppSDK https://github.com/nielsendigitalsdk/nielsenappsdk-ios-specs.git
 
</syntaxhighlight>
 
Make sure you run the pod init command in your **project's directory.**
 
<syntaxhighlight lang=Javascript>
 
pod init
 
</syntaxhighlight>
 
<br>You now need to slightly modify the PodFile that was created in this directory.  From the command line, you can use vi or vim to edit. <br> The following must be in the PodFile:
 
==== Podfile ====
 
<syntaxhighlight lang=Javascript>
 
platform :ios, '11.0'
 
source 'https://github.com/NielsenDigitalSDK/nielsenappsdk-ios-specs.git'
 
 
 
target 'YourProjectsNameHere' do
 
    #Pods for ApplicationTarget
 
    pod 'NielsenAppSDK'
 
end
 
</syntaxhighlight>
 
 
 
''NOTE: You can have multiple pods within the Podfile''
 
<!--
 
=== For Cocoapods Versions < 1.6.0 ===
 
 
 
If you are using a version of Cocoapods that is less than 1.6.0, you have a Swift Project and your pod has '''use_frameworks!''' please use the following:
 
 
 
<syntaxhighlight lang=javascript>
 
# Uncomment the next line to define a global platform for your project
 
platform :ios, '8.0'
 
source 'https://github.com/NielsenDigitalSDK/nielsenappsdk-ios-specs.git'
 
 
 
target 'YourProjectsNameHere' do
 
  # Comment the next line if you're not using Swift and don't want to use dynamic frameworks
 
use_frameworks!
 
    #Pods for ApplicationTarget
 
    pod 'NielsenAppSDK'
 
 
 
static_frameworks = ['NielsenAppSDK']
 
# make all the other frameworks into static frameworks by overriding the static_framework? function to return true
 
pre_install do |installer|
 
    installer.pod_targets.each do |pod|
 
        if static_frameworks.include?(pod.name)
 
            puts "Overriding the static_framework? method for #{pod.name}"
 
            def pod.static_framework?;
 
            true
 
            end
 
        end
 
    end
 
end
 
end
 
 
 
</syntaxhighlight>
 
<br>
 
-->
 
 
 
== Execute Install ==
 
Once that has been edited, you can now execute the install:
 
<syntaxhighlight lang=Swift>
 
pod install
 
</syntaxhighlight>
 
<br>
 
Cocoapods will automatically create a new file with extension “.xcworkspace”. From this moment, that file should be used for using the target project instead of previous one with extension “.xcodeproj”. Inside of this workspace you will see “Pods” target which will include ready to use NielsenAppApi framework.
 
 
 
Open the file with the extension of <code>.xcworkspace</code> file using Xcode.
 
<!--
 
== Build Notes ==
 
Please note that the Nielsen dynamic framework contains slices for devices and simulators.  When building your project it is recommended that Simulator slices are removed before sending the app to the AppStore.  An example of the shell script that should be added as a Run Script phase in the application is attached
 
<syntaxhighlight lang=Swift>
 
APP_PATH="${TARGET_BUILD_DIR}/${WRAPPER_NAME}"
 
 
 
# This script loops through the frameworks embedded in the application and
 
# removes unused architectures.
 
find "$APP_PATH" -name '*.framework' -type d | while read -r FRAMEWORK
 
do
 
FRAMEWORK_EXECUTABLE_NAME=$(defaults read "$FRAMEWORK/Info.plist" CFBundleExecutable)
 
FRAMEWORK_EXECUTABLE_PATH="$FRAMEWORK/$FRAMEWORK_EXECUTABLE_NAME"
 
echo "Executable is $FRAMEWORK_EXECUTABLE_PATH"
 
 
 
EXTRACTED_ARCHS=()
 
 
 
for ARCH in $ARCHS
 
do
 
echo "Extracting $ARCH from $FRAMEWORK_EXECUTABLE_NAME"
 
lipo -extract "$ARCH" "$FRAMEWORK_EXECUTABLE_PATH" -o "$FRAMEWORK_EXECUTABLE_PATH-$ARCH"
 
EXTRACTED_ARCHS+=("$FRAMEWORK_EXECUTABLE_PATH-$ARCH")
 
done
 
 
 
echo "Merging extracted architectures: ${ARCHS}"
 
lipo -o "$FRAMEWORK_EXECUTABLE_PATH-merged" -create "${EXTRACTED_ARCHS[@]}"
 
rm "${EXTRACTED_ARCHS[@]}"
 
 
 
echo "Replacing original executable with thinned version"
 
rm "$FRAMEWORK_EXECUTABLE_PATH"
 
mv "$FRAMEWORK_EXECUTABLE_PATH-merged" "$FRAMEWORK_EXECUTABLE_PATH"
 
 
 
done
 
</syntaxhighlight>
 
-->
 
 
 
== Pod Versions ==
 
The following Pod versions are now available:
 
* NielsenAppSDK
 
* NielsenTVOSAppSDK
 
* VRIAppSDK
 
 
 
=== Regional Builds ===
 
* NielsenAGFAppSDK
 
*  NielsenAGFTVOSAppSDK
 
* NielsenAGFNoAdAppSDK
 
*  NielsenAGFNoAdTVOSAppSDK
 
  
 +
= Nielsen SDK Dependency Managers for iOS =
 +
The Nielsen SDK currently supports three different dependency managers. 
 +
* '''[[Digital_Measurement_iOS_Cocoapods_Guide|CocoaPods]]''' -  a dependency manager for Swift and Objective-C Cocoa projects. It has over 30 thousand libraries and is used in over 1.9 million apps.
 +
** The Dynamic Framework which requires Cocoapods Version 1.6.1 or higher.
 +
** The Static Framework requires Cocoapods version 1.4.0. or higher.
  
=== Additional Resources ===
+
* '''[[Digital Measurement iOS Carthage Guide|Carthage]]''' - a simple dependency manager for macOS and iOS, created by a group of developers from GitHub. Carthage is intended to be the simplest way to add frameworks to your Cocoa application. Carthage builds your dependencies and provides you with binary frameworks, but you retain full control over your project structure and setup. Please note: Carthage does not automatically modify your project files or your build settings.
  
For more information on [https://guides.cocoapods.org/using/getting-started.html) CocoaPods] or How to set up the Profile in the [https://guides.cocoapods.org/using/using-cocoapods.html) Using Cocoapods] page.
+
* '''[[Digital Measurement iOS Swift Package Manager Guide|The Swift Package Manager]]''' is available as a part of the Xcode application for MacOS. We recommend to use the Xcode version 12.x with Swift 5.3 that is the minimum required version of Swift with binary dependencies support. Apple Xcode can be downloaded and installed using Mac App Store application or from the Apple web site (https://developer.apple.com/account) in the Downloads section.
<br>
 
<br>
 

Latest revision as of 03:59, 17 December 2020

Engineering Portal breadcrumbArrow.png Digital breadcrumbArrow.png Digital Downloads breadcrumbArrow.png Digital Measurement iOS Artifactory Guide


The Nielsen AppSDK can either be downloaded directly or integrated with a supported Dependency Manager.

Nielsen SDK Dependency Managers for iOS

The Nielsen SDK currently supports three different dependency managers.

  • CocoaPods - a dependency manager for Swift and Objective-C Cocoa projects. It has over 30 thousand libraries and is used in over 1.9 million apps.
    • The Dynamic Framework which requires Cocoapods Version 1.6.1 or higher.
    • The Static Framework requires Cocoapods version 1.4.0. or higher.
  • Carthage - a simple dependency manager for macOS and iOS, created by a group of developers from GitHub. Carthage is intended to be the simplest way to add frameworks to your Cocoa application. Carthage builds your dependencies and provides you with binary frameworks, but you retain full control over your project structure and setup. Please note: Carthage does not automatically modify your project files or your build settings.
  • The Swift Package Manager is available as a part of the Xcode application for MacOS. We recommend to use the Xcode version 12.x with Swift 5.3 that is the minimum required version of Swift with binary dependencies support. Apple Xcode can be downloaded and installed using Mac App Store application or from the Apple web site (https://developer.apple.com/account) in the Downloads section.