Getting Started With Appnext

Welcome to the Appnext developer hub. You'll find comprehensive guides and documentation to help you start working with Appnext as quickly as possible, as well as support if you get stuck. Let's jump right in!

Start Now!

Native Ads

Appnext iOS SDK - Native Ads ad unit

Ad Unit Integration

Native ads SDK allows you to build customized units in the same look and feel as your app. When creating your unique ads, you can choose any combination of ad properties such as app name, description, app URL, image URL, app category, package and more.

Dream the ad units your apps deserve and implement them with quick and easy SDK integration.

Make sure to complete the Getting Started with the iOS SDK steps before you begin

Step 1: Add import statement

Add the following import statement in your pre-compiled header or in your .m/.h file where you intend to instantiate and use the Appnext SDK. If your application is written in swift add it to your bridging-header.

#import <AppnextNativeAdsSDK/AppnextNativeAdsSDK.h>

Step 2: Define a New Native Ads Component

AppnextNativeAdsSDKApi *api = [[AppnextNativeAdsSDKApi alloc] initWithPlacementID:@"REPLACE_WITH_IOS_PLACEMENT_ID"];

Step 3: Requesting Ads

The SDK allow you to change the parameters for the request.

You can set different parameters such as: the number of ads to receive, preferred ad categories and custom postback data.

AppnextNativeAdsRequest *request = [[AppnextNativeAdsRequest alloc] init];
request.count = REPLACE_WITH_AD_COUNT;   // default is 1 ad
request.postback = @"REPLACE_WITH_POSTBACK";   // optional
request.categories = @"REPLACE_WITH_APP_CATEGORIES";   // optional: “cat1,cat2…”
request.creativeType= ANCreativeTypeManaged; // optional. Default is ANCreativeTypeManaged
request.clickInApp = YES;

[api loadAds:request withRequestDelegate:self];

The different options for the request creativeType are:

  • ANCreativeTypeManaged - both video and static available.
  • ANCreativeTypeVideo - video available.
  • ANCreativeTypeStatic - wide image available.

The different options for Click in app are:

  • YES - The App Store will open "in-app" within the running app
  • NO - The App Store will open outside the running app

The delegate need to conform with AppnextNativeAdsRequestDelegate:

@protocol AppnextNativeAdsRequestDelegate 
@optional
- (void) onAdsLoaded:(NSArray *)ads forRequest:(AppnextNativeAdsRequest *)request; //use the received data (ads) to assemble your banner ad
- (void) onError:(NSString *)error forRequest:(AppnextNativeAdsRequest *)request;
@end

// Possible errors returned to client in AppnextNativeAdsRequestDelegate method adError:forrequest:

static NSString * const kAdErrorNoInternetConnection = @"No internet connection";
static NSString * const kAdErrorNoPlacementID = @"Placement ID cannot be empty";
static NSString * const kAdErrorDownloadingResources = @"Error Downloading Resources";
static NSString * const kAdErrorAdNotReady = @"Ad not ready";
static NSString * const kAdErrorPreparingViews = @"Error Preparing Views";
static NSString * const kAdErrorLoadingAd = @"Error Loading Ad";
static NSString * const kAdErrorBadParameters = @"Bad parameters";
static NSString * const kAdErrorEmptyResponse = @"Empty response";
static NSString * const kAdErrorNoAds = @"No ads";
static NSString * const kAdErrorFailedLoadingAds = @"Failed loading ads";
static NSString * const kAdErrorNoSuitableAd = @"No suitable ad";
static NSString * const kNativeAdsErrorRequestNotValid = @"Request cannot be null";

Available properties in AppnextAdData
Extract the following ad metadata, returned in the response, and use its properties to build your customized native UI:

@interface AppnextAdData : NSObject <NSCoding, NSCopying>
@property (nonatomic, strong, readonly) NSString *title;
@property (nonatomic, strong, readonly) NSString *desc;
@property (nonatomic, strong, readonly) NSString *urlImg;
@property (nonatomic, strong, readonly) NSString *urlImgWide;
@property (nonatomic, strong, readonly) NSString *categories;
@property (nonatomic, strong, readonly) NSString *idx;
@property (nonatomic, strong, readonly) NSString *iosPackage;
@property (nonatomic, strong, readonly) NSString *supportedDevices;
@property (nonatomic, strong, readonly) NSString *urlVideo;
@property (nonatomic, strong, readonly) NSString *urlVideoHigh;
@property (nonatomic, strong, readonly) NSString *urlVideo30Sec;
@property (nonatomic, strong, readonly) NSString *urlVideo30SecHigh;
@property (nonatomic, strong, readonly) NSString *bannerId; // The Identifier
@property (nonatomic, strong, readonly) NSString *campaignId;
@property (nonatomic, strong, readonly) NSString *supportedVersion;
@property (nonatomic, strong, readonly) NSString *storeRating;
@property (nonatomic, strong, readonly) NSString *appSize;
@end>

Step 4: Report Impressions

Report impressions for each displayed ad by calling the following function

[api adImpression:adData];

Step 5: Opening the store for one of the ads

[api adClicked:adData withAdOpenedDelegate:self];

Launching the store should only be done by calling the adClicked method.
The delegate need to conform with AppnextNativeAdOpenedDelegate:

@protocol AppnextNativeAdOpenedDelegate 
@optional
- (void) storeOpened:(AppnextAdData *)adData;
- (void) onError:(NSString *)error forAdData:(AppnextAdData *)adData;
@end

// Possible errors returned to client in AppnextNativeAdOpenedDelegate method adError:foraddata:

static NSString * const kNativeAdsErrorAdDataNotValid = @"Ad Data cannot be null";
static NSString * const kNativeAdsErrorCantOpenStore = @"Cant open store on the device";

Step 6: Report "Video Started"

It is mandatory to call the following function, whenever a video is displayed and started playing:

[api videoStarted:adData];

Step 7: Report "Video Ended"

It is mandatory to call the following function, whenever a video ended:

[api videoEnded:adData];

Step 8: Add Privacy Policy Icon

It is mandatory to add Appnext Privacy Policy icon to the ad unit. For your convenience, you can use the following PSD/PNG assets from here. Once placed, clicking the icon should trigger the privacyClicked function.

[api privacyClicked:self.adData withPrivacyClickedDelegate:self];

Example Project

Please find example projects or how to implement the native ads SDK inside the zip file here.

App Categories

  1. Action
  2. Adventure
  3. Arcade
  4. Board
  5. Books
  6. Business
  7. Card
  8. Casino
  9. Catalogs
  10. Dice
  11. Education
  12. Educational
  13. Entertainment
  14. Family
  15. Finance
  16. Food & Drink
  17. Graphics & Design
  18. Health & Fitness
  19. Kids
  1. Lifestyle
  2. Medical
  3. Music
  4. Navigation
  5. News
  6. Photo & Video
  7. Productivity
  8. Puzzle
  9. Racing
  10. Reference
  11. Role Playing
  12. Simulation
  13. Social Networking
  14. Sports
  15. Strategy
  16. Travel
  17. Trivia
  18. Utilities
  19. Weather

Make sure to encode (%20) categories with more than 1 word, example: Travel%20%26%20Local

Integration Support

Should you have any problems integrating the product, log a ticket with us by emailing support@appnext.com.