iOS SDK Integration

Current SDK Version: 2.7.0

Introduction

This guide is intended for developers who are integrating the with an iOS app. After you have integrated the SDK, choose the relevant ad format and follow the steps for implementing that format.

Prerequisites

  • Xcode 11 + with Bitcode enabled
  • iOS 9 +

Step 1: Integration

Fyber supports both CocoaPods and manual download to integrate our SDK:

CocoaPods

Add the following line to your Podfile and run the pod install command

pod 'FairBidSDK', '~> 2.7.0'

Manual Download

  1. Download the
  2. Extract the inner zip file
  3. Drag and drop the following files to your project, making sure to have Copy Items checked
  4. FairBidSDK.framework
  5. FairBidSDKResources.bundle
  6. IASDKResources.bundle

Step 2: Configuring Your Xcode Project

Import Frameworks

Import the following frameworks by pasting this code into your AppDelegate (you may need to enable modules in your Build Settings). (If you cannot enable modules because you're e.g. using [Objective]-C++, add these frameworks to the Linked Frameworks and Libraries section in Xcode).

@import AdSupport;
@import CoreGraphics;
@import CoreLocation;
@import CoreTelephony;
@import MediaPlayer;
@import MessageUI;
@import MobileCoreServices;
@import QuartzCore;
@import Security;
@import StoreKit;
@import SystemConfiguration;
@import WebKit;
#import <FairBidSDK/FairBid.h>
import AdSupport
import CoreGraphics
import CoreLocation
import CoreTelephony
import MediaPlayer
import MessageUI
import MobileCoreServices
import QuartzCore
import Security
import StoreKit
import SystemConfiguration
import WebKit

Swift Bridging Header

When using Swift, add the following line to your app's Bridging Header. If you do not, you will encounter "Use of unresolved identifier 'FairBid'" errors.

#import <FairBidSDK/FairBid.h>

ObjC flag

Declare the -ObjC flag in the project by going to the application target >> Build Settings >> Other Linker Flags. Once there, click add new (+), and enter -ObjC.

Link Libraries

From the General tab of your Xcode project's target settings page, link against these libraries:

  • libsqlite3.tbd
  • libxml2.tbd

Disable Multitasking

From the General tab of your Xcode project's target settings page, check the box labeled Requires full screen (this disables multitasking support, which must be disabled for ads to be able to set the orientation of their views):

App Transport Security

iOS 9 added App Transport Security (ATS), which requires apps to use HTTPS for all networking. As of 2017, Apple requires that all apps use ATS unless they state a reason they are unable to do so.

All of the 3rd networks that can be used with FairBid fully support ATS, and do not require any additional configuration.

Important:

Starting from the iOS 10.0, if there are two keys present in the info.plist - both NSAllowsArbitraryLoadsInWebContent and NSAllowsArbitraryLoads, the NSAllowsArbitraryLoads has no effect.

If you require global permission, keep only the NSAllowArbitraryLoads with YES in your .plist file, and delete the NSAllowArbitraryLoadsInWebContent key. Otherwise, it doesn't work since the NSAllowArbitraryLoadsInWebContent cancels out the previous one.

The same applies for the following keys:

  • NSAllowsArbitraryLoadsForMedia
  • NSAllowsLocalNetworking

In addition, it is important to understand, that the NSAllowsArbitraryLoadsForMedia does not exclude the VAST/VPAID videos, in terms of ATS. It does not have any effect on the Fyber Marketplace SDK and only overrides the global NSAllowsArbitraryLoads key, which results in a secure request, even it was not intended to do so.

Enabling Global Permissons
To enable a global permission to a non-secured HTTP request, add the following to your Info.plist file:

Add the key and value to the file Info.plist if you open the file as property list.

*Key*
App Transport Security Settings
 
*Type*
Allow Arbitrary Loads

*Value*
YES

Alternatively, if you want to add directly to the source code of the file - Info.plist.

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>

After adding the ATS to the file - Info.plist.

Step 3: Privacy Enhancements and MRAID (optional)

You may statically declare your app’s intended usage of protected data classes by including the appropriate purpose string keys in your Info.plist file.

  • Search for the following code in your Info.plist:
“Privacy - Calendars Usage Description” 
“Privacy - Photo Library Additions Usage Description” 
“Privacy - Photo Library Usage Description” 

Step 4: Adding 3rd Party SDKs

In addition to integrating the , publishers who are using , must integrate chosen 3rd-party networks' SDKs into their app.

  1. Set up your app in the network's dashboard and in the . A step-by-step guide can be found here.
  2. Download the SDK of the relevant network.
    Supported networks and their SDKs can be found here.

Updated about a month ago

iOS SDK Integration


Suggested Edits are limited on API Reference Pages

You can only suggest edits to Markdown body content, but not to the API spec.