# POKKT Developer Documentation

Last Update: September 9th, 2024

Welcome to POKKT Developer Documentation

**Select a topic from left menu**

![](https://2686801802-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0EMsfROcR7gtjeM5yJDg%2Fuploads%2F3MgAhpe0laItplJjvIOn%2FDoc_img_ani.gif?alt=media\&token=16bd13c6-55c6-4fdc-9652-558ba92dd67d)


# POKKT SDK

Next

Pokkt Integration To Admob (iOS, v8.2.0)


# Pokkt AdMob Adapter Integration Guide v8.2.0 Android

#### Step 1: Getting Started

The following instructions assume you have already integrated Google Mobile Ads SDK into your application.

#### Step 2 :Project Configuration <a href="#xx1nmmwi76gz" id="xx1nmmwi76gz"></a>

Add PokktSDK\_v8.2.0.aar to your project app/libs folder and add  the following line in your app level build.gradle file.

dependencies {&#x20;

implementation fileTree(include: \[‘PokktSDK\_v8.2.0.aar'], dir: ‘libs');

}

#### Step 3: Adding Your Application to Your Pokkt Publisher's Account

* Create Account and log-in at [http://www.pokkt.com](http://www.pokkt.com/)
* Add your application and get its application Id and Security key.

  <figure><img src="/files/KLUHN0t5j5U3hPe3TjCi" alt=""><figcaption></figcaption></figure>

![](/files/t8WGhFkOQSU5XB66o349)

* Create Screen Ids to be used in AdMob dashboard to set ad source.

ScreenId is accepted by almost all API’s of Pokkt SDK. This controls the placement of ads and can be created on Pokkt Dashboard.

<figure><img src="/files/Ek8YAQXI3Z51uHE3eZ56" alt=""><figcaption></figcaption></figure>

Developer needs to create screens in Pokkt Developer account.

![](/files/U1ZDwjmyvha1W6O3vO3S)

#### Step 4: Adding a Custom Event

1. Sign in to your AdMob account at [https://apps.admob.com](https://apps.admob.com/).
2. Under All apps on the left navigation, select the app you want to update.
3. Click Mediation on the left navigation menu item.
4. Select the mediation group to which POKKT should be added.

   <figure><img src="/files/C4KGqfTSfvfkc4VPB05y" alt=""><figcaption></figcaption></figure>
5. Click Custom event under AdSources, and provide the following details:

* Label: Enter the name for the custom event. This is used in reporting and cannot be changed later.

1. Click Continue and Add class name and Parameters.

* Class Name(**Mandatory**): Enter class names as follows :

Rewarded Video: com.pokkt.wrapper.thirdparty.AdMob.PokktRewardedVideoAdapter

Interstitial : com.pokkt.wrapper.thirdparty.AdMob.PokktCustomEventInterstitial

Banner : com.pokkt.wrapper.thirdparty.AdMob.PokktCustomEventBanner

* Parameter : Enter a JSON string as below. **Screen, App Id and Sec key are mandatory**. Rest all are optional.

{

"SCREEN": "Screen ID Created on Pokkt Dashboard",

"APPID": "Pokkt App Id",

"SECKEY": "Pokkt App Security Key",

"TPID": "Unique user id(If exist) as in your app",

"RWD": "Virtual currency As per your App",

"DBG": false,

"GDPR": false

}

![](/files/IDmqMYm1D5mmPE4CrGLR)

#### Step 5: Testing your application

Congratulation - that's it! You may now run your app and see Pokkt ads in action.

#### FAQ

* To use Pokkt AdMob adapter in Unity , add PoktSDK to your project’s Assets->Plugins->Android folder. PokktSDK Unity Plugin is not needed for AdMob Mediation.
* If your project uses GDPR, Please refer <https://developers.google.com/admob/android/eu-consent> for understanding. Pokkt Solution adheres to GDPR requirement as per AdMob doc.GDPR consent must be taken by publishers before calling any ad related api. Add UMP as a dependency in your project’s app level build.gradle file.

dependencies {&#x20;

implementation ‘com.google.android.ump:user-messaging-platform:2.0.0’

}

* AdMob SDK version used: **20.3.0**
* It will take around 6 hours time to reflect the changes made in the AdMob dashboard.


# POKKT SDK Integration Guide v8.2.0 Android

#### Overview <a href="#kwkkzt76l1yt" id="kwkkzt76l1yt"></a>

Thank you for choosing Pokkt SDK for Android. This document contains all the information required to setup the SDK with your project.

Before implementing plugins it is mandatory to go through project configuration and implementation steps, as these sections contain mandatory steps for basic SDK integration.

You can download our SDK from [pokkt.com](https://wiki.pokkt.com/Native_Android).

Downloaded SDK package will contain:

1. PokktSDK\_v8.2.0.aar : Pokkt SDK in aar format.
2. Sample App using PokktSDK

#### Project Configuration <a href="#xx1nmmwi76gz" id="xx1nmmwi76gz"></a>

Add PokktSDK\_v8.2.0.aar to your project app/libs folder and add  the following line in your app level build.gradle file. **minSdkVersion** supported is **16.**

dependencies {&#x20;

implementation fileTree(include: \[‘PokktSDK\_v8.2.0.aar'], dir: ‘libs');

implementation ‘com.google.android.gms:play-services-ads:21.3.0’ //Optional

}

We expect Google play services integrated in project, although it is optional but we recommend you to integrate it, as it is required to fetch AdvertisingID for device, which is useful to deliver targeted advertising to Android users.

#### Adding Your Application to Your Pokkt Publisher's Account

This one parameter is accepted by almost all API’s of Pokkt SDK. This controls the placement of ads and can be created on Pokkt Dashboard.

<div align="center"><figure><img src="/files/5v37fEcbseZsqUW9AEqR" alt=""><figcaption></figcaption></figure></div>

Developer needs to create screens in Pokkt Developer account.

<figure><img src="/files/GeV3oYQEpy34dK1BW7Sk" alt=""><figcaption></figcaption></figure>

#### Implementation Steps <a href="#mnyc2oriqye2" id="mnyc2oriqye2"></a>

Set Application Id and Security key in Pokkt SDK. You can get it from Pokkt dashboard from your account. These are unique per app registered. **This must be called before calling any other methods of Pokkt SDK**.

`PokktAds.setPokktConfig("<PokktAppID>","<PokktSecurityKey>","<Activity>");`

#### FullScreen Ads

To cache FullScreen ad, call below method

`PokktAds.cacheAd("<ScreenId>",<PokktAdDelegate>);`

To show FullScreen ad, call below method

`PokktAds.showAd(“<ScreenId>”,<PokktAdDelegate>, null);`

To check if FullScreen ad is cached or not, call below method

`PokktAds.isAdCached("<ScreenId>">);`

#### Banner Ads

Add Banner Ad View to layout

```xml
<com.pokkt.sdk.banners.PokktBannerView
android:id=“@+id/pokkt_banner_view"
android:layout_width="320dp"
android:layout_height="50dp"
android:layout_centerHorizontal=“true"/>
```

To show Banner ad, call below method

`PokktAds.showAd("<screenId>", <PokktAdDelegate>, <pokktBannerView>);`

To destroy Banner ad, call below method

`PokktAds.destroyBanner(<pokktBannerView>);`

To define PokktAdDelegate, refer below code

```
PokktAds.PokktAdDelegate adDelegate = new PokktAds.PokktAdDelegate() {
@Override
public void adCachingResult(screenId,isSuccess,reward,errorMessage) { }
@Override
public void adDisplayedResult(screenId,isSuccess,errorMessage) { }
@Override
public void adClosed(screenId,isComplete) { }
@Override
public void adGratified(screenId,reward) { }
@Override 
public void adClicked(screenId) { }}
```

#### Test Ads <a href="#peb90h6wvob8" id="peb90h6wvob8"></a>

* Application Id : f303768353fb89d188f24b36c4d80b2e
* Security Key : f3b2bec2234694467398589e1606234b
* Sample Screen Id for Video : 684ab1e66abeb060faa500136c4c6a74
* Sample Screen Id for Interstitial : 5e59028c8332c9583e742c183abbaafb
* Sample Screen Id for Banner : 129cc53b4666f5ae1ebad6a9bc942764

#### Debugging

When your application is under development and if you want to see Pokkt logs and other informatory messages, you can enable it by setting shouldDebug to true . Make sure to disable debugging before release.

Other than enabling debugging for Pokkt SDK, it can also be used to

export your log to your desired location.

`PokktAds.Debugging.shouldDebug(“<Context Context>”,<true>);`

`PokktAds.Debugging.exportLog(getActivity());`

#### Proguard <a href="#rpv7f81v8k82" id="rpv7f81v8k82"></a>

If you are using proguard in your app, add following rules to your proguard file.

```
# Pokkt SDK
-keep class com.pokkt.** { public *; }
-dontwarn com.pokkt.**
# moat
-keep class com.moat.** { *; }
-dontwarn com.moat.**
# 360 if Pokktsdk360ext.jar or Pokktsdk360ext.aar is added
-keep class com.pokkt.sdkmd360ext.** { *; }
-keep class com.c.c.**{*;}
# OM
-keep class com.iab.omid.library.pokkt.**{*;}
-dontwarn com.iab.omid.**
# For communication with Pokkt WebView
-keepclassmembers class * {
@android.webkit.JavascriptInterface <methods>;
}
```

#### FAQ

* If you are using server to server integration with Pokkt, you can also set Third Party UserId in PokktAds.

`PokktAds.setThirdPartyUserId("<Third party user Id>");`

* If you want to set GDPR consent in Pokkt SDK. This must be called before calling any ad related API. Developers/Publishers must get the consent from user. This API can again be used by publishers to revoke the consent. If this API is not called or invalid data provided then SDK will access the users personal data for ad targeting.

```
PokktAds.ConsentInfo consentInfo = new PokktAds.ConsentInfo();
consentInfo.setGDPRApplicable(true);
//true if GDPR is applicable.
consentInfo.setGDPRConsentAvailable(false);
//false if user has given consent to use personal details for ad targeting.
PokktAds.setDataAccessConsent(consentInfo);
```

* If Developer want to set some values in POKKT SDK that they need to be sent to their server via POKKT Server callbacks.

`Map<String, String> params = new HashMap<>();`\
`params.put("testdata","{\"adnetwork\": \"pokkt\"}");`\
`PokktAds.setCallbackExtraParams(params);`

* FullScreen Ads are of two types : Video and Interstitial. It can be rewarded or non rewarded. Its properties can be configured from the Pokkt dashboard. You can either cache the ad in advance or directly call show for it. We suggest you cache the ad in advance so as to give seamless play behaviour, In other case it will stream the video which may lead to unnecessary buffering delays depending on the network connection.
* For better targeting of ads you can also provide user details to our SDK using below code.

```
PokktUserDetails pokktUserDetails = new PokktUserDetails();
pokktUserDetails.setName(" ");
pokktUserDetails.setAge(" ");
pokktUserDetails.setSex(" ");
pokktUserDetails.setMobileNumber(" ");
pokktUserDetails.setEmailAddress(" ");
pokktUserDetails.setLocation(" ");
pokktUserDetails.setBirthday(" ");
pokktUserDetails.setMaritalStatus(" ");
pokktUserDetails.setFacebookId(" ");
pokktUserDetails.setTwitterHandle(" ");
pokktUserDetails.setEducation(" ");
pokktUserDetails.setNationality(" ");
pokktUserDetails.setEmployment(" ");
pokktUserDetails.setMaturityRating(" ");
PokktAds.setUserDetails(pokktUserDetails);
```


# POKKT SDK Integration Guide for PG Team (v 8.2.0)

Thank you for choosing Pokkt SDK. This document contains all the information required to set up the Account on Publisher dashboard. Developer needs to create account on [pokkt.com](http://pokkt.com/) and add an application. Developers also need to create screens to be used in apps.

### Adding Your Application to Your Pokkt Publisher's Account <a href="#adding-your-application-to-your-pokkt-publishers-account" id="adding-your-application-to-your-pokkt-publishers-account"></a>

* Create Account and log-in at <http://www.pokkt.com>
* Add your application and get its application Id and Security key.

![](https://2686801802-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0EMsfROcR7gtjeM5yJDg%2Fuploads%2FFdHBnpY7sjLhjIyMJisX%2F0.jpeg?alt=media)

#### ​Adding App

![](https://2686801802-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0EMsfROcR7gtjeM5yJDg%2Fuploads%2F7Qu83LJlHIEEd9DJzKfl%2F1.jpeg?alt=media)

​

#### Screens

This one parameter is accepted by almost all API’s of Pokkt SDK. This controls the placement of ads and can be created on Pokkt Dashboard.

Developer needs to create screens in the Pokkt Developer account

![](https://2686801802-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0EMsfROcR7gtjeM5yJDg%2Fuploads%2F5hTYyof79MG2jykhrKRP%2F2.jpeg?alt=media)

#### Test Ads (iOS)

Application Id : eee33f012ee30473abcda10c65593d97&#x20;

Security Key : 0adf197193966c9f9c25485154897398

Sample Screen Id for Video : 129fda6f5d8c4f5ea7450ce8b9c94eb8

Sample Screen Id for Interstitial : 3f3d981b416864215563a7ddfecb93f2&#x20;

Sample Screen Id for Banner : 07d5ffd1766b28cc9b25f99d4b0c22ea

#### Test Ads (Android)

Application Id : f303768353fb89d188f24b36c4d80b2e

Security Key : f3b2bec2234694467398589e1606234b

Sample Screen Id for Video : 684ab1e66abeb060faa500136c4c6a74

Sample Screen Id for Interstitial : 5e59028c8332c9583e742c183abbaafb

Sample Screen Id for Banner : 129cc53b4666f5ae1ebad6a9bc942764


# POKKT SDK Integration Guide v8.2.0 iOS

**Overview**

Thank you for choosing Pokkt SDK for iOS. This document contains all the information required to set up the SDK with your project.

**Downloaded SDK package will contain.**

* Pokkt Documents
* Sample App using PokktSDK

**SDK Integration**

The Pokkt-Ads is installed using CocoaPods. To do this, add the following line to your Podfile. Refer to the below Example 1.

| pod 'Pokkt-Ads' |
| --------------- |

<figure><img src="/files/qCPET9DbFNlhyx5CYtbM" alt=""><figcaption><p><strong>Example 1</strong></p></figcaption></figure>

Then from the command line run:

| pod install |
| ----------- |

Configuring App Transport Security (ATS)

Add the NSAllowsArbitraryLoads to your app's Info.plist file to disable ATS restrictions. As per the Apple guideline, the below code is required to allow a non-secure network, and the default value is false. For additional details [click here.](https://stackoverflow.com/questions/31216758/how-can-i-add-nsapptransportsecurity-to-my-info-plist-file)

| <p>\<key>NSAppTransportSecurity\</key></p><p>\<dict></p><p>\<key>NSAllowsArbitraryLoads\</key></p><p>\<true/></p><p>\</dict></p> |
| -------------------------------------------------------------------------------------------------------------------------------- |

**Adding Your Application to Your Pokkt Publisher's Account**

• Create Account and log-in at [http://www.pokkt.com](http://www.pokkt.com/)

• Add your application and get its application Id and Security key.&#x20;

<figure><img src="/files/kpchiL9J73tw0qD5bLWT" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/tQesNUmaSNyIP5GV3R6q" alt=""><figcaption></figcaption></figure>

• Create Screen Ids to be used in AdMob dashboard to set ad source.

This one parameter is accepted by almost all API’s of Pokkt SDK. This controls the placement of ads and can be created on Pokkt Dashboard.

Developer needs to create screens in the Pokkt Developer account.

<figure><img src="/files/sVorWir1Uvqc4MGAjCIJ" alt=""><figcaption></figcaption></figure>

### **Implementation Steps** <a href="#heading-h.1fob9te" id="heading-h.1fob9te"></a>

Set **Application Id** and **Security key** in Pokkt SDK. You can get it from the Pokkt dashboard from your account. We generally assign a unique application-id and security-key.

First Import the **PokktSDK** and its delegate **PokktAdDelegate** and implement their methods to your project.

| **Objective C**                        | **Swift**                                                   |
| -------------------------------------- | ----------------------------------------------------------- |
| #import \<PokktSDK/PokktAds.h>         | **import** PokktSDK                                         |
| UIViewController <**PokktAdDelegate**> | class ViewController: UIViewController, **PokktAdDelegate** |

**This must be called before calling any other methods of Pokkt SDK**.

| **Objective C**                                                    | **Swift**                                                         |
| ------------------------------------------------------------------ | ----------------------------------------------------------------- |
| \[PokktAds setPokktConfigWithAppId:appId securityKey:securityKey]; | PokktAds.setPokktConfigWithAppId(appId, securityKey: securityKey) |

### **Full-Screen Ads** <a href="#heading-h.3znysh7" id="heading-h.3znysh7"></a>

We will be referencing the PokktAdsDemo app provided with SDK during the course of explanation in this document. We suggest you go through the sample app for better understanding.

* To cache Full-screen ad call below method

| **Objective C**                                 | **Swift**                              |
| ----------------------------------------------- | -------------------------------------- |
| \[PokktAds cacheAd:screenId withDelegate:self]; | PokktAds.cacheAd(screenId, with: self) |

* To Show FullScreen ad call the below method

| **Objective C**                                                  | **Swift**                                                 |
| ---------------------------------------------------------------- | --------------------------------------------------------- |
| \[PokktAds showAd:screenId withDelegate:self presentingVC:self]; | PokktAds.showAd(screenId, with: self, presentingVC: self) |

* You can check if an ad is available, before making a show request.

| **Objective C**                  | **Swift**                     |
| -------------------------------- | ----------------------------- |
| \[PokktAds isAdCached:screenId]; | PokktAds.isAdCached(ScreenId) |

**Banner Ads**

* Add Banner to view and Load banner Ad call

| **Objective C**                                                                                                                                                                                                                                                                 | **Swift**                                                                                                                                     |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- |
| <p>Create property</p><p>@property(nonatomic,retain) UIView \*bannerAd;</p><p>CGRect adSize = CGRectMake(0, 100, \[UIScreen mainScreen].bounds.size.width, 50);</p><p>self.bannerAd = \[\[UIView alloc] initWithFrame:adSize];</p><p>\[self.view addSubview:self.bannerAd];</p> | <p>Create property</p><p>@IBOutlet weak var bannerView: UIView!</p><p>PokktAds.showAd(screenId, with: self, inContainer: self.bannerView)</p> |

* To show banner ad, call the below method

| **Objective C**                                                          | **Swift**                                                         |
| ------------------------------------------------------------------------ | ----------------------------------------------------------------- |
| \[PokktAds showAd:screenId withDelegate:self inContainer:self.bannerAd]; | PokktAds.showAd(screenId, with: self, inContainer: self.bannerAd) |

* Refresh banner: You can set a banner refresh rate on the Pokkt dashboard. Refresh rate should be in range of 30 -100
* Destroy banner

| **Objective C**                  | **Swift**                    |
| -------------------------------- | ---------------------------- |
| \[PokktAds dismissAd: screenId]; | PokktAds.dismissAd(screenId) |

* Ad actions are optional, but we suggest implementing them as it will help you to keep track of the status of your ad request.

| **Objective C**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                | **Swift**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| <p><strong>/\*\* Caching \*\*/</strong></p><p>- (void)adCachingResult:(NSString *)screenId</p><p>isSuccess:(BOOL)success withReward:(double)reward</p><p>errorMessage:(NSString *)errorMessage;</p><p><strong>/** Ad Display \*\*/</strong></p><p>(void)adDisplayResult:(NSString *)screenId</p><p>isSuccess:(BOOL)success errorMessage:(NSString *)errorMessage;</p><p><strong>/** Ad Closed \**/</strong></p><p>(void)adClosed:(NSString *)screenId adCompleted:(BOOL)adCompleted;</p><p><strong>/** Ad Interaction \*\*/</strong></p><p>(void)adClicked:(NSString \*)screenId;</p><p>(void)adGratified:(NSString \*)screenId withReward:(double)reward;</p> | <p><strong>/\*\* Caching \*\*/</strong></p><p>- (void)adCachingResult:(NSString *)screenId isSuccess:(BOOL)success withReward:(double)reward errorMessage:(NSString *)errorMessage</p><p><strong>/** Ad Display \*\*/</strong></p><p>- (void)adDisplayResult:(NSString *)screenId isSuccess:(BOOL)success errorMessage:(NSString *)errorMessage</p><p><strong>/** Ad Closed \**/</strong></p><p>- (void)adClosed:(NSString *)screenId adCompleted:(BOOL)adCompleted</p><p><strong>/** Ad Interaction \*\*/</strong></p><p>- (void)adClicked:(NSString \*)screenId</p><p>- (void)adGratified:(NSString \*)screenId withReward:(double)reward</p> |

**Test Ads**

Application Id : eee33f012ee30473abcda10c65593d97

Security Key : 0adf197193966c9f9c25485154897398

Sample Screen Id for Video : 129fda6f5d8c4f5ea7450ce8b9c94eb8

Sample Screen Id for Interstitial : 3f3d981b416864215563a7ddfecb93f2

Sample Screen Id for Banner : 07d5ffd1766b28cc9b25f99d4b0c22ea

**Debugging**

When your application is under development and if you want to see sdk logs and other informatory messages, you can enable it by setting **setDebug** to **true**. Make sure to disable debugging before release.

| **Objective C**                                                                    | **Swift**                                                                     |
| ---------------------------------------------------------------------------------- | ----------------------------------------------------------------------------- |
| <p>\[PokktDebugger setDebug:\<YES/NO>];</p><p>\[PokktDebugger exportLog:self];</p> | <p>PokktDebugger.setDebug(true/false)</p><p>PokktDebugger.exportLog(self)</p> |

#### **FAQ** <a href="#heading-h.2s8eyo1" id="heading-h.2s8eyo1"></a>

#### If you are using server to server integration with Pokkt, you can also set **Third Party UserId** in PokktAds. <a href="#heading-h.s9e2xv78wi8d" id="heading-h.s9e2xv78wi8d"></a>

| **Objective C**                                   | **Swift**                            |
| ------------------------------------------------- | ------------------------------------ |
| PokktAds.setThirdPartyUserId:(NSString\*) userId; | PokktAds.setThirdPartyUserId(userId) |

#### **GDPR** <a href="#heading-h.1t3h5sf" id="heading-h.1t3h5sf"></a>

#### If you want to set ***GDPR consent*** in Pokkt SDK. **This must be called before calling any ad related API. Developers/Publishers must get the consent from the user.** For more information on GDPR please refer [https://www.eugdpr.org/ ](https://www.eugdpr.org/)and <https://www.eugdpr.org/gdpr-faqs.html>. This API can again be used by publishers to revoke the consent. If this API is not called or invalid data provided then SDK will access the users personal data for ad targeting. <a href="#heading-h.me51b5lj3sxg" id="heading-h.me51b5lj3sxg"></a>

| **Objective C**                                                                                                                                                                                                                                                   | **Swift**                                                                                                                                                                                                                                                        |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| <p>PokktConsentInfo \*consentInfo = \[\[PokktConsentInfo alloc] init];</p><p>consentInfo.isGDPRApplicable = true;</p><p>consentInfo.isGDPRConsentAvailable = false;</p><p>\[PokktAds setPokktConsentInfo:consentInfo];</p><p>\[PokktAds getPokktConsentInfo];</p> | <p>var consentInfo: PokktConsentInfo!</p><p>consentInfo = PokktConsentInfo()</p><p>consentInfo.isGDPRApplicable = true</p><p>consentInfo.isGDPRConsentAvailable = false</p><p>PokktAds.setPokktConsentInfo(consentInfo)</p><p>PokktAds.getPokktConsentInfo()</p> |

#### **Extra Parameter** <a href="#heading-h.4d34og8" id="heading-h.4d34og8"></a>

#### You can set extra parameters to POKKT SDK, to be passed back to your server via POKKT server callback. These Extra parameters will be in key-value pair.The key must be alphanumeric value. See the below example. <a href="#heading-h.a7nzlub58djq" id="heading-h.a7nzlub58djq"></a>

| Objective C                                                                                                                                                                                                                                                                              | Swift                                                                                                                             |
| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- |
| <p>NSMutableDictionary \*dict = \[\[NSMutableDictionary alloc] initWithCapacity:0];</p><p>\[dict setValue:@"value1" forKey:@"key1"];</p><p>\[dict setValue:@"value2" forKey:@"key2"];</p><p>\[dict setValue:@"value3" forKey:@"key3"];</p><p>\[PokktAds setCallbackExtraParam:dict];</p> | <p>var dict:\[String: Any]=\["key1": "value1", "key2": "value2", "key3": "value3"]</p><p>PokktAds.setCallbackExtraParam(dict)</p> |

* FullScreen Ads are of two types : Video and Interstitial. It can be rewarded or non rewarded. Its properties can be configured from the Pokkt dashboard. You can either cache the ad in advance or directly call show for it. We suggest you cache the ad in advance so as to give seamless play behavior, In other case it will stream the video which may lead to unnecessary buffering delays depending on the network connection.<br>

**For better targeting of ads you can also provide user details to our SDK using**

| Objective C                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        | Swift                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| <p>PokktUserInfo \*pokktUserDetails = \[PokktUserInfo alloc] init];</p><p>pokktUserDetails.name = "";</p><p>pokktUserDetails.age = "";</p><p>pokktUserDetails.sex = "";</p><p>pokktUserDetails.mobileNumber = "";</p><p>pokktUserDetails.emailAddress = "";</p><p>pokktUserDetails.location = "";</p><p>pokktUserDetails.birthday = "";</p><p>pokktUserDetails.maritalStatus = "";</p><p>pokktUserDetails.facebookId = "";</p><p>pokktUserDetails.twitterHandle = "";</p><p>pokktUserDetails.educationInformation = "";</p><p>pokktUserDetails.nationality = "";</p><p>pokktUserDetails.employmentStatus = "";</p><p>pokktUserDetails.maturityRating = "";</p><p>\[PokktAds setUserDetails: pokktUserDetails];</p> | <p>pokktUserDetails = PokktUserInfo()</p><p>pokktUserDetails.name = ""</p><p>pokktUserDetails.age = ""</p><p>pokktUserDetails.sex = ""</p><p>pokktUserDetails.mobileNumber = ""</p><p>pokktUserDetails.location = ""</p><p>pokktUserDetails.birthday = ""</p><p>pokktUserDetails.maritalStatus = ""</p><p>pokktUserDetails.facebookId = ""</p><p>pokktUserDetails.twitterHandle = ""</p><p>pokktUserDetails.educationInformation = ""</p><p>pokktUserDetails.nationality = ""</p><p>pokktUserDetails.employmentStatus = ""</p><p>pokktUserDetails.maturityRating = ""</p><p>PokktAds.setUserDetails(pokktUserDetails)</p> |


# POKKT AdMob Adapter Integration v8.2.0 iOS

**Overview**

The following instructions assume you are already familiar with the AdMob Mediation Network and have already integrated the Google Mobile Ads SDK into your application. Otherwise, please start by reading the following articles for a walk-through explanation of what mediation is, how to use the AdMob Mediation UI, and instructions on how to add AdMob mediation code into your app. Mediation Overview : [Click Here.](https://support.google.com/admob/answer/3063564?visit_id=637711005693608961-1689371030\&rd=1) Instruction : [Click Here.](https://developers.google.com/admob/ios/quick-start)

**Downloaded SDK package will contain.**

* Pokkt Documents

Step 1: **Adapter Integration**

The **GoogleMobileAdsMediationPokktAds** is installed using CocoaPods. To do this, add the following line to your Podfile. Refer to the following example: 1.

| pod 'GoogleMobileAdsMediationPokktAds' |
| -------------------------------------- |

<figure><img src="/files/ifV0ASbPF5cHfPsv0XPJ" alt=""><figcaption><p><strong>Example 1</strong></p></figcaption></figure>

Then from the command line run:

| pod install |
| ----------- |

Configuring App Transport Security (ATS)

Add the NSAllowsArbitraryLoads to your app's Info.plist file to disable ATS restrictions. As per the Apple guideline, the below code is required to allow a non-secure network, and the default value is false. For additional details [click here.](https://stackoverflow.com/questions/31216758/how-can-i-add-nsapptransportsecurity-to-my-info-plist-file)

| <p>\<key>NSAppTransportSecurity\</key></p><p>\<dict></p><p>\<key>NSAllowsArbitraryLoads\</key></p><p>\<true/></p><p>\</dict></p> |
| -------------------------------------------------------------------------------------------------------------------------------- |

Click on Info.plist and​​ add the GADApplicationIdentifier key and its value. Refer to the following example: 2

<figure><img src="/files/RWATvvTEteCnk1io04pj" alt=""><figcaption><p><strong>Example 2</strong></p></figcaption></figure>

GADApplicationIdentifier / AppID value found on AdMob dashboard. First sign in to your AdMob account at [click here](https://apps.admob.com/). Click on Apps on the left panel in the AdMob account and click view all apps. Refer to the following example: 3.

<figure><img src="/files/vkx6RCTLrinpMs5z0dtN" alt=""><figcaption><p><strong>Example 3</strong></p></figcaption></figure>

Copy App ID that belongs to your app. Refer to the following example: 4.

<figure><img src="/files/z79EAmxLhLwpKSFjoXRC" alt=""><figcaption><p><strong>Example 4</strong></p></figcaption></figure>

Step 2: **Adding Your Application to Your Pokkt Publisher's Account**

• Create Account and log-in at [http://www.pokkt.com](http://www.pokkt.com/)

• Add your application and get its application Id and Security key.&#x20;

<figure><img src="/files/MDKjcLHZwcHr75T72SPl" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/X1jBSkErqAHBe2g8GdIX" alt=""><figcaption></figcaption></figure>

• Create Screen Ids to be used in AdMob dashboard to set ad source.

This one parameter is accepted by almost all API’s of Pokkt SDK. This controls the placement of ads and can be created on Pokkt Dashboard.

Developer needs to create screens in the Pokkt Developer account.

![](/files/1k7a3TR8tvSV7Zmh6Z25)

Step 3: **Adding a Custom Event**

1. Sign in to your AdMob account at <https://apps.admob.com>.
2. Under All apps on the left-hand side, select the app you want to update.
3. Click Mediation on the left navigation menu item
4. Select the mediation group to which POKKT should be added.

| <img src="/files/5ZKyQCEIEdUf36RGRgp9" alt="" data-size="original"> |
| ------------------------------------------------------------------- |

1. Click Custom event under AdSources, and provide the following details:

* **Label**: Enter the name for the custom event. This is used in reporting and cannot be changed later.
* Click Continue and Add class name and Parameters. **Class Name** (**Mandatory**) Enter the name as follows:

| <p>For Rewarded Video: <strong>PokktCustomRewardedVideo</strong></p><p>For Interstitial: <strong>PokktCustomInterstitial</strong></p><p>For Banner: <strong>PokktCustomBanner</strong></p> |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

1. **Parameter** : Enter a JSON string as below. Screen, App Id and Seckey are mandatory. Rest all are optional.

| <p>{</p><p>"SCREEN":"Screen Created on Pokkt Dashboard",</p><p>"APPID":"Pokkt App Id",</p><p>"SECKEY":"Pokkt App Security Key",</p><p>"TPID":"Unique user id as in your app",</p><p>"DBG":”debug value -> true/false”</p><p>}</p> |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

<figure><img src="/files/JeyGJgz6RtFQHxlxNmIq" alt=""><figcaption></figcaption></figure>

Step &#x34;**: Test Your Application**

Congratulations - that's it! You may now run your app and see Pokkt ads in action.

It will take around 6 hours time to reflect the changes made in the AdMob dashboard.

**Test Ads**

Application Id : eee33f012ee30473abcda10c65593d97

Security Key : 0adf197193966c9f9c25485154897398

Sample Screen Id for Video : 129fda6f5d8c4f5ea7450ce8b9c94eb8

Sample Screen Id for Interstitial : 3f3d981b416864215563a7ddfecb93f2

Sample Screen Id for Banner : 07d5ffd1766b28cc9b25f99d4b0c22ea


# POKKT SDK Plugins


# Native Android

### Contents

* [1 POKKT Native Android SDK v8.1.0 (GDPR Compliance)](broken://pages/OJzUhvcbxbvyDepsb9pf)
* [2 Getting Started with Pokkt SDK v 8.1.0](broken://pages/OJzUhvcbxbvyDepsb9pf)
* [3 Integration Guide v 8.1.0](broken://pages/OJzUhvcbxbvyDepsb9pf)
  * [3.1 Overview](broken://pages/OJzUhvcbxbvyDepsb9pf)
  * [3.2 Project Configuration](broken://pages/OJzUhvcbxbvyDepsb9pf)
    * [3.2.1 Dependencies](broken://pages/OJzUhvcbxbvyDepsb9pf)
    * [3.2.2 Manifest](broken://pages/OJzUhvcbxbvyDepsb9pf)
      * [3.2.2.1 Permissions Declarations](broken://pages/OJzUhvcbxbvyDepsb9pf)
      * [3.2.2.2 Activity Declaration](broken://pages/OJzUhvcbxbvyDepsb9pf)
  * [3.3 Implementation Steps](broken://pages/OJzUhvcbxbvyDepsb9pf)
    * [3.3.1 SDK Configuration](broken://pages/OJzUhvcbxbvyDepsb9pf)
    * [3.3.2 Ad Types](broken://pages/OJzUhvcbxbvyDepsb9pf)
      * [3.3.2.1 FullScreen Ads](broken://pages/OJzUhvcbxbvyDepsb9pf)
      * [3.3.2.2 Banner](broken://pages/OJzUhvcbxbvyDepsb9pf)
      * [3.3.2.3 Native Ads](broken://pages/OJzUhvcbxbvyDepsb9pf)
    * [3.3.3 Ad Delegates](broken://pages/OJzUhvcbxbvyDepsb9pf)
      * [3.3.3.1 FullScreen Ads](broken://pages/OJzUhvcbxbvyDepsb9pf)
      * [3.3.3.2 Native Ads](broken://pages/OJzUhvcbxbvyDepsb9pf)
      * [3.3.3.3 Banner](broken://pages/OJzUhvcbxbvyDepsb9pf)
    * [3.3.4 Pokkt ad player configuration](broken://pages/OJzUhvcbxbvyDepsb9pf)
    * [3.3.5 User Details](broken://pages/OJzUhvcbxbvyDepsb9pf)
    * [3.3.6 Pokkt Server Callback Params](broken://pages/OJzUhvcbxbvyDepsb9pf)
    * [3.3.7 Debugging](broken://pages/OJzUhvcbxbvyDepsb9pf)
    * [3.3.8 Proguard](broken://pages/OJzUhvcbxbvyDepsb9pf)
* [4 Migration Note Guide v 8.1.0](broken://pages/OJzUhvcbxbvyDepsb9pf)
  * [4.1 Screen ID](broken://pages/OJzUhvcbxbvyDepsb9pf)
  * [4.2 AdTypes](broken://pages/OJzUhvcbxbvyDepsb9pf)
  * [4.3 Simpler APIs for full screen ads and banner ads.](broken://pages/OJzUhvcbxbvyDepsb9pf)
  * [4.4 Ad Delegates are changed. SetDelegate API is removed.](broken://pages/OJzUhvcbxbvyDepsb9pf)
  * [4.5 isAdCached API is changed.](broken://pages/OJzUhvcbxbvyDepsb9pf)
  * [4.6 Destroy Banner API is changed](broken://pages/OJzUhvcbxbvyDepsb9pf)
  * [4.7 Native Ad](broken://pages/OJzUhvcbxbvyDepsb9pf)
* [5 Migration Note Guide v 7.6.0](broken://pages/OJzUhvcbxbvyDepsb9pf)
  * [5.1 Note](broken://pages/OJzUhvcbxbvyDepsb9pf)

### POKKT Native Android SDK v8.1.0 (GDPR Compliance)

Last Update: 28th October, 2021

Download Latest Version Here

***

### Getting Started with Pokkt SDK v 8.1.0

1\. Add *"PokktSDK.aar"* to your project.

2\. Set *Application Id* and *Security Key* in Pokkt SDK. You can get it from Pokkt dashboard from your account. These are unique per app registered.

```
PokktAds.setPokktConfig("<Pokkt Application ID>", "<Pokkt Security Key>", “<Activity Context>”);
```

3\. Set the following to enable or disable omission of Pokkt logs and other informatory messages. Make sure to set it to false before release.

```
PokktAds.Debugging.shouldDebug(“<Context Context>”,<true>);
```

4\. Set GDPR consent in Pokkt SDK. This must be called before calling any ad related API. Developers/Publishers must get the consent from user. For more information on GDPR please refer <https://www.eugdpr.org/> and <https://www.eugdpr.org/gdpr-faqs.html> . This API can again be used by publishers to revoke the consent. If this API is not called or invalid data provided then SDK will access the users personal data for ad targeting.

```
PokktAds.ConsentInfo consentInfo = new PokktAds.ConsentInfo();
consentInfo.setGDPRApplicable(true);
//true if GDPR is applicable.
consentInfo.setGDPRConsentAvailable(true);
//true if user has given consent to use personal details for ad targeting.
PokktAds.setDataAccessConsent(consentInfo);
```

5\. You can check if Ad is cached or not using

```
PokktAds.isAdCached("<ScreenId>"); 
```

6\. Show FullScreen Ad with one of the following:

```
 PokktAds.showAd("<ScreenId>",<PokktAdDelegate>,null); 
```

7\. For Banner Ad

* Define a container (PokktBannerView) for banner something like following:

```
<com.pokkt.sdk.banners.PokktBannerView
     android:id="@+id/pokkt_banner_view_top"
     android:layout_width="320dp"
     android:layout_height="50dp"
     android:layout_centerHorizontal="true"/>
```

* To load banner, use:

```
  PokktAds.showAd("<ScreenId>",<PokktAdDelegate>,<PokktBannerView>); 
```

* Use the following to destroy banner:

```
  PokktAds.destroyBanner(<pokktBannerView>); 
```

8\. Implement *PokktAds.PokktAdDelegate* to listen to fullscreen-ad related messages.\
9\. Implement *PokktAds.BannerAdDelegate* to listen to banner-ad related messages.\
10\. We recommend caching of video-ads for better user experience, you can cache an ad using the following:

```
 PokktAds.cacheAd("<ScreenId>",<PokktAdDelegate>); 
```

### Integration Guide v 8.1.0

#### Overview

Thank you for choosing Pokkt SDK for Android. This document contains all the information required to set up the SDK with your project. We also support mediation for various third party networks. To know the supported third party networks and their integration process go to mediation section .

Before implementing plugins it is mandatory to go through project configuration and implementation steps, as these sections contain mandatory steps for basic SDK integration and are followed by every plugin.

You can download our SDK from pokkt.com.

Downloaded SDK package will contain:

1. Docs:
   * Contains documentations for step wise step integration for SDK.
2. PokktSDK\_v 8.1.0.jar
   * Pokkt SDK in *jar* format.
3. PokktSDK\_v 8.1.0.aar
   * Pokkt SDK in *aar* format.
4. Pokktsdk360ext.jar / Pokktsdk360ext.aar
   * Add these if you want to support 360 video ads.
5. PokktAds Demo
   * Source code for *PokktAds Demo*(Sample app) which showcase implementation of Pokkt SDK through code for better understanding.
6. Dependency jars:
   * Please add google play services and support-v4 jar.

minSdkVersion supported is 11 .

ScreenId: This one parameter is accepted by almost all API’s of Pokkt SDK. This controls the placement of ads and can be created on Pokkt Dashboard.

Developer needs to create screens in Pokkt Developer account.

We will be referencing PokktAds Demo app provided with SDK during the course of explanation in this document. We suggest you go through the sample app for better understanding.

#### Project Configuration

**Dependencies**

* Add *PokktSDK\_v 8.1.0.jar* or *PokktSDK\_v 8.1.0.aar* to your project.
* We expect Google play services integrated in project, although it is optional but we recommend you to integrate it, as it is required to fetch AdvertisingID for device,which is useful to deliver targeted advertising to Android users.

**Manifest**

Android 9.0 (API 28) blocks cleartext (non-HTTPS) traffic by default , which can prevent ads from serving correctly.To mitigate that, publishers whose apps run on Android 9.0 or above should ensure to add a network security config file or you should set the usesCleartextTraffic attribute in your application tag to true. Doing so whitelists cleartext traffic and allows non-HTTPS ads to serve.

```
<application
    ...
    android:usesCleartextTraffic="true">
    ...
</application>
```

**Permissions Declarations**

Add the following permissions to your project manifest

1\. Mandatory permissions.

```
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
```

* android.permission.INTERNET = Required for SDK communication with server.
* android.permission.ACCESS\_NETWORK\_STATE = Required to detect changes in network, like if WIFI is available or not.

**Activity Declaration**

Add the following activity in your AndroidManifest for Pokkt SDK integration.

```
<activity
     android:name="com.pokkt.sdk.PokktAdActivity"
     android:configChanges="keyboard|keyboardHidden|navigation|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"
     android:hardwareAccelerated="true"
     android:label="Pokkt"
     android:screenOrientation="landscape"
     android:windowSoftInputMode="stateAlwaysHidden|adjustUnspecified" />
```

You can change the android:screenOrientation="landscape" to of your choice, the way you want to display the ads.

#### Implementation Steps

**SDK Configuration**

1\. Set Application Id and Security key in Pokkt SDK. You can get it from Pokkt dashboard from your account. These are unique per app registered.

```
PokktAds.setPokktConfig("<Pokkt Application ID>", "<Pokkt Security Key>","<Activity Context>");
```

2\. If you are using server to server integration with Pokkt, you can also set Third Party UserId in PokktAds.

```
PokktAds.setThirdPartyUserId("<Third party user Id>");
```

3\. When your application is under development and if you want to see Pokkt logs and other informatory messages, you can enable it by setting shouldDebug to true . Make sure to disable debugging before release.

```
PokktAds.Debugging.shouldDebug(“<Context Context>”,<true>);
```

4\. Set *GDPR consent* in Pokkt SDK. This must be called before calling any ad related API. Developers/Publishers must get the consent from user. For more information on GDPR please refer <https://www.eugdpr.org/> and <https://www.eugdpr.org/gdpr-faqs.html> . This API can again be used by publishers to revoke the consent. If this API is not called or invalid data provided then SDK will access the users personal data for ad targeting.

```
PokktAds.ConsentInfo consentInfo = new PokktAds.ConsentInfo();
consentInfo.setGDPRApplicable(true);
//true if GDPR is applicable.
consentInfo.setGDPRConsentAvailable(false);
//false if user has given consent to use personal details for ad targeting.
PokktAds.setDataAccessConsent(consentInfo);
```

**Ad Types**

**FullScreen Ads**

* FullScreen Ads are of two types : Video and Interstitial.
* FullScreen ads can be rewarded or non-rewarded.
* FullScreen properties can be configured from the Pokkt dashboard.
* You can either cache the ad in advance or directly call show for it.
* We suggest you cache the ad in advance so as to give seamless play behaviour, In other case it will stream the video which may lead to unnecessary buffering delays depending on the network connection.

1\. To cache FullScreen ad call:

```
 PokktAds.cacheAd("<ScreenId>",<PokktAdDelegate>); 
```

2\. To show FullScreen ad call:

```
 PokktAds.showAd("<ScreenId>",<PokktAdDelegate>,null); 
```

3\. You can check if FullScreen ad is cached or not using

```
 PokktAds.isAdCached("<ScreenId>"); 
```

* Sample Screen Id for Video : 684ab1e66abeb060faa500136c4c6a74

* Sample Screen Id for Interstitial : 5e59028c8332c9583e742c183abbaafb

* Add ​PokktBannerView ​to your layout, we use it as a placeholder to populate banner ads into it.

```
 <com.pokkt.sdk.banners.PokktBannerView
    android:id="@+id/pokkt_banner_view_top"
    android:layout_width="320dp"
    android:layout_height="50dp"
    android:layout_centerHorizontal="true"/> 
```

* Load banner

```
 PokktAds.showAd("<ScreenId>",<PokktAdDelegate>,<PokktBannerView>); 
```

* You can remove Banner using:

```
 PokktAds.destroyBanner(<pokktBannerView>); 
```

* Sample Screen Id for Banner : 129cc53b4666f5ae1ebad6a9bc942764

**Native Ads**

A native ad is a type of ad which contains ad assets and developer app displays the ad assets as per the format of the app UI. Normally, FullScreen ads are delivered on call to action by the user. Native ads eliminate this limitation and show ads without any user request.Native ads are also non intrusive as they will be automatically paused when the ad is out of the view by scrolling. A naIve ad may be served in feed or in between the developer content inside the app. The PokktNaIveAdLayout displays the media asset.

* Add Native Ad Layout to your Layout XML. The view hierarchy will be as below. You need to modify these as per your layout design.

```
<RelativeLayout
android:id="@+id/pokkt_native_ad_container"
...
>
<ImageView
android:id="@+id/pokkt_native_ad_icon"
.. />
<TextView
android:id="@+id/pokkt_native_ad_sponsored"
.../>
<TextView
android:id="@+id/pokkt_native_ad_title"
.../>
</LinearLayout>
<TextView
android:id="@+id/pokkt_native_ad_body"
... />
<com.pokkt.sdk.pokktnativead.PokktNativeAdLayout
android:id="@+id/pokkt_native_ad"
android:layout_width="match_parent"
android:layout_height=“200dp"
/>
<Button
android:id="@+id/pokkt_native_ad_cta"
.../>
</RelativeLayout>
```

* Request for native Ad.

```
PokktNativeAdConfig pokktNativeAdConfig = new PokktNativeAdConfig();
PokktAds.requestNativeAd(“<ScreenId>”, <NativeAdsDelegate>, pokktnativeAdConfig);
```

* Once PokktNativeAd is received in the AdReady callback of NativeAdsDelegate implementaIon, ad assets present in PokktnativeAd should be used to populate the ad UI.

```
PokktNativeAdViewBinder pokktNativeAdViewBinder = new
PokktNativeAdViewBinder.Builder(rootView.findViewById(R.id.pokkt_native_ad_container))
.mediaLayoutId(R.id.pokkt_native_ad)
.ItleId(R.id.pokkt_native_ad_Itle)
.descripIonId(R.id.pokkt_native_ad_body)
.sponsoredTextId(R.id.pokkt_native_ad_sponsored)
.raIngId(R.id.pokkt_native_ad_raIng)
.iconImageId(R.id.pokkt_native_ad_icon)
.callToAcIonId(R.id.pokkt_native_ad_cta)
.priceTextId(R.id.pokkt_native_ad_price)
.likesId(R.id.pokkt_native_ad_likes)
.downloadsId(R.id.pokkt_native_ad_downloads)
.addressId(R.id.pokkt_native_ad_address)
.phoneId(R.id.pokkt_native_ad_number)
.salePriceTextId(R.id.pokkt_native_ad_saleprice)
.build();
pokktNativeAdViewBinder.populateView(pokktNativeAd);
```

* Developers must implement ​NativeAdsDelegate​ and supply POKKT SDK in requestNativeAd().

```
PokktAds.NativeAdsDelegate delegate = new PokktAds.NativeAdsDelegate()
{
    @Override
    public void adReady(screenId,pokktNativeAd) {
    }
    @Override
    public void adFailed(screenId, String errorMessage) {
    }
    @Override
    public void adClosed(String screenId, boolean isComplete) {
    }
};
```

* Developers will have to do cleanup of Native Ad in onDestroy of activity life cycle.

```
pokktNativeAd.destroy();
```

Please refer to our Pokkt Ads Demo Source code for sample implementation of Native Ads in List, Scroll and WebView

* Sample Screen Id for Native Ad with Image asset : 377d86e7fae5f5714375824636468a42
* Sample Screen Id for Native Ad with video asset : fad058c08a41ef4506e759bce521bcbb

**Ad Delegates**

**FullScreen Ads**

Ad delegates are optional, but we suggest to implement them as it will help you to keep track of the status of your ad request.

```
 PokktAdDelegate pokktAdDelegate = new PokktAds.PokktAdDelegate() {
    @Override
    public void adCachingResult(screenId,isSuccess,reward,errorMessage) {
    }
    @Override
    public void adDisplayedResult(screenId,isSuccess,errorMessage) {
    }
    @Override
    public void adClosed(screenId,isComplete) {
    }
    @Override
    public void adGratified(screenId,reward) {
    }
    @Override
    public void adClicked(screenId) {
    }
};
```

**Native Ads**

Developers should implement SDK Native Ad delegates and supply POKKT SDK in requestNativeAd().

```
PokktAds.NativeAdsDelegate delegate = new PokktAds.NativeAdsDelegate() {
    @Override
    public void adReady(screenId,pokktNativeAd) {
    }
    @Override
    public void adFailed(screenId,errorMessage) {
    }
    @Override
    public void adClosed(screenId,isComplete) {
    }
};
```

Ad delegates are optional, but we suggest to implement them as it will help you to keep track of the status of your ad request.

```
 PokktAds.BannerAdDelegate adDelegate = new PokktAds.BannerAdDelegate() {
   @Override
   public void bannerExpanded(screenId) {
   }
   @Override
   public void bannerResized(screenId) {
   }
   @Override
   public void bannerCollapsed(screenId) {
   }
   @Override
   public void adCachingResult(screenId,isSuccess,reward,errorMessage) {
   }
   @Override
   public void adDisplayedResult(screenId,isSuccess,errorMessage) { //called when banner is loaded/failed to load
   }
   @Override
   public void adClosed(screenId,isComplete) {
   }
   @Override
   public void adGratified(screenId,reward) {
   }
   @Override
   public void adClicked(screenId) {
   //called when banner is clicked
   }
};
```

**Pokkt ad player configuration**

Pokkt Ad player works the way App is configured at Pokkt dashboard, but we provide a way to override those settings using PokktAdViewConfig.

Application should prefer configuration provided through code by developer or what’s configured for the app in dashboard, can be controlled any time through the dashboard itself. If you want to make changes to this configuration after your app distribution, you can contact Pokkt Team to do the same for your app through admin console.

```
PokktAdViewConfig adViewConfig = new PokktAdViewConfig ();
// set properties values to adViewConfig
PokktAds.setAdPlayerViewConfig(adViewConfig );
```

Various setters for the properties that can be managed through this are:

1\. Back button\
Defines if user is allowed to close the Advertisement by clicking on back button or not.\
Setter Name: setBackButtonDisabled(boolean backButtonDisabled)\
Values:\
True = Back button is disabled and user cannot close the Ad.\
False = Back button is not disabled and user can close the Ad.<br>

2\. Default skip time\
Defines the time after which user can skip the Ad.\
Setter name: setDefaultSkipTime(int defaultSkipTime)\
Values:\
Any Integer value.\
Default value is 10 seconds.<br>

3\. Should allow skip\
Defines if user is allowed to skip the Ad or not.\
Setter name: setShouldAllowSkip(boolean shouldAllowSkip)\
Values:\
True = User can skip Ad.\
False = User can’t skip Ad.<br>

4\. Should allow mute\
Defines if user is allowed to mute the Video Ad or not.\
Setter name: setShouldAllowMute(boolean shouldAllowMute)\
Values:\
True = User can mute video Ad.\
False = User can’t mute video Ad.<br>

5\. Should confirm skip\
Defines if confirmation dialog is to be shown before skipping the Ad.\
Setter name: ShouldConfirmSkip\
Values:\
True = Confirmation dialog will be shown before skipping the video.\
False = Confirmation dialog will not be shown before skipping the video.<br>

6\. Skip confirmation message\
Defines what confirmation message to be shown in skip dialog.\
Setter name: setShouldSkipConfirm(boolean shouldSkipConfirm)\
Values:\
Any String message.\
Default value is “Skipping this video will earn you NO rewards. Are you sure?”.<br>

7\. Affirmative label for skip dialog\
Defines what should be the label for affirmative button in skip dialog.\
Setter name: setSkipConfirmYesLabel(String skipConfirmYesLabel)\
Values:\
Any String message.\
Default value is “Yes”.<br>

8\. Negative label for skip dialog\
Defines what should be the label for affirmative button in skip dialog.\
Setter name: setSkipConfirmNoLabel(String skipConfirmNoLabel)\
Values:\
Any String message.\
Default value is “No”.<br>

9\. Skip timer message\
Defines message to be shown before enabling skip button. Don’t forget to add placeholder “ ## ” in your custom message. This placeholder is replaced by property “Default skip time” assigned above.\
Setter name: setSkipTimerMessage(String skipTimerMessage)\
Values:\
Any String message.\
Default value is “You can skip video in ## seconds”<br>

10\. Incentive message\
Defines message to be shown during video progress, that after what time user will be incentivised.\
Setter name: setIncentiveMessage(String incentiveMessage)\
Values:\
Any String message\
Default value is “more seconds only for your reward !”<br>

11\. Should collect feedback\
Defines message to be shown during video progress, that after what time user will be incentivised.\
Property name setShouldCollectFeedback\
Values:\
True = If you want to collect feedback from the user for the Ad.\
False = If you don’t want to collect feedback from the user for the Ad.

12\. Audio Enabled\
Provides a medium to disable audio for video ad without user interaction.\
Property name setAudioEnabled\
Values:\
True = If you want to play audio for video ad.\
False = If you don’t want to play audio for video ad.

**User Details**

For better targeting of ads you can also provide user details to our SDK using.

```
PokktUserDetails pokktUserDetails = new PokktUserDetails();
pokktUserDetails.setName(" ");
pokktUserDetails.setAge(" ");
pokktUserDetails.setSex(" ");
pokktUserDetails.setMobileNumber(" ");
pokktUserDetails.setEmailAddress(" ");
pokktUserDetails.setLocation(" ");
pokktUserDetails.setBirthday(" ");
pokktUserDetails.setMaritalStatus(" ");
pokktUserDetails.setFacebookId(" ");
pokktUserDetails.setTwitterHandle(" ");
pokktUserDetails.setEducation(" ");
pokktUserDetails.setNationality(" ");
pokktUserDetails.setEmployment(" ");
pokktUserDetails.setMaturityRating(" ");
PokktAds.setUserDetails(pokktUserDetails);
```

**Pokkt Server Callback Params**

Developer can set some values in POKKT SDK that they need to be sent to their server via POKKT Server callbacks.

```
Map<String, String> params = new HashMap<>();
params.put("testdata","{\"adnetwork\": \"pokkt\"}");
PokktAds.setCallbackExtraParams(params);
```

**Debugging**

Other than enabling debugging for Pokkt SDK, it can also be used to:

1\. When your application is under development and if you want to see Pokkt logs and other informatory messages, you can enable it by setting ​shouldDebug ​to ​true​. Make sure to disable debugging before release.

```
PokktAds.Debugging.shouldDebug(“<Context Context>”,<true>);
```

2\. Export log\
Export your log to your desired location, we generally have it in root directory of SD card, if permission for external storage is provided and in cache folder otherwise.

```
PokktAds.Debugging.exportLog(getActivity());
```

3\. Export log to cloud You can also export log to cloud.

```
PokktAds.Debugging.exportLogToCloud(getActivity());
```

**Proguard**

If you are using proguard in your app, add following rules to your proguard file.

```
# Pokkt SDK
-keep class com.pokkt.** { public *; }
-dontwarn com.pokkt.**
# moat
-keep class com.moat.** { *; }
-dontwarn com.moat.**
-keep class com.c.c.**{*;}
# OM
-keep class com.iab.omid.library.pokkt.**{*;}
-dontwarn com.iab.omid.**
# 360 if Pokktsdk360ext.jar or Pokktsdk360ext.aar is added
-keep class com.pokkt.sdk360ext.** { *; }
# For communication with Pokkt WebView
-keepclassmembers class * {
@android.webkit.JavascriptInterface <methods>;
}
```

### Migration Note Guide v 8.1.0

* In case of any query regarding integration, refer “POKKT\_SDK\_Integration\_Guide(\_v8.1.0\_Native\_Android)” for this version provided inside “PokktSDK\_v8.1.0”.

**Screen ID**

ScreenId is accepted by almost all API’s of Pokkt SDK. This controls the placement of ads and can be created on Pokkt Dashboard. This replaced Screen Name used earlier.

**AdTypes**

Rewarded Video ads and Interstitial Ads are merged into full screen ad type and ad type can be changed in runtime by editing the screen id Ad type.

**Simpler APIs for full screen ads and banner ads.**

```
PokktAds.VideoAd.cacheRewarded("<ScreenName>");
PokktAds.VideoAd.cacheNonRewarded("<ScreeName>");
PokktAds.Interstitial.cacheRewarded("<ScreeName>");
PokktAds.Interstitial.cacheNonRewarded("<ScreeName>");

is now

PokktAds.cacheAd("<ScreenId>",<PokktAdDelegate>);
```

```
PokktAds.VideoAd.showRewarded("<ScreenName>");
PokktAds.VideoAd.showNonRewarded("<ScreeName>");
PokktAds.Interstitial.showRewarded("<ScreeName>");
PokktAds.Interstitial.cacheNonRewarded("<ScreeName>");

is now

PokktAds.showAd("<ScreenId>",<PokktAdDelegate>,null);
```

```
PokktAds.Banner.loadBanner(“<screenName>”, <pokktBannerView>);

is now

PokktAds.showAd("<ScreenId>",<PokktAdDelegate>,<PokktBannerView>);
```

**Ad Delegates are changed. SetDelegate API is removed.**

```
PokktAds.VideoAd.setDelegate(new PokktAds.VideoAd.VideoAdDelegate() {
public void videoAdCachingCompleted(String screenName, boolean isRewarded, double reward) {}
public void videoAdCachingFailed(String screenName, boolean isRewarded, String errorMessage) {}
public void videoAdDisplayed(String screenName, boolean isRewarded) {}
public void videoAdFailedToShow(String screenName, boolean isRewarded, String errorMessage) {}
public void videoAdClosed(String screenName, boolean isRewarded) {}
public void videoAdClicked(String screenName, boolean isRewarded){}
public void videoAdSkipped(String screenName, boolean isRewarded) {}
public void videoAdCompleted(String screenName, boolean isRewarded) {}
public void videoAdGratified(String screenName, boolean isRewarded, double reward)
{}
});

is now

PokktAdDelegate pokktAdDelegate = new PokktAds.PokktAdDelegate() {
public void adCachingResult(screenId,isSuccess,reward,errorMessage) { }
public void adDisplayedResult(screenId,isSuccess,errorMessage) { }
public void adClosed(screenId,isComplete) { }
public void adGratified(screenId,reward) { }
public void adClicked(screenId) {} };
```

```
PokktAds.Interstitial.setDelegate(new PokktAds.Interstitial.InterstitialDelegate() {
public void interstitialCachingCompleted(String screenName, boolean isRewarded, double reward) {}
public void interstitialCachingFailed(String screenName, boolean isRewarded, String errorMessage) {}
public void interstitialDisplayed(String screenName, boolean isRewarded) {}
public void interstitialFailedToShow(String screenName, boolean isRewarded, String errorMessage) {}
public void interstitialClosed(String screenName, boolean isRewarded) {}
public void interstitialSkipped(String screenName, boolean isRewarded) {}
public void interstitialClicked(String screenName, boolean isRewarded){}
public void interstitialCompleted(String screenName, boolean isRewarded) {}
public void interstitialGratified(String screenName, boolean isRewarded, double reward) {}
});

is now

PokktAdDelegate pokktAdDelegate = new PokktAds.PokktAdDelegate() {
public void adCachingResult(screenId,isSuccess,reward,errorMessage) { }
public void adDisplayedResult(screenId,isSuccess,errorMessage) { }
public void adClosed(screenId,isComplete) { }
public void adGratified(screenId,reward) { }
public void adClicked(screenId) {} };
```

**isAdCached API is changed.**

```
PokktAds.VideoAd.isAdCached("<ScreenName>", <true/false>);
PokktAds.Interstitial.isAdCached("<ScreenName>", <true / false>);

is now

PokktAds.isAdCached("<ScreenId>");
```

```
PokktAds.Banner.destroy(<pokktBannerView>);

is now

PokktAds.destroyBanner(<pokktBannerView>); 
```

**Native Ad**

Native Ads are introduced which replaces OutStream ads. Please refer our documentation for details.

### Migration Note Guide v 7.6.0

**Note**

* In case of any query regarding integration, refer *POKKT\_SDK\_Integration\_Guide(\_v 7.6.0\_Native\_Android)* for this version provided inside PokktSDK\_v 7.6.0.

1\. Removed callbacks\
videoAdAvailabilityStatus and interstitialAvailabilityStatus are removed from the Video and Interstitial ads respectively and so are the checkAdAvailability API.

2\. PokktAdPlayerViewConfig\
PokktAdPlayerViewConfig is renamed to PokktAdViewConfig.

3\. Activity context required in setPokktConfig.

```
PokktAds.setPokktConfig("<Pokkt Application ID>", "<Pokkt Security Key>");

is now

PokktAds.setPokktConfig("<Pokkt Application ID>", "<Pokkt Security Key>",
“<Activity Context>”);
```

4\. Context required in shouldDebug.

```
PokktAds.Debugging.shouldDebug(<true>);

is now

PokktAds.Debugging.shouldDebug(“<Context Context>”,<true>);
```


# Native iOS

### Contents

* [1 CocoaPods (preferred)](broken://pages/VPaOuTi4FdZj15jrbkmF)
* [2 Manual download](broken://pages/VPaOuTi4FdZj15jrbkmF)
  * [2.1 POKKT Native iOS SDK v8.1.0 (GDPR Compliance)](broken://pages/VPaOuTi4FdZj15jrbkmF)
  * [2.2 Pokkt iOS SDK Integration Guide v8.1.0](broken://pages/VPaOuTi4FdZj15jrbkmF)
* [3 SDK Configuration](broken://pages/VPaOuTi4FdZj15jrbkmF)
* [4 Full-Screen Ads](broken://pages/VPaOuTi4FdZj15jrbkmF)
* [5 Banner Ads](broken://pages/VPaOuTi4FdZj15jrbkmF)
* [6 Native Ads](broken://pages/VPaOuTi4FdZj15jrbkmF)
* [7 Display Native Ad](broken://pages/VPaOuTi4FdZj15jrbkmF)
* [8 Additional SDK Configuration](broken://pages/VPaOuTi4FdZj15jrbkmF)
  * [8.1 GDPR](broken://pages/VPaOuTi4FdZj15jrbkmF)
* [9 Extra Parameter](broken://pages/VPaOuTi4FdZj15jrbkmF)
* [10 ThirdPartyUser Id](broken://pages/VPaOuTi4FdZj15jrbkmF)
* [11 User Detail](broken://pages/VPaOuTi4FdZj15jrbkmF)
* [12 Pokkt AdPlayer Configuration](broken://pages/VPaOuTi4FdZj15jrbkmF)
* [13 Migration Note Guide v 8.1.0](broken://pages/VPaOuTi4FdZj15jrbkmF)
  * [13.1 Screen ID](broken://pages/VPaOuTi4FdZj15jrbkmF)
  * [13.2 AdTypes](broken://pages/VPaOuTi4FdZj15jrbkmF)
  * [13.3 Simpler APIs for full screen ads and banner ads.](broken://pages/VPaOuTi4FdZj15jrbkmF)
  * [13.4 Ad Delegates are changed. SetDelegate API is removed.](broken://pages/VPaOuTi4FdZj15jrbkmF)
  * [13.5 Native Ad](broken://pages/VPaOuTi4FdZj15jrbkmF)
  * [13.6 isAdCached API is changed](broken://pages/VPaOuTi4FdZj15jrbkmF)
  * [13.7 Destroy Banner API is changed](broken://pages/VPaOuTi4FdZj15jrbkmF)

### CocoaPods (preferred)

The simplest way to import the SDK into an iOS project is to use [CocoaPods](https://guides.cocoapods.org/using/getting-started). Open your project's Podfile and add this line to your app's target:

```
pod 'PokktAds'
```

Then from the command line run:

```
pod install
```

If you're new to CocoaPods, see their [official documentation](https://guides.cocoapods.org/using/using-cocoapods) for info on how to create and use Podfiles.

### Manual download

####

Last Update: 29th October, 2021

Download Latest Version Here

***

#### Pokkt iOS SDK Integration Guide v8.1.0

* Download the latest SDK. Here
* Unzip the downloaded file and drag the PokktSDK.framework directory into Xcode under Framework.
* Add the required compiler flags to 'Other Linker Flags' field in your project's Build Settings.
  * -ObjC
  * -lxml2
* Make sure that these frameworks are included to respect the library dependencies:<br>
  * Add Webkit.Framework.
  * ARKit.framework

Error creating thumbnail: File missing

### SDK Configuration

1\. Set Application Id and Security key in Pokkt SDK. You can get it from the Pokkt dashboard from your account. We generally assign unique application-id and security-key.

```
 [PokktAds setPokktConfigWithAppId:appId securityKey:securityKey]; 
```

2\. When your application is under development and if you want to see sdk logs and other informatory messages, you can enable it by setting setDebug to true . Make sure to disable debugging before release.

```
 [PokktDebugger setDebug:<YES/NO>]; 
```

### Full-Screen Ads

1. Full-screen ads can be rewarded or non-rewarded and video or interstitial. You can either cache the ad in advance or directly call show for it.
2. We suggest you cache the ad in advance so as to give seamless play behaviour, In other case it will stream the video which may lead to unnecessary buffering delays depending on the network connection.
3. Screen-Id: ​ This one parameter is accepted by almost all API’s of Pokkt SDK. This controls the placement of ads and can be created on Pokkt Dashboard. We will be referencing the ​PokktAdsDemo ​ app provided with SDK during the course of explanation in this document. We suggest you go through the sample app for better understanding.
4. To cache Full-screen ad call:<br>

   ```
   [PokktAds cacheAd:screenId withDelegate:delegate];
   ```
5. To Show Video Ad:<br>

   ```
   [PokktAds showAd:screenId withDelegate:delegate presentingVC:viewcontroller];
   ```

   \
   You can check if an ad is available, before making a show request.<br>

   ```
   [PokktAds isAdCached:screenId];
   ```
6. Ad actions are optional, but we suggest to implement them as it will help you to keep track of the status of your ad request.<br>

   ```
   /** Caching **/
   - (void)adCachingResult:(NSString *)screenId
   isSuccess:(BOOL)success
   withReward:(double)reward
   errorMessage:(NSString *)errorMessage;
   /** Ad Display **/
   - (void)adDisplayResult:(NSString *)screenId
   isSuccess:(BOOL)success
   errorMessage:(NSString *)errorMessage;
   /** Ad Closed **/
   - (void)adClosed:(NSString *)screenId adCompleted:(BOOL)adCompleted;
   /** Ad Interaction **/
   - (void)adClicked:(NSString *)screenId;
   - (void)adGratified:(NSString *)screenId withReward:(double)reward;
   ```

###

1. Load banner Ad call:

   ```
   PokktBannerView *banner = [PokktBanner initWithBannerAdSize:CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, 50)];
   [self.view addSubview:banner];
   [PokktAds showAd:(NSString *)screenId withViewController:(UIViewController *)viewController bannerContainer:(PokktBannerView *)bannerView withDelegate:self];
   ```
2. Refresh banner: You can set banner refresh rate on pokkt dashboard. Refresh rate should be in range of 30 -100
3. Destroy banner

   ```
   [PokktAds destroyBanner:(PokktBannerView *)bannerContainer];
   ```
4. Ad actions are optional, but we suggest to implement them as it will help you to keep track of the status of your ad request.

   ```
   - (void)bannerExpanded:(NSString *)screenId;
   - (void)bannerResized:(NSString *)screenId;
   - (void)bannerCollapsed:(NSString *)screenId;
   ```

### Native Ads

1. A native ad may be served in feed or in between the developer content inside the app. Normally, FullScreen ads are delivered on call to action by the user. Native ads eliminate this limitation and show ads without any user request.Native ads are also non intrusive as they will be automatically paused when the ad is out of the view by scrolling. The PokktNativeAdLayout will be part of developer application parent components which may be ListView, Layout in ScrollView or WebView.\
   Load Native Ad:

   ```
   [PokktAds requestNativeAd:(NSString *)screenId withDelegate:self withNativeAdConfig:(PokktNativeAdConfig*)nativeAdConfig];

   //after calling ’requestNativeAd:withDelegate:’, Inside the -(void)adReady:(NSString *)screenId withNativeAd:(PokktNativeAd *)pokktNativeAd; method you will receive PokktNativeAd object and then extract your ad by calling below method.

   UIView *adView = [pokktNativeAd getMediaView];
   ```
2. Ad actions are optional, but we suggest to implement them as it will help you to keep track of the status of your ad request.<br>

   ```
   - (void)adReady:(NSString *)screenId withNativeAd:(PokktNativeAd *)pokktNativeAd;
   - (void)adFailed
   :(NSString *)screenId error:(NSString *)errorMessage;
   ```

### Display Native Ad

When a native ad loads, your app will receive a native ad object via adReady delegate messages. Your app is then responsible for displaying the ad.

The first step is to create a UIView subclass that will display native ad assets. The class also provides IBOutlets used to register the view used for each individual asset. Below are the header file and nib file format:

```
#import <UIKit/UIKit.h>
@interface PokktNativeAdNibView : UIView
@property (weak, nonatomic) IBOutlet UIImageView *iconView;
@property (weak, nonatomic) IBOutlet UILabel *advertizerView;
@property (weak, nonatomic) IBOutlet UIImageView *starRatingView;
@property (weak, nonatomic) IBOutlet UILabel *starRatingLabel;
@property (weak, nonatomic) IBOutlet UILabel *bodyView;
@property (weak, nonatomic) IBOutlet UIButton *callToActionView;
@property (weak, nonatomic) IBOutlet UILabel *priceView;
@property (weak, nonatomic) IBOutlet UILabel *storeView;
@property (weak, nonatomic) IBOutlet UILabel *headlineView;
@property (weak, nonatomic) IBOutlet UIView *mediaView;
@property (weak, nonatomic) IBOutlet UILabel *nativeAd;
@property (weak, nonatomic) IBOutlet UILabel *likeLbl;
@property (weak, nonatomic) IBOutlet UILabel *CTALbl;
@property (weak, nonatomic) IBOutlet UILabel *downloadLbl;
@property (weak, nonatomic) IBOutlet UILabel *saleLbl;
@property (weak, nonatomic) IBOutlet UILabel *phoneNumLbl;
@property (weak, nonatomic) IBOutlet UILabel *address;
@property (weak, nonatomic) IBOutlet UILabel *additionalDescriptive;
@property (weak, nonatomic) IBOutlet UILabel *displayURL;
@end
```

Error creating thumbnail: File missing

Once the layout is complete and the outlets are linked, the last step is to add code to your app that displays an ad once it has loaded. Here's a method to display an ad in the view defined above:

Create a UIView class object in the class where you want to show native ads and pass that object properties to PokktNativeAdViewBinder class.

```
PokktNativeAdNibView *nativeAdView;
```

```
- (void)adReady:(NSString *)screenId withNativeAd:(PokktNativeAd *)pokktNativeAd
{
PokktNativeAdViewBinder *nativeBinder = [[PokktNativeAdViewBinder alloc]
initWithNativeRootView:nativeAdView mediaView:nativeAdView.mediaView
icon:nativeAdView.iconView title:nativeAdView.headlineView
ctaButton:nativeAdView.callToActionView body:nativeAdView.bodyView
sponsor:nativeAdView.advertizerView rating:nativeAdView.starRatingLabel
price:nativeAdView.priceView like:nativeAdView.likeLbl cta:nativeAdView.CTALbl
download:nativeAdView.downloadLbl salePrice:nativeAdView.saleLbl
phoneNumber:nativeAdView.phoneNumLbl address:nativeAdView.address
additionalDescriptive:nativeAdView.additionalDescriptive
displayURL:nativeAdView.displayURL];
[nativeBinder populateView:pokktNativeAd];
[containerView addSubview:nativeAdView];
}
```

Developers will have to do cleanup of Native Ad on viewController deInit.

```
[pokktNativeAd destroy];
```

### Additional SDK Configuration

####

As of May 25th, the General Data Protection Regulation (GDPR) will be enforced in the European Union.

Set *GDPR consent* in Pokkt SDK. This must be called before calling any ad related API. Developers/Publishers must get the consent from user. For more information on GDPR please refer <https://www.eugdpr.org/> and <https://www.eugdpr.org/gdpr-faqs.html> . This API can again be used by publishers to revoke the consent. If this API is not called or invalid data provided then SDK will access the users personal data for ad targeting

```
PokktConsentInfo *consentInfo = [[PokktConsentInfo alloc] init];
consentInfo.isGDPRApplicable = true;
consentInfo.isGDPRConsentAvailable = false;
[PokktAds setPokktConsentInfo:consentInfo];
```

###

You can set extra parameters to POKKT SDK, to be passed back to your server via POKKT server callback. These Extra parameters will be in key-value pair.The key must be alphanumeric value. See the below example

```
NSMutableDictionary *dict = [[NSMutableDictionary alloc] initWithCapacity:0];
[dict setValue:@"value1" forKey:@"key1"];
[dict setValue:@"value2" forKey:@"key2"];
[dict setValue:@"value3" forKey:@"key3"];
[PokktAds setCallbackExtraParam:dict];
```

### ThirdPartyUser Id

If you are using server to server integration with Pokkt, you can also set Third Party UserId in PokktAds.

```
PokktAds.setThirdPartyUserId:(NSString*) userId
```

### User Detail

For better targeting of ads you can also provide user details to our SDK using

```
PokktUserDetails *pokktUserDetails = [PokktUserDetails alloc] init];
pokktUserDetails.Name = "";
pokktUserDetails.Age = "";
pokktUserDetails.Sex = "";
pokktUserDetails.MobileNo = "";
pokktUserDetails.EmailAddress = "";
pokktUserDetails.Location = "";
pokktUserDetails.Birthday = "";
pokktUserDetails.MaritalStatus = "";
pokktUserDetails.FacebookId = "";
pokktUserDetails.TwitterHandle = "";
pokktUserDetails.Education = "";
pokktUserDetails.Nationality = "";
pokktUserDetails.Employment = "";
pokktUserDetails.MaturityRating = "";
[PokktAds setPokktUserDetails: pokktUserDetails]
```

### Pokkt AdPlayer Configuration

Pokkt Ad player works the way App is configured at Pokkt dashboard, but we provide a way to override those settings using PokktAdPlayerViewConfig.

Application should prefer configuration provided through code by developer or what’s configured for the app in dashboard, can be controlled any time through the dashboard itself. If you want to make changes to this configuration after your app distribution, you can contact Pokkt Team to do the same for your app through admin console.

```
PokktAdPlayerViewConfig * adPlayerViewConfig = [[PokktAdPlayerViewConfig alloc] init];
// set properties values to adPlayerViewConfig
PokktAds.setAdPlayerViewConfig(adPlayerViewConfig );
```

Various properties that can be managed through this are:

1\. Default skip time\
Defines the time after which user can skip the Ad.\
Property name: DefaultSkipTime\
Values:\
Any Integer value.\
Default value is 10 seconds.<br>

2\. Should allow skip\
Defines if user is allowed to skip the Ad or not.\
Property name: ShouldAllowSkip\
Values:\
True = User can skip Ad.\
False = User can’t skip Ad.<br>

3\. Should allow mute\
Defines if user is allowed to mute the Video Ad or not.\
Property name: ShouldAllowMute\
Values:\
True = User can mute video Ad.\
False = User can’t mute video Ad.<br>

4\. Should confirm skip\
Defines if confirmation dialog is to be shown before skipping the Ad.\
Property name: ShouldConfirmSkip\
Values:\
True = Confirmation dialog will be shown before skipping the video.\
False = Confirmation dialog will not be shown before skipping the video.<br>

5\. Skip confirmation message\
Defines what confirmation message to be shown in skip dialog.\
Property name: SkipConfirmMessage\
Values:\
Any String message.\
Default value is “Skipping this video will earn you NO rewards. Are you sure?”.<br>

6\. Affirmative label for skip dialog\
Defines what should be the label for affirmative button in skip dialog.\
Property name: SkipConfirmYesLabel\
Values:\
Any String message.\
Default value is “Yes”.<br>

7\. Negative label for skip dialog\
Defines what should be the label for affirmative button in skip dialog.\
Property name: SkipConfirmNoLabel\
Values:\
Any String message.\
Default value is “No”.<br>

8\. Skip timer message\
Defines message to be shown before enabling skip button. Don’t forget to add placeholder “ ## ” in your custom message. This placeholder is replaced by property “Default skip time” assigned above.\
Property name: setSkipTimerMessage\
Values:\
Any String message.\
Default value is “You can skip video in ## seconds”<br>

9\. Incentive message\
Defines message to be shown during video progress, that after what time user will be incentivised.\
Property name: setIncentiveMessage\
Values:\
Any String message\
Default value is “more seconds only for your reward !”<br>

10\. AudioEnabled\
AudioEnabled set YES or NO to mute ad,if 'YES' ad will be mute. , default is NO.\
Property name: isAudioEnabled\
Values:\
True = If you want to mute Ad.\
False = If you don’t want to mute Ad.<br>

11\. Should collect feedback\
Defines message to be shown during video progress, that after what time user will be incentivised.\
Property name setShouldCollectFeedback\
Values:\
True = If you want to collect feedback from the user for the Ad.\
False = If you don’t want to collect feedback from the user for the Ad.

### Migration Note Guide v 8.1.0

* In case of any query regarding integration, refer “PokktSDK Integration Guide (iOS, v8.1.0)” for this version provided inside “PokktSDK\_v8.1.0”.

**Screen ID**

ScreenId is accepted by almost all API’s of Pokkt SDK. This controls the placement of ads and can be created on Pokkt Dashboard. This replaced Screen Name used earlier.

**AdTypes**

Rewarded Video ads and Interstitial Ads are merged into full screen ad type and ad type can be changed in runtime by editing the screen id Ad type.

**Simpler APIs for full screen ads and banner ads.**

```
[PokktVideoAds cacheRewardedVideoAd: (NSString*) screenName];
[PokktVideoAds cacheNonRewardedVideoAd: (NSString*) screenName];
[PokktInterstitial cacheRewarded (NSString*) screenName];
[PokktInterstitial cacheNonRewarded: (NSString*) screenName];

is now 

[PokktAds cacheAd:screenId withDelegate:delegate];
```

```
[PokktVideoAds showRewardedVideoAd:(NSString*) screenName
viewController:(UIViewController*)viewController];

[PokktVideoAds showNonRewardedVideoAd:(NSString*)
screenName viewController:(UIViewController*)viewController];

[PokktInterstitial showRewarded :(NSString*)
screenName viewController:(UIViewController *)viewController];

[PokktInterstitial showNonRewarded :(NSString*)
screenName viewController:(UIViewController *)viewController];

 is now 

[PokktAds showAd:screenId withDelegate:delegate presentingVC:viewcontroller]; 
```

```
[PokktBanner loadBanner:banner withScreenName:(NSString*) screenName
rootViewContorller:(PokktBannerView *)bannerView];

 is now 

UIView  *banner = [UIView initWithFrame:CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, 50)];
[self.view addSubview:banner];

[PokktAds showAd:screenTF.text withDelegate:self
     inContainer:banner]; 
```

**Ad Delegates are changed. SetDelegate API is removed.**

```
[PokktVideoAdsDelegate setPokktVideoAdsDelegate:self];

- (void)videoAdCachingCompleted: (NSString *)screenName isRewarded: (BOOL)isRewarded reward:
(float)reward;

- (void)videoAdCachingFailed: (NSString *)screenName isRewarded: (BOOL)isRewarded errorMessage: (NSString
*)errorMessage;

- (void)videoAdCompleted: (NSString *)screenName isRewarded: (BOOL)isRewarded;

- (void)videoAdDisplayed: (NSString *)screenName isRewarded: (BOOL)isRewarded;

- (void)videoAdClicked: (NSString *)screenName isRewarded: (BOOL)isRewarded;

- (void)videoAdGratified: (NSString *)screenName reward:(float)reward;

- (void)videoAdSkipped: (NSString *)screenName isRewarded: (BOOL)isRewarded;

- (void)videoAdClosed:(NSString *)screenName isRewarded: (BOOL)isRewarded;

- (void)videoAdFailedToShow: (NSString *)screenName isRewarded: (BOOL)isRewarded errorMessage: (NSString
*)errorMessage;

 is now 

- (void)adCachingResult:(NSString *)screenId 
              isSuccess:(BOOL)success 
             withReward:(double)reward 
           errorMessage:(NSString *)errorMessage; 

- (void)adDisplayResult:(NSString *)screenId 
              isSuccess:(BOOL)success 
           errorMessage:(NSString *)errorMessage;
 
- (void)adClosed:(NSString *)screenId 
     adCompleted:(BOOL)adCompleted; 

- (void)adClicked:(NSString *)screenId; 

- (void)adGratified:(NSString *)screenId 
         withReward:(double)reward; 

- (void)adReady:(NSString *)screenId 
   withNativeAd:(PokktNativeAd *)pokktNativeAd;
 
- (void)adFailed:(NSString *)screenId 
           error:(NSString *)errorMessage; 
```

```
[PokktInterstitial setPokktInterstitialDelegate:self];;

- (void)interstitialCachingCompleted: (NSString *)screenName isRewarded: (BOOL)isRewarded reward:
(float)reward;

- (void)interstitialCachingFailed: (NSString *)screenName isRewarded: (BOOL)isRewarded errorMessage:
(NSString *)errorMessage;

- (void)interstitialCompleted: (NSString *)screenName isRewarded: (BOOL)isRewarded; 
check

- (void)interstitialDisplayed: (NSString *)screenName isRewarded: (BOOL)isRewarded;

- (void)interstitialClicked: (NSString *)screenName isRewarded: (BOOL)isRewarded;

- (void)interstitialGratified: (NSString *)screenName reward:(float)reward;

- (void)interstitialSkipped: (NSString *)screenName isRewarded: (BOOL)isRewarded;

- (void)interstitialClosed:(NSString *)screenName isRewarded: (BOOL)isRewarded;

- (void)interstitialFailedToShow: (NSString *)screenName isRewarded: (BOOL)isRewarded errorMessage:
(NSString *)errorMessage;

 is now 

- (void)adCachingResult:(NSString *)screenId 
              isSuccess:(BOOL)success 
             withReward:(double)reward 
           errorMessage:(NSString *)errorMessage; 

- (void)adDisplayResult:(NSString *)screenId 
              isSuccess:(BOOL)success 
           errorMessage:(NSString *)errorMessage;
 
- (void)adClosed:(NSString *)screenId 
     adCompleted:(BOOL)adCompleted; 

- (void)adClicked:(NSString *)screenId; 

- (void)adGratified:(NSString *)screenId 
         withReward:(double)reward; 

- (void)adReady:(NSString *)screenId 
   withNativeAd:(PokktNativeAd *)pokktNativeAd;
 
- (void)adFailed:(NSString *)screenId 
           error:(NSString *)errorMessage; 
```

**Native Ad**

Native Ads are introduced which replaces OutStream ads. Please refer to our documentation for details.

**isAdCached API is changed**

```
[PokktVideoAds isAdCached:(NSString *)screenName isRewarded:(BOOL)isRewarded];

[PokktInterstitial
isAdCached:(NSString *)screenName isRewarded:(BOOL)isRewarded];

is now 
[PokktAds isAdCached:screenId];
```

```
[PokktBanner destroyBanner:<PokktBannerView>];

is now 

[PokktAds dismissAd: screenId]; 
```


# Native TvOS

### Contents

* [1 Pokkt SDK for tvOS (v4.0) Integration Guide](broken://pages/I33nAKybuVsSoqlK3l5n)
* [2 Getting Started with Pokkt SDK v4.0](broken://pages/I33nAKybuVsSoqlK3l5n)
  * [2.1 Pokkt SDK for tvOS Integration Guide v4.0](broken://pages/I33nAKybuVsSoqlK3l5n)
    * [2.1.1 Overview](broken://pages/I33nAKybuVsSoqlK3l5n)
  * [2.2 Project Configuration](broken://pages/I33nAKybuVsSoqlK3l5n)
    * [2.2.1 Dependencies](broken://pages/I33nAKybuVsSoqlK3l5n)
  * [2.3 Implementation Steps.](broken://pages/I33nAKybuVsSoqlK3l5n)
    * [2.3.1 SDK Configuration](broken://pages/I33nAKybuVsSoqlK3l5n)
    * [2.3.2 Ad Types](broken://pages/I33nAKybuVsSoqlK3l5n)
      * [2.3.2.1 Video](broken://pages/I33nAKybuVsSoqlK3l5n)
      * [2.3.2.2 Rewarded](broken://pages/I33nAKybuVsSoqlK3l5n)
      * [2.3.2.3 Non Rewarded](broken://pages/I33nAKybuVsSoqlK3l5n)
    * [2.3.3 Ad Delegates](broken://pages/I33nAKybuVsSoqlK3l5n)
      * [2.3.3.1 Video](broken://pages/I33nAKybuVsSoqlK3l5n)
    * [2.3.4 OutStream Ads](broken://pages/I33nAKybuVsSoqlK3l5n)
    * [2.3.5 Pokkt ad player configuration](broken://pages/I33nAKybuVsSoqlK3l5n)
    * [2.3.6 User Details](broken://pages/I33nAKybuVsSoqlK3l5n)
    * [2.3.7 Debugging](broken://pages/I33nAKybuVsSoqlK3l5n)
    * [2.3.8 Analytics](broken://pages/I33nAKybuVsSoqlK3l5n)
      * [2.3.8.1 Google Analytics](broken://pages/I33nAKybuVsSoqlK3l5n)
      * [2.3.8.2 Flurry Analytics](broken://pages/I33nAKybuVsSoqlK3l5n)
      * [2.3.8.3 MixPanel Analytics](broken://pages/I33nAKybuVsSoqlK3l5n)
      * [2.3.8.4 Fabric Analytics](broken://pages/I33nAKybuVsSoqlK3l5n)
    * [2.3.9 IAP(In App Purchase)](broken://pages/I33nAKybuVsSoqlK3l5n)
    * [2.3.10 Limitation](broken://pages/I33nAKybuVsSoqlK3l5n)

### Pokkt SDK for tvOS (v4.0) Integration Guide

Last Update: 11th February, 2019

Download Latest Version Here with PDF Documentation v4.0.

***

### Getting Started with Pokkt SDK v4.0

1\. Add *"PokktSDK.framework"* to your project.

2\. Set *Application Id* and *Security Key* in Pokkt SDK. You can get it from Pokkt dashboard from your account. These are unique per app registered.

```
[PokktAds setPokktConfigWithAppId:(NSString*)appId
securityKey:(NSString*)securityKey];
```

3\. Set the following to enable or disable omission of Pokkt logs and other informatory messages. Make sure to set it to false before release.

```
[PokktDebugger setDebug:[YES/NO]];
```

4\. Show Video Ad with one of the followings:

```
[PokktVideoAds showRewardedVideoAd:(NSString*) screenName
viewController:(UIViewController *)viewController];
[PokktVideoAds showNonRewardedVideoAd:(NSString*) screenName
viewController:(UIViewController *)viewController];
```

5\. Implement *\[PokktVideoAdsDelegate setPokktVideoAdsDelegate:]* to listen to video-ad related messages.

***

#### Pokkt SDK for tvOS Integration Guide v4.0

**Overview**

Thank you for choosing Pokkt SDK for iOS. This document contains all the information required to set up the SDK with your project. Before implementing it is mandatory to go through project configuration and implementation steps , as these sections contain mandatory steps for basic SDK integration.

You can download our SDK from pokkt.com.

In the package downloaded above you will find::

1. Docs
   * Contains documentations for step wise step integration for SDK.
2. PokktAds Demo
   * Source code for *PokktAds Demo*(Sample app) which showcase implementation of Pokkt SDK through code for better understanding.
3. PokktSDK
   * *PokktSDK.framework* add in to your project

ScreenName: This one parameter is accepted by almost all API’s of Pokkt SDK. This controls the placement of ads and can be created on Pokkt Dashboard.

We will be referencing PokktAds Demo app provided with SDK during the course of explanation in this document. We suggest you go through the sample app for better understanding.

#### Project Configuration

**Dependencies**

* Add PokktSDK.framework to your project’s settings at “Build Phases -> Link Binary with Libraries and add the PokktSDK.framework.

Frameworks Required

```
CoreData.framework
Foundation.framework
MediaPlayer.framework
SystemConfiguration.framework
UIKit.framework
CoreTelephony.framework
EventKit.framework
AdSupport.framework
CoreGraphics.framework
CoreMotion.framework
MessageUI.framework
EventKitUI.framework
CoreLocation.framework
AVFoundation.framework
libc++.tbd
```

Info.plist

Add the below exceptions to your application’s info.plist.

```
<key>NSAppTransportSecurity</key>
<dict>
   <key>NSExceptionDomains</key>
   <dict>
      <key>pokkt.com</key>
      <dict>
         <key>NSIncludesSubdomains</key>
         <true/>
         <key>NSExceptionAllowsInsecureHTTPLoads</key>
         <true/>
         <key>NSExceptionRequiresForwardSecrecy</key>
         <false/>
         <key>NSExceptionMinimumTLSVersion</key>
         <string>TLSv1.2</string>
         <key>NSThirdPartyExceptionAllowsInsecureHTTPLoads</key>
         <false/>
         <key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
         <true/>
         <key>NSThirdPartyExceptionMinimumTLSVersion</key>
         <string>TLSv1.2</string>
         <key>NSRequiresCertificateTransparency</key>
         <false/>
      </dict>
      <key>cloudfront.net</key>
      <dict>
         <key>NSIncludesSubdomains</key>
         <true/>
         <key>NSExceptionAllowsInsecureHTTPLoads</key>
         <true/>
         <key>NSExceptionRequiresForwardSecrecy</key>
         <false/>
         <key>NSExceptionMinimumTLSVersion</key>
         <string>TLSv1.2</string>
         <key>NSThirdPartyExceptionAllowsInsecureHTTPLoads</key>
         <false/>
         <key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
         <true/>
         <key>NSThirdPartyExceptionMinimumTLSVersion</key>
         <string>TLSv1.2</string>
         <key>NSRequiresCertificateTransparency</key>
         <false/>
      </dict>
   </dict>
</dict>
```

Other Settings

* Please make sure that your app project has *-ObjC* set as Other linker flag in Build Settings.

***

#### Implementation Steps.

**SDK Configuration**

1\. Set Application Id and Security key in Pokkt SDK. You can get it from Pokkt dashboard from your account. We generally assign unique application Id and Security key.

```
PokktAds.setPokktConfigWithAppId:(NSString*) appId securityKey:(NSString*)securityKey
```

2\. If you are using server to server integration with Pokkt, you can also set Third Party UserId in PokktAds.

```
PokktAds.setThirdPartyUserId:(NSString*) userId
```

3\. When your application is under development and if you want to see Pokkt logs and other informatory messages, you can enable it by setting shouldDebug to true . Make sure to disable debugging before release.

```
[PokktDebugger setDebug: YES/ NO];
```

**Ad Types**

**Video**

* Video ad can be rewarded or non-rewarded. You can directly call show for it.
* it will stream the video which may lead to buffering delays depending on the network connection.

**Rewarded**

1. To show rewarded ad call:

   ```
   [PokktVideoAds showRewardedVideoAd:(NSString*) screenName viewController:(UIViewController *)viewController];
   ```

**Non Rewarded**

1. To show non-rewarded ad call:

   ```
   [PokktVideoAds showNonRewardedVideoAd:(NSString*) screenName viewController:(UIViewController *)viewController];
   ```

**Ad Delegates**

Ad actions are optional, but we suggest to implement them as it will help you to keep track of the status of your ad request.

**Video**

```
[PokktVideoAdsDelegate setPokktVideoAdsDelegate:self];
```

**OutStream Ads**

1. OutStream ad will be non-rewarded only.
2. Ad will play only if Ad is visible in bound, if it is not visible on the screen it will in pause state.
3. OutStream Ad contain 3 states as Play, Pause & Replay. After completing the video Replay button will be enable.
4. If You are requesting for full screen ad then you have to destroy OutStream ad.
5. OutStream Ad allows only for the following format.
   * ScrollView
     1. Load OutStream Ad Call:<br>

        ```
        +(void)loadOutstreamAd:(NSString*) screenName placeHolder:(UIView *)container scrollView:(UIScrollView *)scrollView withDelegate: (PokktOutStreamsAdsDelegate*) delegate
        ```
     2. Destroy OutStream Ad Call:<br>

        ```
        +(void)disappearScrollViewOutStreamAd:(NSString *)screenName inContainer:(UIView *)container
        ```
   * Tableview
     1. Load Ad<br>

        ```
        +(void)loadOutstreamAd:(NSString*) screenName atIndexPath:(NSIndexPath*)indexPath tableView:(UITableView *)tableView withDelegate:(PokktOutStreamsAdsDelegate*) delegate
        ```
     2. Destroy Ad<br>

        ```
        +(void)disappearTableViewOutStreamAd:(NSString *)screenName inContainer:(UITableView *)tableView
        ```

**Pokkt ad player configuration**

Pokkt Ad player works the way App is configured at Pokkt dashboard, but we provide a way to override those settings using PokktAdPlayerViewConfig.

Application should prefer configuration provided through code by developer or what’s configured for the app in dashboard, can be controlled any time through the dashboard itself. If you want to make changes to this configuration after your app distribution, you can contact Pokkt Team to do the same for your app through admin console.

```
PokktAdPlayerViewConfig * adPlayerViewConfig = [[PokktAdPlayerViewConfig alloc] init];
// set properties values to adPlayerViewConfig
PokktAds.setAdPlayerViewConfig(adPlayerViewConfig );
```

Various properties that can be managed through this are:

1\. Default skip time\
Defines the time after which user can skip the Ad.\
Property name: DefaultSkipTime\
Values:\
Any Integer value.\
Default value is 10 seconds.<br>

2\. Should allow skip\
Defines if user is allowed to skip the Ad or not.\
Property name: ShouldAllowSkip\
Values:\
True = User can skip Ad.\
False = User can’t skip Ad.<br>

3\. Should allow mute\
Defines if user is allowed to mute the Video Ad or not.\
Property name: ShouldAllowMute\
Values:\
True = User can mute video Ad.\
False = User can’t mute video Ad.<br>

4\. Should confirm skip\
Defines if confirmation dialog is to be shown before skipping the Ad.\
Property name: ShouldConfirmSkip\
Values:\
True = Confirmation dialog will be shown before skipping the video.\
False = Confirmation dialog will not be shown before skipping the video.<br>

5\. Skip confirmation message\
Defines what confirmation message to be shown in skip dialog.\
Property name: SkipConfirmMessage\
Values:\
Any String message.\
Default value is “Skipping this video will earn you NO rewards. Are you sure?”.<br>

6\. Affirmative label for skip dialog\
Defines what should be the label for affirmative button in skip dialog.\
Property name: SkipConfirmYesLabel\
Values:\
Any String message.\
Default value is “Yes”.<br>

7\. Negative label for skip dialog\
Defines what should be the label for affirmative button in skip dialog.\
Property name: SkipConfirmNoLabel\
Values:\
Any String message.\
Default value is “No”.<br>

8\. Skip timer message\
Defines message to be shown before enabling skip button. Don’t forget to add placeholder “ ## ” in your custom message. This placeholder is replaced by property “Default skip time” assigned above.\
Property name: setSkipTimerMessage\
Values:\
Any String message.\
Default value is “You can skip video in ## seconds”<br>

9\. Incentive message\
Defines message to be shown during video progress, that after what time user will be incentivised.\
Property name: setIncentiveMessage\
Values:\
Any String message\
Default value is “more seconds only for your reward !”<br>

10\. Should collect feedback\
Defines message to be shown during video progress, that after what time user will be incentivised.\
Property name setShouldCollectFeedback\
Values:\
True = If you want to collect feedback from the user for the Ad.\
False = If you don’t want to collect feedback from the user for the Ad.

**User Details**

For better targeting of ads you can also provide user details to our SDK using.

```
PokktUserDetails *pokktUserDetails = [PokktUserDetails alloc] init];
pokktUserDetails.Name = "";
pokktUserDetails.Age = "";
pokktUserDetails.Sex = "";
pokktUserDetails.MobileNo = "";
pokktUserDetails.EmailAddress = "";
pokktUserDetails.Location = "";
pokktUserDetails.Birthday = "";
pokktUserDetails.MaritalStatus = "";
pokktUserDetails.FacebookId = "";
pokktUserDetails.TwitterHandle = "";
pokktUserDetails.Education = "";
pokktUserDetails.Nationality = "";
pokktUserDetails.Employment = "";
pokktUserDetails.MaturityRating = "";
[PokktAds setPokktUserDetails: pokktUserDetails]
```

**Debugging**

Other than enabling debugging for Pokkt SDK, it can also be used to:

**Analytics**

We support various analytics in Pokkt SDK.

Below is mentioned how to enable various analytics with Pokkt SDK.

**Google Analytics**

Google analytics Id can be obtained from Google dashboard.

```
PokktAnalyticsDetails *analyticsDetail = [[PokktAnalyticsDetails alloc] init];
analyticsDetail.eventType = GOOGLE_ANALYTICS;
analyticsDetail.googleTrackerID = @"xyz";
[PokktAds setPokktAnalyticsDetail:analyticsDetail];
```

**Flurry Analytics**

Flurry application key can be obtained from Flurry dashboard.

```
PokktAnalyticsDetails *analyticsDetail = [[PokktAnalyticsDetails alloc] init];
analyticsDetail.eventType = FLURRY_ANALYTICS;
analyticsDetail.flurryTrackerID = @"xyz";
[PokktAds setPokktAnalyticsDetail:analyticsDetail];
```

**MixPanel Analytics**

MixPanel project token can be obtained from MixPanel dashboard.

```
PokktAnalyticsDetails *analyticsDetail = [[PokktAnalyticsDetails alloc] init];
analyticsDetail.eventType = MIXPANNEL_ANALYTICS;
analyticsDetail.mixPanelTrackerID = @"xyz";
[PokktAds setPokktAnalyticsDetail:analyticsDetail];
```

**Fabric Analytics**

Analytics Id is not required in case of Fabric.

```
PokktAnalyticsDetails *analyticsDetail = [[PokktAnalyticsDetails alloc] init];
analyticsDetail.eventType = FABRIC_ANALYTICS;
analyticsDetail.fabricTrackerID = @"xyz";
[PokktAds setPokktAnalyticsDetail:analyticsDetail];
```

**IAP(In App Purchase)**

Call trackIAP to send any In App purchase information to Pokkt.

```
InAppPurchaseDetails * inAppPurchaseDetails = [ InAppPurchaseDetails alloc]init];
inAppPurchaseDetails.ProductId = "<productId>";
inAppPurchaseDetails.PurchaseData = "<purchaseData>";
inAppPurchaseDetails.PurchaseSignature = "<purchaseSignature>";
inAppPurchaseDetails.PurchaseStore = IAPStoreType.GOOGLE;
inAppPurchaseDetails.Price = <100.00>;
[PokktAds trackIAP: inAppPurchaseDetails]
```

**Limitation**

* Any web-enabled ad content is not supported, such as MRAID/VPAID/HTML ads etc.
* Currently caching for video/images is not possible.
* There is no close-button for video, start & end cards.
* No mute-button for video ads.


# Native Windows Phone

### Contents

* [1 Pokkt SDK v1.0 for Windows Phone 8.1 Integration Guide](broken://pages/k0zcRgrLB5RGqG7iJVmD)
  * [1.1 Introduction:](broken://pages/k0zcRgrLB5RGqG7iJVmD)
  * [1.2 Installation:](broken://pages/k0zcRgrLB5RGqG7iJVmD)
  * [1.3 Code Integration:](broken://pages/k0zcRgrLB5RGqG7iJVmD)
    * [1.3.1 Implementation Steps](broken://pages/k0zcRgrLB5RGqG7iJVmD)
      * [1.3.1.1 Common:](broken://pages/k0zcRgrLB5RGqG7iJVmD)
      * [1.3.1.2 Session:](broken://pages/k0zcRgrLB5RGqG7iJVmD)
      * [1.3.1.3 Video:](broken://pages/k0zcRgrLB5RGqG7iJVmD)
      * [1.3.1.4 Optional Parameters:](broken://pages/k0zcRgrLB5RGqG7iJVmD)
  * [1.4 Video-ad Functionalities:](broken://pages/k0zcRgrLB5RGqG7iJVmD)
  * [1.5 Debugging and Logging](broken://pages/k0zcRgrLB5RGqG7iJVmD)

### Pokkt SDK v1.0 for Windows Phone 8.1 Integration Guide

Last Update: July 31, 2015

Download Latest Version Here v3.0.0.

***

#### Introduction:

Thank you for choosing Pokkt SDK for Windows Phone 8.1. This document contains all the information that is needed by you to setup the SDK with your project.

There is a sample app provided along with the SDK. We will be referencing to this app during the course of explanation in this document. It is suggested that you examine that app to understand the following process in detail. We assume that you are using Visual Studio 2013.

You can download our sample app (PokktSampleApp) on your Windows Phone 8.1 device. Follow the link mentioned below:

<http://windowsphone.com/s?appid=be678e25-497a-4fbd-abf1-4a2fa66363de>

***

#### Installation:

The SDK comes in a zip file: PokktSDK\_1.0\_WP81.zip

Once you extract it, you will find two folders inside:

a. SDK

b. SampleApp

The ‘SDK’ folder contains the main SDK library (PokktSDK.dll) along with supporting files. You will be using these for your project. Add PokktSDK.dll in your project Reference.

The ‘SampleApp’ folder contains the Visual Studio 2013 solution (.sln) and project for the sample app, along with the source. You will be using this as reference.

Important: Please do not copy the code snippets from this PDF file as it may introduce unwanted characters and space in your code. Instead always refer to the sample app source code provided.

***

#### Code Integration:

**Implementation Steps**

**Common:**

1. For all invocation of Pokkt SDK functionalities, the developer will make use of methods available in `PokktManager` class. This is a static class, thus, have static methods only.
2. Make sure to call `PokktManager`.`InitPokkt` method before you make any other method calls, except session related methods (`PokktManager.StartSession` or `EndSession`).
3. Make note of `PokktConfig` class! This holds all the values required by the SDK which you will be assigning to it. Then you will have to provide a properly filled instance of `PokktConfig` for almost every method calls that you will be making.
4. In `PokktConfig`, you must assign the `ApplicationId, SecurityKey and IntegrationType`. These values are must for all type of integration.
5. If you are doing a server-to-server integration with Pokkt, you can also mention `ThirdPartyUserId` in `PokktConfig`.
6. Apart from above mentioned values/parameters, you can assign additional value/parameters based on your integration type.
7. During the course of development, you can call `PokktManager.SetDebug(true)` to omit the SDK debug logs. Make sure to set it `false` for production build.

**Session:**

1. You should call `PokktManager`.`StartSession` at the start of your application and once only. You will have to provide your duly assigned PokktConfig object/instance for this method.
2. You should call `PokktManager`.`EndSession` at the end of your application and once only.

**Video:**

1. These are video-ad related values/parameters that you can set:
   * `AutoCacheVideo`: You can set it to true/false to control video caching on user’s device. If you set it to true, the video will be cached automatically. Set it to false to disable auto-caching of video, but you have to manually call `PokktManager.CacheVideoCampaign` to cache the available video campaign.This is set to ‘true’ by default.
   * `DefaultSkipTime`: Set this value (in seconds) to make it compulsory for a user to watch a video-ad for the given amount of time you have mentioned.A user then, may be able to skip the remaining video-ad if there is a ‘skip’ button available. It is recommended to set it to 10 or less.
   * `SkipEnabled`: You can set it to true/false to show a ‘skip’ button over the video. A user can click this to skip the video-ad playback. You can control the time when you want to show it by setting above mentioned `DefaultSkipTime` parameter.
   * `BackButtonDisabled`: You can disabled the device’s back-button by setting this false, while the video-ad playback is it progress.
   * `ScreenName`: It has a default value ‘default’. It can be used by you to give different screen-name for different locations in your app where you want to show video-ads. You will control ad-targeting based on these screen-names which should match exactly with the screen-names defined in the Dashboard. Screen-names cannot contains whitespaces and only allowed special characters are: ‘hyphen’ and ‘underscores’.
   * `Incentivised`: Set this value to ‘true/false’ to control the incentives that are being presented to the user after watching a video-ad. Video Gratification will happen only if you have set it to ‘true’.
2. You will need to listen to the events mentioned in `VideoCampaignDelegate` to get all video-campaign related messages. This is discussed further is this document.
3. You can call `PokktManager.IsVideoAvailable` to check whether a video is available ‘locally’ for playback or not.
4. In order to play an available video, you have to call `PokktManager.PlayVideo`. You will have to provide your duly filled `PokktConfig` instance along with a reference to the `Page` control. This `Page` control will act as a parent container for the video.

**Optional Parameters:**

`PokktConfig` also has provision for developers to provide extra user data available with them to pokkt.We currently support following data points: name, age, sex, mobileNo, emailAddress, location, birthday, maritalStatus, facebookId, twitterHandle, education, nationality, employment and maturityRating.

***

#### Video-ad Functionalities:

There are 7 events to manage the video caching and its playback, these are:

1. VideoClosedEvent
2. VideoDisplayedEvent
3. VideoSkippedEvent
4. VideoCompletedEvent
5. VideoGratifiedEvent
6. DownloadCompletedEvent
7. DownloadFailedEvent

Reference on how to consume them:

```
VideoCampaignDelegate.DownloadCompletedEvent += (float vc)
{
};
VideoCampaignDelegate.DownloadFailedEvent += (string message)
{
};
VideoCampaignDelegate.VideoDisplayedEvent += ()
{
};
VideoCampaignDelegate.VideoCompletedEvent += ()
{
};
VideoCampaignDelegate.VideoClosedEvent += (bool backPress)
{
};
VideoCampaignDelegate.VideoSkippedEvent += ()
{
};
VideoCampaignDelegate.VideoGratifiedEvent += (VideoResponse response)
{
string coins = response.Coins;
};
```

Remarks:

A video file is cached on user’s device. You can set the auto-caching option in the beginning, as mentioned earlier in this document. In case of manual caching, call the following to start video caching: PokktManager.CacheVideoCampaign(pokktConfig);

Before playing video or showing button to play video, Application should check whether video is cached or not by calling the following: PokktManager.IsVideoAvailable();

You should listen to “DownloadCompletedEvent” to check whether download is completed or not, you can show the play buttons once you receive this event.\
Furthermore, Application can decide to play video as incentivised (user will be gratified after watching complete video) or non- incentivised (user will not be gratified after watching complete video). You must provide the screen-name parameter for it. Followings are the method calls to me made:

```
pokktConfig.Incentivised = true/false;
pokktConfig.ScreenName = "your_screen_name";
PokktManager.PlayVideo(pokktConfig, containerPage);
```

Next, you can listen to `VideoGratifiedEvent` to get the coins earned, if at all, by watching the last video.

***

#### Debugging and Logging

You can enable the SDK logs by setting the debugging option to true anytime. Ref.: `PokktManager.SetDebug(true/false);` You can use the following command to log some debug messages: `Logger.Log("pokkt init...");`

Export Log File:

In order to export the log file generated by the SDK, two utility methods have been provided:

1. PokktManager.ExportLogFile();
2. PokktManager.FinishExportingLogFile(file); // file is StorageFile

You have to use these two in continuation. The first method is straightforward. When you call the `PokktManager.ExportLogFile()`, you are presented with a `FileSavePicker` message-box, select the desired location where you want to save the file and confirm it. Once you confirm, you will arrive at your application again and inside your app-entry class, override its `OnActivated` method and access the eventargs parameter of this method. You will find a `StorageFile` object inside it. Take this and pass it to the second method mentioned above: `PokktManager.FinishExportingLogFile(file)`. Code Snippet:

```
protected override void OnActivated(IActivatedEventArgs args)
{
base.OnActivated(args);
try
{
FileSavePickerContinuationEventArgs fsArgs =
args as FileSavePickerContinuationEventArgs;
if (fsArgs != null)
{
StorageFile file = fsArgs.File;
PokktManager.FinishExportingLogFile(file); // file is StorageFile
}
}
catch (Exception e)
{
Logger.LogNoSave("failed to save file: " + e);
}
}
```

Please check the implementation inside the provided SampleApp for better understanding of it.

Clearing Log File: You can call `PokktManager.ClearLogFile()` to clear the log file.


# Unity3D

### Contents

* [1 POKKT SDK v8.1.0 (GDPR Compliance) Unity3d](broken://pages/pLWq8Riv5Yz078FNg3Ga)
* [2 Integration Guide v8.1.0](broken://pages/pLWq8Riv5Yz078FNg3Ga)
  * [2.1 Overview](broken://pages/pLWq8Riv5Yz078FNg3Ga)
  * [2.2 Implementation Steps](broken://pages/pLWq8Riv5Yz078FNg3Ga)
    * [2.2.1 SDK Configuration](broken://pages/pLWq8Riv5Yz078FNg3Ga)
    * [2.2.2 Ad Types](broken://pages/pLWq8Riv5Yz078FNg3Ga)
      * [2.2.2.1 FullScreen Ads](broken://pages/pLWq8Riv5Yz078FNg3Ga)
      * [2.2.2.2 Banner](broken://pages/pLWq8Riv5Yz078FNg3Ga)
      * [2.2.2.3 IGA (In Game Ad)](broken://pages/pLWq8Riv5Yz078FNg3Ga)
        * [2.2.2.3.1 Types of Ads:](broken://pages/pLWq8Riv5Yz078FNg3Ga)
        * [2.2.2.3.2 How to use InGame Ad Units:](broken://pages/pLWq8Riv5Yz078FNg3Ga)
        * [2.2.2.3.3 Note:](broken://pages/pLWq8Riv5Yz078FNg3Ga)
  * [2.3 Additional SDK Configuration](broken://pages/pLWq8Riv5Yz078FNg3Ga)
    * [2.3.1 GDPR](broken://pages/pLWq8Riv5Yz078FNg3Ga)
    * [2.3.2 ThirdPartyUser Id](broken://pages/pLWq8Riv5Yz078FNg3Ga)
    * [2.3.3 Pokkt ad player configuration](broken://pages/pLWq8Riv5Yz078FNg3Ga)
    * [2.3.4 User Details](broken://pages/pLWq8Riv5Yz078FNg3Ga)
    * [2.3.5 iOS Framework and build settings configuration](broken://pages/pLWq8Riv5Yz078FNg3Ga)

###

Last Update: 10th December, 2021

Download Latest Version Here.

***

### Integration Guide v8.1.0

#### Overview

Thank you for choosing Pokkt SDKfor Unity. This document contains all the information required to set up the SDK with your project. We also support mediation for various third party networks. To know the supported third party networks and their integration process go to mediation section .

You can download our SDK from pokkt.com

We will be referencing PokktAds Demo( Sample App ) provided inside the SDK downloaded above during the course of explanation in this document. We suggest you go through the sample app for better understanding.

***

#### Implementation Steps

**SDK Configuration**

1. Set Application Id and Security key in Pokkt SDK. You can get it from the Pokkt dashboard from your account. We generally assign unique application-id and security-key.

   ```
   PokktAds.SetPokktConfig(string appId, string securityKey, INativeExtension nativeExtension, bool isDebuggingEnabled = false);
   ```
2. When your application is under development and if you want to see Pokkt logs and other informatory messages, you can enable it by setting ShouldDebug to true . Make sure to disable debugging before release.

   ```
   PokktAds.ShouldDebug(bool value);
   PokktAds.ShowLog(string message);
   PokktAds.ShowToast(string message);
   ```

**Ad Types**

**FullScreen Ads**

1. Full-screen ads can be rewarded or non-rewarded and video or interstitial. You can either cache the ad in advance or directly call show for it.
2. We suggest you cache the ad in advance so as to give seamless play behaviour, In other case it will stream the video which may lead to unnecessary buffering delays depending on the network connection.
3. ScreenId: ​This one parameter is accepted by almost all API’s of Pokkt SDK. This controls the placement of ads and can be created on Pokkt Dashboard. We will be referencing the ​PokktAds Demo ​app provided with SDK during the course of explanation in this document. We suggest you go through the sample app for better understanding.
4. To cache Full-screen ad call:

   ```
   PokktAds.CacheAd(string screenId);
   ```
5. To Show Video Ad:

   ```
   PokktAds.ShowAd(string screenId);
   ```

   You can check if an ad is available, before making a show request.

   ```
   PokktAds.IsAdCached(string screenId); 
   ```
6. Ad actions are optional, but we suggest to implement them as it will help you to keep track of the status of your ad request.

   ```
   public static event Action<string, float> AdCachedEvent;
   public static event Action<string, string> AdFailedToCacheEvent;
   public static event Action<string> AdDisplayedEvent;
   public static event Action<string, string> AdFailedToShowEvent;
   public static event Action<string, bool> AdClosedEvent;
   public static event Action<string> AdClickedEvent;
   public static event Action<string, float> AdGratifiedEvent;
   public static event Action<string> BannerLoadedEvent;
   public static event Action<string, string> BannerLoadFailedEvent;
   ```

There are two ways to load banners:

1. Load banner<br>

   ```
    PokktAds.LoadBanner(string screenId, int position);
   ```

   There are predefined positions for banner positioning inside BannerPosition( Com. Pokkt.Plugin.Common.BannerPosition ) .

   TOP\_LEFT.\
   TOP\_CENTER.\
   TOP\_RIGHT.\
   MIDDLE\_LEFT.\
   MIDDLE\_CENTER.\
   MIDDLE\_RIGHT.\
   BOTTOM\_LEFT.\
   BOTTOM\_CENTER.\
   BOTTOM\_RIGHT.
2. Load banner with rect<br>

   ```
    PokktAds.LoadBannerWithRect(string screenId, int height, int width, float x, float y); 
   ```

   Height : Custom height for banner.\
   Width: Custom width for banner.\
   x: Point x on screen to show banner.\
   y: Point y on screen to show banner.
3. You can remove Banner using:<br>

   ```
    PokktAds.RemoveBanner(); 
   ```

**IGA (In Game Ad)**

Introducing a new way to monetize the game. Currently it works only for Android but soon will be available for iOS. Using Pokkt IGA (In-Game Ads) you can use your in-game objects to display ads. Pokkt IGA use a less intrusive way to achieve this. Refer our sample for a better understanding. Our existing SDK + Unity Plugin has this feature from version 6.0.

**Types of Ads:**

We support three different types of Ad:

1. Banner Ads: These are image-based advertisements that can be placed anywhere in your game.
2. Hoarding Ads: These are also image-based advertisements but larger in size as compared to the banners. These can also be placed anywhere in your game but we suggest you to place them in game objects like hoarding, as these are large and serves better purpose there.
3. Floating Ads: This Ad Unit itself consists of two image sources unlike its counterparts.
   * Icon: It shows a small interactive image of the size of standard icons. On clicking on this icon it will open a full screen image
   * Full Screen Image: It shows a full screen image with close button on its top right corner. The content of this image will further describe what that icon was about. This image has a “click through” assigned to it which will take the user to browser for further action or interaction if user wish to.

**How to use InGame Ad Units:**

1. Banner Ads:
   * Using Pokkt Menu: Select your game object on which you want to add banner as highlighted in below image. We suggest to use “Quad” as “GameObject” as placement for banner although it’s not mandatory.

     Error creating thumbnail: File missing

     As a result of above step “Pokkt IGA Container” script gets attached to your “GameObject” with “Banner” selected as AdType. You can assign “Player Camera” also if required but it’s optional.

     Error creating thumbnail: File missing
   * Programmatically:

     ```
     PokktIGAContainer.AddIGABanner(yourIGAGameObject)
     ```
2. Hoarding Ads:
   * Using Pokkt Menu: Select your game object on which you want to add banner as highlighted in below image. We suggest to use “Quad” as “GameObject” as placement for hoarding although it’s not mandatory.

     Error creating thumbnail: File missing

     As a result of above step “Pokkt IGA Container” script gets attached to your “GameObject” with “Hoarding” selected as AdType. You can assign “Player Camera” also if required but it’s optional.

     Error creating thumbnail: File missing
   * Programmatically:

     ```
     PokktIGAContainer. AddIGAHoarding (yourIGAGameObject)
     ```
3. Floating Ads:
   * Using Pokkt Menu: Select your game object on which you want to add Floating Unit as highlighted in below image. We highly recommend you to add “ Button” as '“GameObject” as placement for floating unit.

     Error creating thumbnail: File missing

     As a result of above step “Pokkt IGA Container” script gets attached to your “GameObject” with “Floating Unit” selected as AdType. You can assign “Player Camera” also if required but it’s optional.

     Error creating thumbnail: File missing
   * Programmatically:

     ```
     PokktIGAContainer. AddIGAFloatingButton (yourIGAGameObject)
     ```

IGA Collectibles and Boosts can only be assigned programmatically. Collectibles are in-game objects that a player collects during a gameplay, for example “Coins”, “Gems” etc. Boosts are collectibles with instant bonuses, powerups can be put in this category. Collectibles and Boosts are smaller textures compared to IGA Banners and hoardings.

```
PokktIGAContainer.AddIGACollectible(yourIGAGameObject);
PokktIGAContainer.AddIGABoost(yourIGAGameObject);
```

**Note:**

You still need to set your *App ID* and *Security Key* before you can fetch IGA Assets.\
To fetch assets call:

```
PokktAds.InGameAd.Fetch(<”<ScreenName>”>);
```

#### Additional SDK Configuration

As of May 25th, the General Data Protection Regulation (GDPR) will be enforced in the European Union. Set GDPR consent in Pokkt SDK. This must be called before calling any ad related API. Developers/Publishers must get the consent of the user. For more information on GDPR please refer <https://www.eugdpr.org/> and <https://www.eugdpr.org/gdpr-faqs.html>. This API can again be used by publishers to revoke the consent. If this API is not called or invalid data provided then SDK will access the users personal data for ad targeting

```
ConsentInfo consentInfo = new ConsentInfo();
consentInfo.isGDPRApplicable = true;
consentInfo.isGDPRConsentAvailable = false;
ConsentInfo.SetDataAccessConsent(consentInfo);
```

**ThirdPartyUser Id**

If you are using server to server integration with Pokkt, you can also set Third Party UserId in PokktAds.

```
PokktAds.SetThirdPartyUserId(string userId)
```

**Pokkt ad player configuration**

Pokkt Ad player works the way App is configured at Pokkt dashboard, but we provide a way to override those settings using PokktAdPlayerViewConfig.

Application should prefer configuration provided through code by developer or what’s configured for the app in dashboard, can be controlled any time through the dashboard itself. If you want to make changes to this configuration after your app distribution, you can contact Pokkt Teamto do the same for your app through admin console.

```
PokktAdPlayerViewConfig adPlayerViewConfig = new PokktAdPlayerViewConfig ();
// set properties values to adPlayerViewConfig
PokktAds.SetAdPlayerViewConfig(adPlayerViewConfig );
```

Various properties that can be managed through this are:

1. Back button\
   Defines if user is allowed to close the Advertisement by clicking on back button or not.\
   Property Name: BackButtonDisabled\
   Values:\
   True = Back button is disabled and user cannot close the Ad.\
   False = Back button is not disabled and user can close the Ad.
2. Default skip time\
   Defines the time after which user can skip the Ad.\
   Property name:DefaultSkipTime\
   Values:\
   Any Integer value.\
   Default value is 10 seconds.
3. Should allow skip\
   Defines if user is allowed to skip the Ad or not.\
   Property name:ShouldAllowSkip\
   Values:\
   True = User can skip Ad.\
   False = User can’t skip Ad.
4. Should allow mute\
   Defines if user is allowed to mute the Video Ad or not.\
   Property name:ShouldAllowMute\
   Values:\
   True = User can mute video Ad.\
   False = User can’t mute video Ad.
5. Should confirm skip\
   Defines if confirmation dialog is to be shown before skipping the Ad.\
   Property name:ShouldConfirmSkip\
   Values:\
   True = Confirmation dialog will be shown before skipping the video.\
   False = Confirmation dialog will not be shown before skipping the video.
6. Skip confirmation message\
   Defines what confirmation message to be shown in skip dialog.\
   Property name:SkipConfirmMessage\
   Values:\
   Any String message.\
   Default value is “Skipping this video will earn you NO rewards. Are you sure?”.
7. Affirmative label for skip dialog\
   Defines what should be the label for affirmative button in skip dialog.\
   Property name:SkipConfirmYesLabel\
   Values:\
   Any String message.\
   Default value is “Yes”.
8. Negative label for skip dialog\
   Defines what should be the label for affirmative button in skip dialog.\
   Property name:SkipConfirmNoLabel\
   Values:\
   Any String message.\
   Default value is “No”.
9. Skip timer message\
   Defines message to be shown before enabling skip button. Don’t forget to add placeholder “ ## ” in your custom message.\
   This placeholder is replaced by property “Default skip time” assigned above.\
   Property name:SkipTimerMessage\
   Values:\
   Any String message.\
   Default value is “You can skip video in ## seconds”
10. Incentive message\
    Defines message to be shown during video progress, that after what time user will be incentivised.\
    Property name:IncentiveMessage\
    Values:\
    Any String message\
    Default value is “more seconds only for your reward !”
11. Should collect feedback\
    Defines message to be shown during video progress, that after what time user will be incentivised.\
    Property name:setShouldCollectFeedback\
    Values:\
    True = If you want to collect feedback from the user for the Ad.\
    False = If you don’t want to collect feedback from the user for the Ad.
12. Audio Enabled\
    Provides a medium to disable audio for video ad without user interaction.\
    Property name:IsAudioEnabled\
    Values:\
    True = If you want to play audio for video ad.\
    False = If you don’t want to play audio for video ad.

**User Details**

For better targeting of ads you can also provide user details to our SDK using.

```
PokktUserDetails pokktUserDetails = new PokktUserDetails();
pokktUserDetails.Name = "";
pokktUserDetails.Age = "";
pokktUserDetails.Sex = "";
pokktUserDetails.MobileNo = "";
pokktUserDetails.EmailAddress = "";
pokktUserDetails.Location = "";
pokktUserDetails.Birthday = "";
pokktUserDetails.MaritalStatus = "";
pokktUserDetails.FacebookId = "";
pokktUserDetails.TwitterHandle = "";
pokktUserDetails.Education = "";
pokktUserDetails.Nationality = "";
pokktUserDetails.Employment = "";
pokktUserDetails.MaturityRating = "";
PokktAds.SetUserDetails(pokktUserDetails);
```

**iOS Framework and build settings configuration**

The iOS frameworks required are shown below:

Error creating thumbnail: File missing

Also, please change your project settings to use the New Build System when creating iOS build. For other iOS build related configurations, please follow the iOS documentation for POKKT SDK.


# Unity3D (Windows Phone)

### Contents

* [1 POKKT SDK v4.1 Integration Guide for Unity3d 5.2+ (Windows)](broken://pages/K6NYkPTPogdB6ZdEjiUc)
  * [1.1 Overview:](broken://pages/K6NYkPTPogdB6ZdEjiUc)
  * [1.2 Configuration Steps:](broken://pages/K6NYkPTPogdB6ZdEjiUc)
  * [1.3 3.Implementation Steps](broken://pages/K6NYkPTPogdB6ZdEjiUc)
    * [1.3.1 Common:](broken://pages/K6NYkPTPogdB6ZdEjiUc)
    * [1.3.2 Session:](broken://pages/K6NYkPTPogdB6ZdEjiUc)
    * [1.3.3 Rewarded/Non-Rewarded Ads:](broken://pages/K6NYkPTPogdB6ZdEjiUc)
    * [1.3.4 Export Logs (Only for Windows Phone Plugin):](broken://pages/K6NYkPTPogdB6ZdEjiUc)
    * [1.3.5 Clearing Log File:](broken://pages/K6NYkPTPogdB6ZdEjiUc)
    * [1.3.6 Optional Parameters:](broken://pages/K6NYkPTPogdB6ZdEjiUc)

### POKKT SDK v4.1 Integration Guide for Unity3d 5.2+ (Windows)

Last Update: July 1st, 2016

Download Latest Version Here v4.1.1.

***

#### Overview:

Thank you for choosing Pokkt SDK Plugin v4.1 for Unity3d. Pokkt SDK Video/Interstitial-Ad campaigns feature. This document contains all the information that is needed by you to setup the SDK with your project.

Kindly note that these instructions are for Unity3d Version 5.2 and above, older versions of Unity3d are not supported.

There is a sample app provided with the SDK. We will be referencing this app during the course of explanation in this document. It is suggested that you should check that app to understand the following process in detail.

Note: Please do not copy the code points from this PDF file as it may introduce unwanted characters and space in your code. Instead please refer to sample app source code provided with the sample app.

***

#### Configuration Steps:

All we need is the file provided: PokktUnityDemo\_Windows.unitypackage

Step 1: Export the content of this package onto your Unity project. The contents of “Plugin/Pokkt” and the “Plugins/Android” directories are mandatory. You can safely ignore all the other stuff, they are provided here to demonstrate the integration of Pokkt-SDK, this document uses snippets from those files.

Step 2: Ensure that you have PWPUnity.dllfile directly inside the Assets/Pluginsfolder. This is the editor’s “placeholder” plugin for the original Windows plugin. Select the PWPUnity.dlland set the following on the Inspector Panel (reference the following image):

Select platforms for plugin: Uncheck “Any Player” and then check only “Editor”

Step 3: Next, ensure that you have another PWPUnity.dlland a PWPUnity.pdbinside Assets/Plugins/WSAfolder, along with PokktSDK.dll, PokktSDK.pdband a PokktSDKfolder with some resources (you will use these resources later on). Now select PokktSDK.dlland set the following on the Inspector Panel (reference the following image):

Select platforms for plugin: Check “WSAPlayer”\
SDK: PhoneSDK8.1 or Any SDK\
CPU: Any CPU\
Don’t Process: \[CHECK]\
Placeholder: \[EMPTY]

Step 4: Select UnityWindowsExtension.dllinside Assets/Plugins/WSAfolder and set the following on the Inspector Panel (reference the image below):

Select platforms for plugin: Check “WSAPlayer”\
SDK: PhoneSDK8.1 or Any SDK\
CPU: Any CPU\
Don’t Process: \[CHECK]\
Placeholder: \[MAP TO: Assets/Plugins/ PWPUnity.dll]

*Note: Ignore any exception (System.Reflection.TargetInvocationException) you encounter while importing this DLL file.*

Step 5: Once you have built/generated the C# Project, manually add and include the PokktSDK folder inside Assets/Plugins/WSAfolder to the project. This PokktSDKfolder should have a UI folder inside it. Once added to the generated C# Project, select each of the XBF files inside the UI folder and set the following in the Properties Window (reference the image below):

Build Action: Content\
Copy to Output Directory: Copy Always

This should integrate the Plugin with your project.

***

#### 3.Implementation Steps

**Common:**

1. For all invocation of Pokkt SDK developer will make use of methods available in PokktManager class. This class only have static methods.
2. Setup your PokktConfig, provide ApplicationId and SecurityKey, these are must for initializing Pokkt.
3. Once you have you PokktConfigready, invoke InitPokkt method before you invoke any other methods from the PokktManager. This does not apply to session related methods namely StartSessionand EndSessionand few utility methods.
4. In order to know whether Pokkt is initialized or not, listen to PokktInitialisedEvent, if the provided Boolean parameter is true only then move ahead with other operations.
5. If you are doing server to server integration with Pokkt you can also set ThirdPartyUserIdin PokktConfig.
6. While in development, you can call PokktManager.SetDebug(true) to see Pokkt debug logs and toast messages. please make sure to change this to false for production build.
7. Call PokktManager.NotifyAppInstall() to log your application installation information with Pokkt.
8. Call PokktManager.TrackIAP(details) to log any in-app purchase details with Pokkt.

**Session:**

1. Invoke PokktManager.StartSession() at the start of his application and once only.
2. You should call PokktManager.EndSession()at the end of his application and once only.

**Rewarded/Non-Rewarded Ads:**

1. You will have to configure an AdConfig object to request for any ad to be displayed. It also provides options for customizing your ad-screen. It is recommended to have different AdConfig objects for each screens. Followings are the values that you can set with AdConfig:
   * ScreenName (Required): This controls the placement of ads and can be created on Pokkt Dashboard.
   * IsRewarded (Required):Requested ad type. Ad gratification will happen only for rewarded ads.
   * BackButtonDisabled: Disable ‘back’ button press while on ad-screen.
   * DefaultSkipTime:If ad-skipping is allowed, this provides the seconds it will wait before the skip button appears.
   * ShouldAllowSkip: Whether skipping-ad is allowed or not. If set to ‘false’, user will be forced to watch the ad till it finishes.
   * ShouldAllowMute: Whether to allow sound-mute while on ad-screen, it controls the ‘mute’ button. Cannot contains whitespaces and only special characters allowed are hyphens (-) and underscores (\_).
   * ShouldConfirmSkip: Controls whether to show the skip-confirmation dialog box. If set to ‘false’, the ad will be silently closed without prompting for confirmation
   * SkipConfirmMessage:The message that will appear on skip-confirmation dialog box.
   * SkipConfirmYesLabel: ‘Yes’ Label of skip-confirmation dialog box.
   * SkipConfirmNoLabel:‘No’ Label of skip-confirmation dialog box.
   * SkipTimerMessage:The message on countdown-timer before the skip button appears. The message must contain a ‘##’-placeholder to show timer value.
   * IncentiveMessage:If set, the message will be displayed while prompting user to watch the ad for certain time before it can be rewarded.
2. Invoke PokktManager.CacheAd(adConfig)to cache the ad on device. Cached-ads provide better user experience than streaming-ads
3. You can call PokktManager.CheckAdAvailability(adConfig)to check if the adcampaigns are available or not. The result will be notified via AdAvailabilityEvent.
4. Invoke PokktManager.ShowAd(adConfig)to show ad.
5. Following are ad-related events, you can refer to the provided sample-code to understand the ideal implementation on how to consume these:<br>
   * AdCachingCompletedEvent
   * AdCachingFailedEvent
   * AdDisplayedEvent
   * AdSkippedEvent
   * AdCompletedEvent
   * AdClosedEvent
   * AdGratifiedEvent
   * AdAvailabilityEvent
6. Reward user ONLY from the AdGratifiedEvent.

**Export Logs (Only for Windows Phone Plugin):**

1. Call PokktManager.ExportLog()to export the Pokkt SDK logs to folder of your choice.
2. This API shows a folder chooser dialog where user can choose a particular folder.
3. User can also create a new folder where user wants to export the logs.
4. You will also have to modify the exported Visual Studio Project and locate the App.xaml.cs file. Then find the method called OnActivated(create one if not there). Next call PokktNativeExtension.OnAppActivated(param).This ensures log file export.

   ```
   protected override void OnActivated(IActivatedEventArgs args)
   {
      PokktNativeExtension.OnAppActivated(args);
      // some other stuff
   }
   ```

**Clearing Log File:**

You can call PokktNativeExtension.ClearLogFile()to clear the log file.

**Optional Parameters:**

PokktConfigalso has provision for developers to provide extra user data available with them to Pokkt. We currently support following data points: Name, Age, Sex, MobileNo, EmailAddress, Location, Birthday, MaritalStatus, FacebookId, TwitterHandle, Education, Nationality, Employmentand MaturityRating.


# Cocos2d-x V3

### Contents

* [1 POKKT SDK v7.6.0 (GDPR Compliance) Cocos2D-3x](broken://pages/QkQEbSFJxiUaVSZjEa03)
* [2 Getting Started with Pokkt SDK v7.6.0](broken://pages/QkQEbSFJxiUaVSZjEa03)
* [3 Integration Guide v7.6.0](broken://pages/QkQEbSFJxiUaVSZjEa03)
  * [3.1 Overview](broken://pages/QkQEbSFJxiUaVSZjEa03)
  * [3.2 Implementation Steps](broken://pages/QkQEbSFJxiUaVSZjEa03)
    * [3.2.1 SDK Configuration](broken://pages/QkQEbSFJxiUaVSZjEa03)
    * [3.2.2 Ad Types](broken://pages/QkQEbSFJxiUaVSZjEa03)
      * [3.2.2.1 Video](broken://pages/QkQEbSFJxiUaVSZjEa03)
    * [3.2.3 Interstitial](broken://pages/QkQEbSFJxiUaVSZjEa03)
    * [3.2.4 Banner](broken://pages/QkQEbSFJxiUaVSZjEa03)
    * [3.2.5 Ad Listeners](broken://pages/QkQEbSFJxiUaVSZjEa03)
      * [3.2.5.1 Video](broken://pages/QkQEbSFJxiUaVSZjEa03)
      * [3.2.5.2 Interstitial](broken://pages/QkQEbSFJxiUaVSZjEa03)
      * [3.2.5.3 Banner](broken://pages/QkQEbSFJxiUaVSZjEa03)
    * [3.2.6 Pokkt ad player configuration](broken://pages/QkQEbSFJxiUaVSZjEa03)
    * [3.2.7 User Details](broken://pages/QkQEbSFJxiUaVSZjEa03)
    * [3.2.8 Pokkt Server Callback Params](broken://pages/QkQEbSFJxiUaVSZjEa03)
    * [3.2.9 Debugging](broken://pages/QkQEbSFJxiUaVSZjEa03)
    * [3.2.10 Analytics](broken://pages/QkQEbSFJxiUaVSZjEa03)
      * [3.2.10.1 Google Analytics](broken://pages/QkQEbSFJxiUaVSZjEa03)
      * [3.2.10.2 Flurry Analytics](broken://pages/QkQEbSFJxiUaVSZjEa03)
      * [3.2.10.3 MixPanel Analytics](broken://pages/QkQEbSFJxiUaVSZjEa03)
      * [3.2.10.4 Fabric Analytics](broken://pages/QkQEbSFJxiUaVSZjEa03)
    * [3.2.11 IAP(In App Purchase)](broken://pages/QkQEbSFJxiUaVSZjEa03)
  * [3.3 Project Configuration](broken://pages/QkQEbSFJxiUaVSZjEa03)
    * [3.3.1 Android](broken://pages/QkQEbSFJxiUaVSZjEa03)
    * [3.3.2 Dependencies](broken://pages/QkQEbSFJxiUaVSZjEa03)
    * [3.3.3 Manifest](broken://pages/QkQEbSFJxiUaVSZjEa03)
      * [3.3.3.1 Permissions Declarations](broken://pages/QkQEbSFJxiUaVSZjEa03)
      * [3.3.3.2 Activity Declaration](broken://pages/QkQEbSFJxiUaVSZjEa03)
      * [3.3.3.3 Service Declaration](broken://pages/QkQEbSFJxiUaVSZjEa03)
    * [3.3.4 iOS](broken://pages/QkQEbSFJxiUaVSZjEa03)
    * [3.3.5 Dependencies](broken://pages/QkQEbSFJxiUaVSZjEa03)
    * [3.3.6 Framework](broken://pages/QkQEbSFJxiUaVSZjEa03)
    * [3.3.7 Info.plist](broken://pages/QkQEbSFJxiUaVSZjEa03)

###

Last Update: 22nd November, 2019

Download Latest Version Here.

***

### Getting Started with Pokkt SDK v7.6.0

1\. Add *"pokktsdk"* available inside the *"Pokkt\_Cocos2dx\_Plugin\_v7.6.0.zip"* to your project.

2\. Set *Application Id* and *Security Key* in Pokkt SDK. You can get it from Pokkt dashboard from your account. These are unique per app registered.

```
PCPokktAds::setPokktConfig("<Pokkt Application ID>", "<Pokkt Security Key>");
```

3\. Set the following to enable or disable omission of Pokkt logs and other informatory messages. Make sure to set it to false before release.

```
PCPokktAds::Debugging.shouldDebug(<true>);
```

4\. Set *GDPR consent* in Pokkt SDK. This must be called before calling any ad related API. Developers/Publishers must get the consent from user. For more information on GDPR please refer <https://www.eugdpr.org/> and <https://www.eugdpr.org/gdpr-faqs.html> . This API can again be used by publishers to revoke the consent. If this API is not called or invalid data provided then SDK will access the users personal data for ad targeting.

```
pokkt::PCPokktConsentInfo info;
info.GDPRApplicable = value;
info.GDPRConsentAvailable = value;
PCPokktAds::setPokktConsentInfo(info);
```

5\. You can check if Ad is cached or not using

```
PCPokktAds::isVideoAdCached(“screen_name”, isRewarded);
PCPokktAds::isInterstitialCached(“screen_name”, isRewarded);
```

6\. Show Video Ad with one of the followings:

```
PCPokktAds::showRewardedVideoAd("<ScreenName>");
PCPokktAds::showNonRewardedVideoAd("<ScreeName>");
```

7\. Show Interstitial Ad with one of the followings:

```
PCPokktAds::showRewardedInterstitialAd("<ScreenName>");
PCPokktAds::showNonRewardedInterstitialAd("<ScreenName>");
```

8\. For Banner Ad

```
PCPokktAds::loadBanner(<ScreenName>, <BannerPosition>);
PCPokktAds::initWithBannerAdSize(<ScreenName>,<Height>, Width>, <x>,<y>);
PCPokktAds::destroyBanner()
```

9\. Ad delegates are optional, but we suggest to implement them as it will help you to keep track of the status of your ad request.

10\. We recommend caching of video-ads for better user experience, you can cache an ad using the followings:

```
PCPokktAds::cacheRewardedVideoAd("<ScreenName>");
PCPokktAds::cacheNonRewardedVideoAd("<ScreeName>");
```

### Integration Guide v7.6.0

#### Overview

Thank you for choosing Pokkt SDKfor Cocos2d-3x. This document contains all the information required to set up the SDK with your project. We also support mediation for various third party networks. To know the supported third party networks and their integration process go to mediation section.

Before implementing plugins it is mandatory to go through project configuration and implementation steps , as these sections contain mandatory steps for basic SDK integration and are followed by every plugin.

You can download our SDK from pokkt.com

ScreenName: This one parameter is accepted by almost all API’s of Pokkt SDK. This controls the placement of ads and can be created on Pokkt Dashboard.

We will be referencing PokktAds Demo app provided with SDK during the course of explanation in this document. We suggest you go through the sample app for better understanding.

***

#### Implementation Steps

**SDK Configuration**

1. Set Application Idand Security keyin Pokkt SDK. You can get it from Pokkt dashboard from your account. These are unique per app registered.<br>

   ```
   PCPokktAds::setPokktConfig("<Pokkt Application ID>", "<Pokkt Security Key>");
   ```
2. If you are using server to server integration with Pokkt, you can also set Third Party UserIdin PokktAds.<br>

   ```
   PCPokktAds::setThirdPartyUserId("<Third party user Id>");
   ```
3. When your application is under development and if you want to see Pokkt logs and other informatory messages, you can enable it by setting shouldDebugto true . Make sure to disable debugging before release.<br>

   ```
   PCPokktAds::Debugging.shouldDebug(<true>);
   ```
4. Set *GDPR consent* in Pokkt SDK. This must be called before calling any ad related API. Developers/Publishers must get the consent from user. For more information on GDPR please refer <https://www.eugdpr.org/> and <https://www.eugdpr.org/gdpr-faqs.html> . This API can again be used by publishers to revoke the consent. If this API is not called or invalid data provided then SDK will access the users personal data for ad targeting.

   ```
   pokkt::PCPokktConsentInfo info;
   info.GDPRApplicable = value;
   info.GDPRConsentAvailable = value;
   PCPokktAds::setPokktConsentInfo(info);
   ```

**Ad Types**

**Video**

* Video ad can be rewarded or non-rewarded. You can either cache the ad in advance or directly call show for it.
* We suggest you to cache the ad in advance so as to give seamless play behaviour, In other case it will stream the video which may lead to unnecessary buffering delays depending on the network connection.

1. To cache rewarded ad call:<br>

   ```
   PCPokktAds::cacheRewardedVideoAd("<ScreenName>");
   ```
2. To show rewarded ad call:<br>

   ```
   PCPokktAds::showRewardedVideoAd("<ScreenName>");
   ```
3. To cache non-rewarded ad call:<br>

   ```
   PCPokktAds::cacheNonRewardedVideoAd("<ScreeName>");
   ```
4. To show non-rewarded ad call:<br>

   ```
   PCPokktAds::showNonRewardedVideoAd("<ScreeName>");
   ```
5. You can check if ad is cached or not using

   ```
   PCPokktAds::isVideoAdCached(“screen_name”, isRewarded);
   ```

**Interstitial**

1. To cache rewarded ad call:<br>

   ```
   PCPokktAds::cacheRewardedInterstitialAd("<ScreeName>");
   ```
2. To show rewarded ad call:<br>

   ```
   PCPokktAds::showRewardedInterstitialAd("<ScreeName>");
   ```
3. To cache non-rewarded ad call:<br>

   ```
   PCPokktAds::cacheNonRewardedInterstitialAd("<ScreeName>");
   ```
4. To show non-rewarded ad call:<br>

   ```
   PCPokktAds::showNonRewardedInterstitialAd("<ScreeName>");
   ```
5. You can check if ad is cached or not using

   ```
   PCPokktAds::isInterstitialCached(“screen_name”, isRewarded);
   ```

There are two ways to load banners:

1. Load banner<br>

   ```
   PCPokktAds::loadBanner(<screenName>”, <BannerPosition>);
   ```

   There are predefined positions for banner positioning inside BannerPosition ( Com. Pokkt.Plugin.Common.BannerPosition ).

   * TOP\_LEFT.
   * TOP\_CENTER.
   * TOP\_RIGHT.
   * MIDDLE\_LEFT.
   * MIDDLE\_CENTER.
   * MIDDLE\_RIGHT.
   * BOTTOM\_LEFT.
   * BOTTOM\_CENTER.
   * BOTTOM\_RIGHT.
2. Load banner with rect<br>

   ```
   PCPokktAds::initWithBannerAdSize(<ScreenName>, <Height>,<Width>,<x>,<y>);
   ```

   Height : Custom height for banner.\
   Width: Custom width for banner.\
   x: Point x on screen to show banner.\
   y: Point y on screen to show banner.
3. You can remove Banner using:<br>

   ```
   PCPokktAds::destroyBanner()
   ```

**Ad Listeners**

Ad listeners are optional, but we suggest to implement them as it will help you to keep track of the status of your ad request.

**Video**

```
PCPokktAds::setAdEventListener(AD_CACHING_COMPLETED_EVENT,PC_ADS_EVENT_SELECTOR(VideoAdsView::handleAdCachingCompleted), this);
PCPokktAds::setAdEventListener(AD_CACHING_FAILED_EVENT,PC_ADS_EVENT_SELECTOR(VideoAdsView::handleAdCachingFailed), this);
PCPokktAds::setAdEventListener(AD_DISPLAYED_EVENT,PC_ADS_EVENT_SELECTOR(VideoAdsView::handleAdDisplayed), this);
PCPokktAds::setAdEventListener(AD_SKIPPED_EVENT,PC_ADS_EVENT_SELECTOR(VideoAdsView::handleAdSkipped), this);
PCPokktAds::setAdEventListener(AD_COMPLETED_EVENT,PC_ADS_EVENT_SELECTOR(VideoAdsView::handleAdCompleted), this);
PCPokktAds::setAdEventListener(AD_CLOSED_EVENT,PC_ADS_EVENT_SELECTOR(VideoAdsView::handleAdClosed), this);
PCPokktAds::setAdEventListener(EVENT_INTERSTITIAL_CLICKED,PC_ADS_EVENT_SELECTOR(InterstitialAdsView::handleAdClicked), this);
PCPokktAds::setAdEventListener(AD_GRATIFIED_EVENT,PC_ADS_EVENT_SELECTOR(VideoAdsView::handleAdGratified), this);
```

**Interstitial**

```
PCPokktAds::setAdEventListener(AD_CACHING_COMPLETED_EVENT,PC_ADS_EVENT_SELECTOR(InterstitialAdsView::handleAdCachingCompleted), this);
PCPokktAds::setAdEventListener(AD_CACHING_FAILED_EVENT,PC_ADS_EVENT_SELECTOR(InterstitialAdsView::handleAdCachingFailed), this);
PCPokktAds::setAdEventListener(AD_DISPLAYED_EVENT,PC_ADS_EVENT_SELECTOR(InterstitialAdsView::handleAdDisplayed), this);
PCPokktAds::setAdEventListener(AD_SKIPPED_EVENT,PC_ADS_EVENT_SELECTOR(InterstitialAdsView::handleAdSkipped), this);
PCPokktAds::setAdEventListener(AD_COMPLETED_EVENT,PC_ADS_EVENT_SELECTOR(InterstitialAdsView::handleAdCompleted), this);
PCPokktAds::setAdEventListener(AD_CLOSED_EVENT,PC_ADS_EVENT_SELECTOR(InterstitialAdsView::handleAdClosed), this);
PCPokktAds::setAdEventListener(EVENT_INTERSTITIAL_CLICKED,PC_ADS_EVENT_SELECTOR(InterstitialAdsView::handleAdClicked), this);
PCPokktAds::setAdEventListener(AD_GRATIFIED_EVENT,PC_ADS_EVENT_SELECTOR(InterstitialAdsView::handleAdGratified), this);
```

```
PCPokktAds::setAdEventListener(BANNER_LOADED_OP,PC_ADS_EVENT_SELECTOR(BannerAdsView::handleBannerLoadSuccessfuly), this);
PCPokktAds::setAdEventListener(BANNER_LOAD_FAILED_OP,PC_ADS_EVENT_SELECTOR(BannerAdsView::handleBannerLoadFailed), this);
PCPokktAds::setAdEventListener(EVENT_BANNER_CLICKED_OP,PC_ADS_EVENT_SELECTOR(BannerAdsView::handleBannerClicked), this);
```

**Pokkt ad player configuration**

Pokkt Ad player works the way App is configured at Pokkt dashboard, but we provide a way to override those settings using PokktAdPlayerViewConfig.

Application should prefer configuration provided through code by developer or what’s configured for the app in dashboard, can be controlled any time through the dashboard itself. If you want to make changes to this configuration after your app distribution, you can contact Pokkt Teamto do the same for your app through admin console.

```
PokktAdPlayerViewConfig adPlayerViewConfig = new PokktAdPlayerViewConfig ();
// set properties values to adPlayerViewConfig
PCPokktAds::setAdPlayerViewConfig(adPlayerViewConfig);
```

Various setters for the properties that can be managed through this are:

1. Back button\
   Defines if user is allowed to close the Advertisement by clicking on back button or not.\
   Setter Name: setBackButtonDisabled(boolean backButtonDisabled)\
   Values:\
   True = Back button is disabled and user cannot close the Ad.\
   False = Back button is not disabled and user can close the Ad.
2. Default skip time\
   Defines the time after which user can skip the Ad.\
   Setter name:setDefaultSkipTime(int defaultSkipTime)\
   Values:\
   Any Integer value.\
   Default value is 10 seconds.
3. Should allow skip\
   Defines if user is allowed to skip the Ad or not.\
   Setter name:setShouldAllowSkip(boolean shouldAllowSkip)\
   Values:\
   True = User can skip Ad.\
   False = User can’t skip Ad.
4. Should allow mute\
   Defines if user is allowed to mute the Video Ad or not.\
   Setter name:setShouldAllowMute(boolean shouldAllowMute)\
   Values:\
   True = User can mute video Ad.\
   False = User can’t mute video Ad.
5. Should confirm skip\
   Defines if confirmation dialog is to be shown before skipping the Ad.\
   Setter name:ShouldConfirmSkip\
   Values:\
   True = Confirmation dialog will be shown before skipping the video.\
   False = Confirmation dialog will not be shown before skipping the video.
6. Skip confirmation message\
   Defines what confirmation message to be shown in skip dialog.\
   Setter name:setShouldSkipConfirm(boolean shouldSkipConfirm)\
   Values:\
   Any String message.\
   Default value is “Skipping this video will earn you NO rewards. Are you sure?”.
7. Affirmative label for skip dialog\
   Defines what should be the label for affirmative button in skip dialog.\
   Setter name:setSkipConfirmYesLabel(String skipConfirmYesLabel)\
   Values:\
   Any String message.\
   Default value is “Yes”.
8. Negative label for skip dialog\
   Defines what should be the label for affirmative button in skip dialog.\
   Setter name:setSkipConfirmNoLabel(String skipConfirmNoLabel)\
   Values:\
   Any String message.\
   Default value is “No”.
9. Skip timer message\
   Defines message to be shown before enabling skip button. Don’t forget to add placeholder “ ## ” in your custom message.\
   This placeholder is replaced by property “Default skip time” assigned above.\
   Setter name:setSkipTimerMessage(String skipTimerMessage)\
   Values:\
   Any String message.\
   Default value is “You can skip video in ## seconds”
10. Incentive message\
    Defines message to be shown during video progress, that after what time user will be incentivised.\
    Setter name:setIncentiveMessage(String incentiveMessage)\
    Values:\
    Any String message\
    Default value is “more seconds only for your reward !”
11. Should collect feedback\
    Defines message to be shown during video progress, that after what time user will be incentivised.\
    Property name:setShouldCollectFeedback\
    Values:\
    True = If you want to collect feedback from the user for the Ad.\
    False = If you don’t want to collect feedback from the user for the Ad.
12. isAudioEnabled\
    Defines if user is allowed to mute the Video Ad or not.\
    Setter name:setIsAudioEnabled(boolean isAudioEnabled)\
    Values:\
    True = Video Ad will be mute.\
    False = Video Ad will not be mute.

**User Details**

For better targeting of ads you can also provide user details to our SDK using.

```
PCPokktUserDetails* pokktUserDetails = new PokktUserDetails();
pokktUserDetails -> name =" ";
pokktUserDetails -> age = " ";
pokktUserDetails -> sex = " ";
pokktUserDetails -> mobileNumber = " ";
pokktUserDetails -> emailAddress = " ";
pokktUserDetails -> location = " ";
pokktUserDetails -> birthday = " ";
pokktUserDetails -> maritalStatus = " ";
pokktUserDetails -> facebookId = " ";
pokktUserDetails -> twitterHandle = " ";
pokktUserDetails -> education = " ";
pokktUserDetails -> nationality = " ";
pokktUserDetails -> employment = " ";
pokktUserDetails -> maturityRating = " ";
PokktAds::setUserDetails(pokktUserDetails);
```

**Pokkt Server Callback Params**

Developer can set some values in POKKT SDK that they need to be sent to their server via POKKT Server callbacks. These Extra parameters will be in key-value pair.The key must be alphanumeric value. See the below example:

```
String params = “{\"adnetwork\":\"pokkt\"}”
PCPokktAds::setCallBackExtraParam("<String>");
String format should be same as like:
“{\"Key 1\":\"value 1\",\"Key 2\":\"value 2\",\"Key 3\":\"value 3\",\"Key 4\":\"value 4\"}”
```

**Debugging**

Other than enabling debugging for Pokkt SDK, it can also be used to:

1. Export log

   Export your log to your desired location, we generally have it in root directory of SD card, if permission for external storage is provided and in cache folder otherwise.

   ```
   PCPokktAds::exportLog();
   ```

**Analytics**

We support various analytics in Pokkt SDK.

Below is mentioned how to enable various analytics with Pokkt SDK.

**Google Analytics**

Google analytics Id can be obtained from Google dashboard.

```
PCPokktAnalyticsDetails* analyticsDetail = new AnalyticsDetails();
analyticsDetail->eventType = “GOOGLE_ANALYTICS”;
analyticsDetail->googleAnalyticsID( "<Google Analytics Id>");
PCPokktAds::setAnalyticDetail(analyticsDetail);
```

**Flurry Analytics**

Flurry application key can be obtained from Flurry dashboard.

```
PCPokktAnalyticsDetails* analyticsDetail = new AnalyticsDetails();
analyticsDetail->eventType = ”FLURRY”;
analyticsDetail->flurryApplicationKey("<Flurry Application Key>");
PCPokktAds::setAnalyticDetail(analyticsDetail);
```

**MixPanel Analytics**

MixPanel project token can be obtained from MixPanel dashboard.

```
PCPokktAnalyticsDetails* analyticsDetail = new AnalyticsDetails();
aanalyticsDetail->eventType = “MIXPANEL”;
analyticsDetail->mixPanelProjectToken( "<MixPanel Project Token>");
PCPokktAds::setAnalyticDetail(analyticsDetail);
```

**Fabric Analytics**

Analytics Id is not required in case of Fabric.

```
PCPokktAnalyticsDetails* analyticsDetail = new AnalyticsDetails();
analyticsDetail->eventType = “FABRIC”;
PCPokktAds::setAnalyticDetail(analyticsDetail);
```

**IAP(In App Purchase)**

Call trackIAP to send any In App purchase information to Pokkt.

```
PCIAPDetails* pcIAPDetails = new PCIAPDetails();
pcIAPDetails -> productId("<productId>");
pcIAPDetails -> purchaseData("<purchaseData>");
pcIAPDetails -> purchaseSignature("<purchaseSignature>");
pcIAPDetails -> purchaseStore(IAPStoreType.GOOGLE);
pcIAPDetails -> price(<100.00>);
PCPokktAds::setTrackIAP(pcIAPDetails );
```

***

#### Project Configuration

**Android**

In the package downloaded above you will find:

1. Docs: Contains documentations for step wise step integration for SDK.
2. android\_plugin
   * AndroidManifest.xml: mentions
   * libs
     * android-support-v4.jar
     * google-play-services.jar
     * PAPCocos2dx.jar
     * PokktSDK\_v7.6.0.jar
     * pokktsdk360ext.jar
3. ios\_plugin
   * PokktSDK.framework.
4. pokkt\_demo\_app: Source code for PokktAds Demo (Sample app) which showcase implementation of Pokkt SDK through code for better understanding.
5. pokktsdk: Extension for pokkt SDK.

minSdkVersionsupported is 11 .

**Dependencies**

* Extract the *PokktSDK\_Native\_Extension.zip*file and put the content inside your C++ project, preferably directly inside the *Classes*folder.
* Add *moat.jar, comscore.jar, PokktSDK\_v7.6.0.jar, android-support-v4.jar*and *PAPCocos2dx.jar*to your project.
* We expect Google play servicesintegrated in project, although it;s optional but we recommend you to integrate it, as it’s required to fetch AdvertisingIDfor device,which is useful to deliver targeted advertising to Android users.

**Manifest**

**Permissions Declarations**

Add the following permissions to your project manifest

1. Mandatory permissions.<br>

   ```
   <uses-permission android:name="android.permission.INTERNET" />
   <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
   ```

   * android.permission.INTERNET = Required for SDK communication with server.
   * android.permission.ACCESS\_NETWORK\_STATE = Required to detect changes in network, like if WIFI is available or not.
2. Optional permissions.<br>

   ```
   <uses-permission android:name="android.permission.WAKE_LOCK" />
   <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
   <uses-permission android:name="android.permission.WRITE_CALENDAR" />
   <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
   <uses-permission android:name="android.permission.VIBRATE" />
   ```

   * android.permission.WAKE\_LOCK = Required to prevent device from going into the sleep mode during video play.
   * android.permission.WRITE\_EXTERNAL\_STORAGE = Required to store media files related to ads in external SD card, if not provided we will use app cache folder to store media files, which will result in unnecessary increase in application’s size. It is recommended to ask for this permission as low end devices generally have less internally memory available.
   * android.permission.WRITE\_CALENDAR = Some Ads create events in calendar.
   * android.permission.ACCESS\_FINE\_LOCATION = Some Ads show content based on user’s location
   * android.permission.VIBRATE = Some Ads provide haptic feedback, so as to maintain their behavior we need this permission

**Activity Declaration**

Add the following activity in your AndroidManifest for Pokkt SDK integration.

```
<activity
   android:name="com.pokkt.sdk.userinterface.presenter.activity.PokktAdActivity"
   android:configChanges="keyboard|keyboardHidden|navigation|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"
   android:hardwareAccelerated="true"
   android:label=”Pokkt”
   android:screenOrientation="landscape"
   android:windowSoftInputMode="stateAlwaysHidden|adjustUnspecified" />
```

You can change the android:screenOrientation="landscape"to of your choice, the way you want to display the ads.

**Service Declaration**

Add the following service in your AndroidManifest for receiving InApp notifications. How to set up InApp notifications.

```
<service
   android:name="com.pokkt.sdk.notification.NotificationService"
   android:exported="false"
   android:label="PokktNotificationService" />
```

**iOS**

In the package downloaded above you will find:

**Dependencies**

* Extract the *pokktsdk.zip* file and put the content inside your C++ project, preferably directly inside the Classes folder.
* Extract the *libpokkt.zip* and add its content to your project. And add the *PokktSDK.framework*. Just to make sure, go to your project’s settings *"Build Phases -> Link Binary with Libraries"*. If *PokktSDK.framework* is not present then make an entry there and you are good to go.
* Ensure that *"-ObjC"* flag is set inside project setting’s “Build Settings -> Other Linker Flags”.

In order to use PokktSDK’s background fetch functionality, enable "Capabilities -> Background Modes -> Background Fetch" inside project settings. Then write the following code-snippet inside

*"didFinishLaunchingWithOptions"* method of app-delegate class:

```
[application setMinimumBackgroundFetchInterval:
UIApplicationBackgroundFetchIntervalMinimum];
```

Further, implement/update the background-fetch delegate methods in app-delegate class. Invoke

*"callBackgroundTaskCompletionHandler"* method from *"performFetchWithCompletionHandler"*. Observe the following code-snippet for reference:

```
-(void)application:(UIApplication *) application
performFetchWithCompletionHandler:
(void(^)(UIBackgroundFetchResult))completionHandler
   {
     [PokktAds callBackgroundTaskCompletedHandler:
        ^(UIBackgroundFetchResult result)
        {
        completionHandler(result);
     }];
   }
```

In order to enable local notifications for InApp Notifications , mention the following inside

*"didFinishLaunchingWithOptions"* method of the app-delegate class:

```
[application setMinimumBackgroundFetchInterval:
          UIApplicationBackgroundFetchIntervalMinimum];
   UIUserNotificationSettings *settings =
   [UIUserNotificationSettings settingsForTypes:
       (UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)
       categories:nil];
[application registerUserNotificationSettings:settings];
```

Invoke *"inAppNotificationEvent"* if the user taps on local notification, do this in the *"didReceiveLocalNotification"* inside app-delegate class. Check the following reference:

```
-(void)application:(UIApplication*) application
   didReceiveLocalNotification:(UILocalNotification*) notification
   {
      [PokktAds inAppNotificationEvent:notification];
   }
```

**Framework**

Add Following frameworks to your project:

```
CoreData.framework
ARKit.framework
Foundation.framework
MediaPlayer.framework
SystemConfiguration.framework
UIKit.framework
CoreTelephony.framework
EventKit.framework
AdSupport.framework
CoreGraphics.framework
CoreMotion.framework
MessageUI.framework
EventKitUI.framework
CoreLocation.framework
AVFoundation.framework
libc++.tbd
```

**Info.plist**

Add the below exceptions to your application info.plist.

```
<key>NSAppTransportSecurity</key>
   <dict>
      <key>NSExceptionDomains</key>
      <dict>
        <key>pokkt.com</key>
        <dict>
           <key>NSIncludesSubdomains</key>
           <true/>
           <key>NSExceptionAllowsInsecureHTTPLoads</key>
           <true/>
           <key>NSExceptionRequiresForwardSecrecy</key>
           <false/>
           <key>NSExceptionMinimumTLSVersion</key>
           <string>TLSv1.2</string>
           <key>NSThirdPartyExceptionAllowsInsecureHTTPLoads</key>
           <false/>
           <key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
           <true/>
           <key>NSThirdPartyExceptionMinimumTLSVersion</key>
           <string>TLSv1.2</string>
           <key>NSRequiresCertificateTransparency</key>
           <false/>
        </dict>
        <key>cloudfront.net</key>
        <dict>
           <key>NSIncludesSubdomains</key>
           <true/>
           <key>NSExceptionAllowsInsecureHTTPLoads</key>
           <true/>
           <key>NSExceptionRequiresForwardSecrecy</key>
           <false/>
           <key>NSExceptionMinimumTLSVersion</key>
           <string>TLSv1.2</string>
           <key>NSThirdPartyExceptionAllowsInsecureHTTPLoads</key>
           <false/>
           <key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
           <true/>
           <key>NSThirdPartyExceptionMinimumTLSVersion</key>
           <string>TLSv1.2</string>
           <key>NSRequiresCertificateTransparency</key>
           <false/>
        </dict>
      </dict>
   </dict>
```


# Adobe AIR

### Contents

* [1 POKKT SDK v5.0 Integration Guide for AIR (Android)](broken://pages/esy8rMcmvxl4CTNELfGc)
  * [1.1 1. Overview](broken://pages/esy8rMcmvxl4CTNELfGc)
  * [1.2 2. Configuration Steps](broken://pages/esy8rMcmvxl4CTNELfGc)
    * [1.2.1 Android Manifest xml update:](broken://pages/esy8rMcmvxl4CTNELfGc)
  * [1.3 3. Implementation Steps](broken://pages/esy8rMcmvxl4CTNELfGc)
    * [1.3.1 Common](broken://pages/esy8rMcmvxl4CTNELfGc)
    * [1.3.2 Session](broken://pages/esy8rMcmvxl4CTNELfGc)
    * [1.3.3 AdConfig (used for reward / non-reward ad)](broken://pages/esy8rMcmvxl4CTNELfGc)
    * [1.3.4 Rewarded Ad/Non-Rewarded Ad](broken://pages/esy8rMcmvxl4CTNELfGc)
    * [1.3.5 Banner Ad](broken://pages/esy8rMcmvxl4CTNELfGc)
    * [1.3.6 Mediation Info](broken://pages/esy8rMcmvxl4CTNELfGc)
    * [1.3.7 Optional Parameters](broken://pages/esy8rMcmvxl4CTNELfGc)
  * [1.4 In-App Notifications](broken://pages/esy8rMcmvxl4CTNELfGc)
  * [1.5 4. Important Points](broken://pages/esy8rMcmvxl4CTNELfGc)

### POKKT SDK v5.0 Integration Guide for AIR (Android)

Last Update: October 20th, 2016

Download Latest Version Here with PDF Documentation v5.0.

***

#### 1. Overview

Thank you for choosing Pokkt SDK Plugin v5.0for AIR. Pokkt SDK supports Reward Ad, Non-Reward Ad, Banner Ad and Offerwal campaigns feature. This document contains all the information which is needed to setup the SDK with project. Please follow these steps as per your integration requirement (Reward/Non- Reward/Banner/Offerwal). The current plugin supports mediation for various third party ad-networks. These are:

* AdColony
* AppLovon
* Chartboost
* Fyber
* InMobi
* SuperSonic
* UnityAds
* TapJoy
* Vungle
* AdMob
* Facebook

A separate set of documents is provided for each of these, explaining the implementation process.

There is a sample app provided with the SDK. We will be referencing this app during the course of explanation in this document. It is suggested that you should check that app to understand the following process in detail.

***

#### 2. Configuration Steps

All we need is the file provided PluginExtension.zip file which contains three files\
PokktExtensionAndroid.ane, PokktGooglePlayService\_ANE.ane and PokktMediation.ane.

Add .ane file in your project properties and also please read [here](http://www.adobe.com/devnet/air/articles/ane-android-devices.html#articlecontentAdobe_numberedheader_2)to understand how AIR ane works.

**Android Manifest xml update:**

1. Add following permissions in your App xml under android manifest, If not already there.<br>

   ```
   <!-- These permissions are mandatory to run Pokkt SDK -->
   <uses-permission android:name="android.permission.INTERNET" />
   <uses-permission android:name="android.permission.READ_PHONE_STATE" />
   <!-- These permissions are strongly recommended and will result in higher performance -->
   <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
   <uses-permission android:name="android.permission.WAKE_LOCK" />
   <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
   <!-- This permission is optional but will improve SDK feature-->
   <uses-permission android:name="android.permission.WRITE_CALENDAR" />
   ```
2. Add the following activity in your App xml under android manifest for OfferWall Integration<br>

   ```
   <activity
      android:name=“com.app.pokktsdk.ShowOfferwallActivity"
      android:configChanges=“keyboard|keyboardHidden|navigation|orientation|screenLayout|uiMode|screenSize"
      android:label=“@string/app_name"
      android:windowSoftInputMode="adjustPan" >
   </activity>
   ```
3. Add the following activity in your App xml under android manifest for Video Integration<br>

   ```
   <activity
      android:name=“com.app.pokktsdk.PlayVideoCampaignActivity”
      android:configChanges=“keyboard|keyboardHidden|navigation|orientation|screenLayout|uiMode|screenSize”
      android:label=“@string/app_name”
      android:screenOrientation=“landscape”
      android:windowSoftInputMode="stateAlwaysHidden|adjustUnspecified" >
   </activity>
   ```
4. Add the following VPAID ads activity in App xml under android manifest.<br>

   ```
   <activity
      android:name=“com.app.pokktsdk.VPAIDActivity”
      android:configChanges=“keyboard|keyboardHidden|navigation|orientation|screenLayout|uiMode|screenSize|smallestScreenSize”
      android:label=“@string/app_name”
      android:windowSoftInputMode="stateAlwaysHidden|adjustUnspecified" />
   ```
5. Add the following interstitial ads activity in App xml under android manifest for Pokkt Interstitial Integration.<br>

   ```
   <activity
      android:name=“com.app.pokktsdk. PokktInterstitialActivity”
      android:configChanges=“keyboard|keyboardHidden|navigation|orientation|screenLayout|uiMode|screenSize|smallestScreenSize”
      android:label=“@string/app_name”
      android:windowSoftInputMode="stateAlwaysHidden|adjustUnspecified" />
   ```
6. Add Following Broadcast receiver for OfferWall Integration in App xml under android manifest<br>

   ```
   <receiver android:name="com.app.pokktsdk.AppInstallBroadcastReceiver">
      <intent-filter android:priority="1000">
          <action android:name="android.intent.action.PACKAGE_INSTALL" />
          <action android:name="android.intent.action.PACKAGE_ADDED" />
          <data android:scheme="package" />
      </intent-filter>
   </receiver>
   ```
7. Add Following meta tag for google play services (Goole play services is required and should be part of your project, if not, please add the GooglePlayService component in project).<br>

   ```
   <meta-data
   android:name="com.google.android.gms.version"
   android:value="@integer/google_play_services_version" />
   ```
8. Add a meta data tag for offerwall campaign. you will have to implement the IOfferwallDelegateinterface in your project to listen for all offerwall related events. (refer to pokkt sample for example).<br>

   ```
   <meta-data android:name=“offerwallDelegate"
   android:value=“" />
   ```
9. Add following Service and receiver in manifest for google analytics (Optional).<br>

   ```
   <receiver android:name=“com.google.android.gms.analytics.AnalyticsReceiver" android:enabled=“true">
      <intent-filter>
         <action android:name="com.google.android.gms.analytics.ANALYTICS_DISPATCH" />
      </intent-filter>
   </receiver>

   <service android:name=“com.google.android.gms.analytics.AnalyticsService"
      android:enabled=“true"
      android:exported=“false"/>
   ```
10. Add following Service and receiver in manifest for google analytics (Optional).<br>

    ```
    <service
        android:name=“com.app.pokktsdk.notification.NotificationService"
        android:label=“PokktNotificationService”
        android:exported="false"/>
    ```

Note:Please do not copy the code points from this PDF file as it may introduce unwanted characters and space in your code. Instead please refer to sample app source code provided with the sample app.

***

#### 3. Implementation Steps

**Common**

1. For all invocation of Pokkt SDK developer will make use of methods available in PokktManagerclass. This class only have static methods.
2. In PokktConfigyou can set ApplicationId, SecurityKey, IntegrationType. which are must for all type of integrations. Please check the sample app.
3. Before calling any other methods from the PokktManager, please make sure that you have called the InitPokktwith passing PokktConfigobject.
4. IIf you are doing server to server integration with POKKT you can also set ThirdPartyUserIdin PokktConfig.
5. Apart from above mentioned parameters you can assign additional ones based on your integration type (please refer to OfferWall and Reward sections below).
6. While in development, please call PokktManager.setDebug(true);to see pokkt debug logs and toast messages. please make sure to change this to PokktManager.setDebug(false); for production build.
7. Android MinSDKVersion should be >= 14.
8. To use google analytics, please set AnalyticsType and Analytics ID in PokktConfig.<br>

   ```
   pokktConfig.selectedAnalyticsType = AnalyticsType.GOOGLE_ANALYTICS;
   pokktConfig.googleAnalyticsID = “Id”;
   ```
9. To use flurry analytics please set AnalyticsType and Flurry Application Key in PokktConfig.<br>

   ```
   pokktConfig.selectedAnalyticsType = AnalyticsType.FLURRY;
   pokktConfig.flurryApplicationKey = “key”;
   ```
10. To use mix panel analytics please set AnalyticsType and Mix PanelProject Token in PokktConfig<br>

    ```
    pokktConfig.selectedAnalyticsType = AnalyticsType.FLURRY;
    pokktConfig.mixPanelProjectToken = “token”;
    ```
11. To use mix panel analytics please set AnalyticsType and Fabric Token in PokktConfig<br>

    ```
    pokktConfig.selectedAnalyticsType = AnalyticsType.FABRIC
    ```
12. Please call trackIAP(InAppPurchaseDetail) to send any in-app purchase information to Pokkt. Like below you can do this.<br>

    ```
    // create object of InAppPurchaseDetails and set properties for purchaseDetail s and pass object
    PokktManager.trackIAP (InAppPurchaseDetails);
    ```

**Session**

1. We have option to start session for tracking: startSession and endSession methods in PokktManager.
2. You should call startSessionat the start of his application if you want to use this but this is the optional and call it after setting application id and security key.
3. You should call endSessionat the end of his application.

OfferWall

1. In PokktConfigfor OfferWall you can set two additional parameters which are OfferWallAssetValueand closeOnSuccessFlag. OfferWallAssetValue is only required if you only want to show campaign of certain value on offerwall. closeOnSuccessFlagis required if you wish to close the OfferWall after user has completed one offer. It’s default value is false.
2. Before calling another method for offerWall in PokktManager, please make sure that you have already called initPokkt first.
3. You need to add event listener as below or also please check the OfferwallScreen class in sample app.<br>

   ```
   PokktManager.dispatcher.addEventListener(PokktEvent.POKKT_INITIALISED_EVENT, onPokktInitialised);
   PokktManager.dispatcher.addEventListener(PokktEvent.COIN_RESPONSE_EVENTS, onCoinResponseSuccess);
   PokktManager.dispatcher.addEventListener(PokktEvent.COIN_RESPONSE_WITH_TRANS_ID_EVENTS, onCoinResponseWithTransID);
   PokktManager.dispatcher.addEventListener(PokktEvent.COIN_RESPONSE_FAILED_EVENTS, onCoinResponseFailed);
   PokktManager.dispatcher.addEventListener(PokktEvent.OFFERWALL_CAMPAIGN_AVAILABLITY_EVENT, onOfferwallAvailability);
   PokktManager.dispatcher.addEventListener(PokktEvent.OFFERWALL_CLOSE_EVENT, onOfferwallClosed);
   ```
4. To show OfferWall you can call PokktManager.getCoins(pokktConfig).
5. Please register native application to handle for resume and call\
   PokktManager.getPendingCoins(pokktConfig); this method so that you get a callback to award points to the user after user has come back to your game after finishing with OfferWall.
6. You can call PokktManager.checkOfferWallCampaign(pokktConfig); to check whether the campaigns are available before showing OfferWall button to user. You will get a callback for this call.

**AdConfig (used for reward / non-reward ad)**

1. In AdConfigyou should set screenNameand isRewarded. This screen name will be created on pokkt dashboard.

   Screen Name:For screen name, you will have to create in Pokkt dashboard. Please check below screen. This will help you to understand how to create new screen name in Pokkt dashboard.

2. In AdConfig, developer can also set shouldAllowSkip, defaultSkipTime, skipConfirmMessage, backButtonDisabled, shouldAllowMute, shouldSkipConfirm, skipConfirmYesLabel, skipConfirmNoLabel, skipTimerMessageand incentiveMessage. These values can be used to configure the behaviour of ad.

3. If you want to enable/disable the skip button on video screen please set shouldAllowSkipas true/false.The default value for shouldAllowSkip is true.

4. If you have enabled skipped button by setting shouldAllowSkipas true then you can control after how many seconds the skip button will be visible in video by setting defaultSkipTimeto appropriate value.Since most videos will be 30 sec or less please set defaultSkipTimeas 10 or less.You can also give your own skip message by setting skipConfirmMessage on AdConfig

5. The screenNamehas default value as default and can be used by you to give different screen name for different places in your app where you are showing ads. You will control ad targeting based on these screen names which should match exactly with screen names defined in dashboard. ScreenName can not contain white spaces and only special characters allowed are hyphen and underscore.

6. You can choose to show ad with or without incentive to user by setting isRewardedas true or false. Ad gratification will only happen for incentivised playback.

7. You can disable the back button while video is playing by setting backButtonDisabledon AdConfig.

8. You can configure the ad skip dialog yes/no labels by setting skipConfirmYesLabel and skipConfirmNoLabel.

9. You can configure the ad incentive message by setting incentiveMessage.

10. You can configure the ad skip timer message by setting skipTimerMessage. The message must contain a ## placeholder to show skip time value, which will keep changing as per the time.

**Rewarded Ad/Non-Rewarded Ad**

1. You need to set true/false for rewarded or non-rewarded ad like below:<br>

   ```
   adConfig.isRewarded = true/false;
   ```
2. You will have to call cache ad to start caching ads on device.<br>

   ```
   PokktManager.cacheAd(adConfig)
   ```
3. You will need to register event for getting callback for Ad related like below and also please check given sample app PlayVideoScreen class.<br>

   ```
   PokktManager.dispatcher.addEventListener(PokktEvent.POKKT_INITIALISED_EVENT, onPokktInitialised);
   PokktManager.dispatcher.addEventListener(PokktEvent.AD_AVAILABILITY_STATUS_EVENT, onAdAvailability);
   PokktManager.dispatcher.addEventListener(PokktEvent.AD_CACHING_COMPLETED_EVENTS, onAdCachingCompleted);
   PokktManager.dispatcher.addEventListener(PokktEvent.AD_CACHING_FAILED_EVENTS, onAdCachingFailed);
   PokktManager.dispatcher.addEventListener(PokktEvent.AD_CLOSED_EVENTS, onAdClosed);
   PokktManager.dispatcher.addEventListener(PokktEvent.AD_COMPLETED_EVENTS, onAdCompleted);
   PokktManager.dispatcher.addEventListener(PokktEvent.AD_SKIPPED_EVENTS, onAdSkipped);
   PokktManager.dispatcher.addEventListener(PokktEvent.AD_DISPLAYED_EVENTS, onAdDisplayed);
   PokktManager.dispatcher.addEventListener(PokktEvent.AD_GRATIFIED_EVENTS, onAdGratified);
   ```
4. You can call checkAdAvailability to check if the campaign are available for a particular adConfig before you try to show ad.<br>

   ```
   PokktManager.checkAdAvailability(adConfig)
   ```
5. You can call showAd method to show ad.<br>

   ```
   PokktManager.showAd(adConfig);
   ```
6. Please reward user only when AdGratified event gets triggered.

Pokkt SDK allows to show banner ad on your screen. You can set any custom size or any position for banner. There are few fixed position already given in BannerPosition class. But you can customise that also.

1. Load Banner:Use loadBanner to show banner ad like below:<br>

   ```
   PokktManager.loadBanner(ScreenName, BannerPosition.TOP_CENTER);
   ```
2. Remove Banner:Use removeBanner to remove banner ad from screen like below:<br>

   ```
   PokktManager.removeBanner(ScreenName);
   ```
3. Auto Refresh Banner:Use setBannerAutoRefresh method to disable or enable auto refresh. Default it is true and it will refresh automatically based on given time on Pokkt dashboard for particular screen name.<br>

   ```
   PokktManager.setBannerAutoRefresh(false/true);
   ```
4. Banner Position::Use BannerPosition class properties for banner position.
5. Custom Banner:There are also option is given to custom banner size and set custom position by using below method:<br>

   ```
   PokktManager.loadBannerWithRect(ScreenName, width, height, x, y);
   ```
6. Banner Event:Register event to get banner related callback like below:<br>

   ```
   //Register event
   PokktManager.dispatcher.addEventListener(PokktEvent.BANNER_LOADED, onBannerLoaded);
   PokktManager.dispatcher.addEventListener(PokktEvent.BANNER_LOAD_FAILED, onBannerLoadFailed);

   // Handler method
   protected function onBannerLoaded(event:PokktEvent):void {
       //event.screenName: same scree name for what banner ad request was done
   }
   protected function onBannerLoadFailed(event:PokktEvent):void {
       //event.screenName: same scree name for what banner ad request was done
       //event.message: Reason why banner load failed
   }
   ```
7. Screen Name:For screen name, you will have to create in Pokkt dashboard. Please check below screen. This will help you to understand how to create new screen name in Pokkt dashboard.&#x20;

**Mediation Info**

1. Pokkt SDK now supports 11 ad networks which you can integrate in your application for better monetisation.
2. To integrate these networks through Pokkt, please visit the mediation menu on downloads page and download AIR mediation zipand documentation zipfiles.
3. Please follow the mediation integration documents shipped for each network.
4. You will need to create account on these networks and add the network details in your Pokkt dashboard after login into your account on pokkt website.
5. You will also need to do the mapping of Pokkt screens with the corresponding ad networks’ placement id/zone id/ad unit etc in the dashboard.

Export Logs

1. Developer should call PokktManager.exportLog()to export the Pokkt SDK logs to folder of your choice.
2. This API shows a folder chooser dialog where user can choose a particular folder.
3. User can also create a new folder where user wants to export the logs.

**Optional Parameters**

PokktConfigalso has provision for developers to provide extra user data available with them to pokkt. We currently support following data points: name, age, sex, mobileNo, emailAddress, location, birthday, maritalStatus, facebookId, twitterHandle, setEducation, setNationality, setEmploymentand setMaturityRating.

***

#### In-App Notifications

Developer can add In-App notifications in their dashboard.

\
Repeat schedule can be daily, weekly monthly. Daily Repeat can have options like frequency of repeat and time in hours of notification.

\
Weekly repeat can have options like frequency of repeat in weeks, days of repeat and time in hours of notification.

\
Monthly repeat can have options like frequency of repeat in months dates of repeat and time in hours for notification.

\
For don't repeat case, there are options like dates and time in hour for notification.

The notifications are listed and can be edited. Notifications can also be deactivated/activated

***

#### 4. Important Points

PPlease do not copy the code points from this pdf as it may introduce unwanted characters and space in your code. Instead please refer to sample app source code in pokkt bundle. Please also refer to sample app source code for better understanding of implementation.


# Marmalade

### Contents

* [1 POKKT SDK v6.0 Integration Guide for Marmalade (Android)](broken://pages/noTH8R1kC1J14WOXDNuW)
  * [1.1 Overview](broken://pages/noTH8R1kC1J14WOXDNuW)
  * [1.2 Project Configuration](broken://pages/noTH8R1kC1J14WOXDNuW)
    * [1.2.1 Dependencies](broken://pages/noTH8R1kC1J14WOXDNuW)
    * [1.2.2 Manifest](broken://pages/noTH8R1kC1J14WOXDNuW)
      * [1.2.2.1 Permissions Declarations](broken://pages/noTH8R1kC1J14WOXDNuW)
      * [1.2.2.2 Activity Declaration](broken://pages/noTH8R1kC1J14WOXDNuW)
      * [1.2.2.3 Service Declaration](broken://pages/noTH8R1kC1J14WOXDNuW)
  * [1.3 Implementation Steps](broken://pages/noTH8R1kC1J14WOXDNuW)
    * [1.3.1 SDK Configuration](broken://pages/noTH8R1kC1J14WOXDNuW)
    * [1.3.2 Ad Types](broken://pages/noTH8R1kC1J14WOXDNuW)
      * [1.3.2.1 Video](broken://pages/noTH8R1kC1J14WOXDNuW)
        * [1.3.2.1.1 Rewarded](broken://pages/noTH8R1kC1J14WOXDNuW)
        * [1.3.2.1.2 Non Rewarded](broken://pages/noTH8R1kC1J14WOXDNuW)
      * [1.3.2.2 Interstitial](broken://pages/noTH8R1kC1J14WOXDNuW)
        * [1.3.2.2.1 Rewarded](broken://pages/noTH8R1kC1J14WOXDNuW)
        * [1.3.2.2.2 Non Rewarded](broken://pages/noTH8R1kC1J14WOXDNuW)
      * [1.3.2.3 Banner](broken://pages/noTH8R1kC1J14WOXDNuW)
    * [1.3.3 Ad Actions](broken://pages/noTH8R1kC1J14WOXDNuW)
      * [1.3.3.1 Video](broken://pages/noTH8R1kC1J14WOXDNuW)
      * [1.3.3.2 Interstitial](broken://pages/noTH8R1kC1J14WOXDNuW)
      * [1.3.3.3 Banner](broken://pages/noTH8R1kC1J14WOXDNuW)
    * [1.3.4 Pokkt ad player configuration](broken://pages/noTH8R1kC1J14WOXDNuW)
    * [1.3.5 User Details](broken://pages/noTH8R1kC1J14WOXDNuW)
    * [1.3.6 Debugging](broken://pages/noTH8R1kC1J14WOXDNuW)
    * [1.3.7 Analytics](broken://pages/noTH8R1kC1J14WOXDNuW)
      * [1.3.7.1 Google Analytics](broken://pages/noTH8R1kC1J14WOXDNuW)
      * [1.3.7.2 Flurry Analytics](broken://pages/noTH8R1kC1J14WOXDNuW)
      * [1.3.7.3 MixPanel Analytics](broken://pages/noTH8R1kC1J14WOXDNuW)
      * [1.3.7.4 Fabric Analytics](broken://pages/noTH8R1kC1J14WOXDNuW)
    * [1.3.8 IAP(In App Purchase)](broken://pages/noTH8R1kC1J14WOXDNuW)
  * [1.4 Pokkt Dashboard](broken://pages/noTH8R1kC1J14WOXDNuW)
    * [1.4.1 InApp Notifications](broken://pages/noTH8R1kC1J14WOXDNuW)
      * [1.4.1.1 Create notifications](broken://pages/noTH8R1kC1J14WOXDNuW)

### POKKT SDK v6.0 Integration Guide for Marmalade (Android)

Last Update: 24th February, 2017

Download Latest Version Here with PDF Documentation v6.0.

***

#### Overview

Thank you for choosing Pokkt SDKfor Maramalade. This document contains all the information required to set up the SDK with your project. We also support mediation for various third party networks. To know the supported third party networks and their integration process go to mediation section .

Before implementing plugins it is mandatory to go through project configuration and implementation steps, as these sections contain mandatory steps for basic SDK integration and are followed by every plugin.

You can download our SDK from pokkt.com.

In the package *PokktNativeExtension.zip*downloaded above you will find:

1. Docs:

   Contains documentations for step wise step integration for SDK.
2. PokktAds Demo:

   Source code for PokktAds Demo(Sample app) which showcase implementation of Pokkt SDK through code for better understanding.
3. PokktAds Demo.apk:

   Application package of PoktkAds Demo, so that you can directly install this apk on your device and have a look how our SDK works instead of compiling the source code.
4. Pokkt Native Extension:

   It is the extension project for Pokkt SDK which will be added in main project as sub project in .mkb file

minSdkVersionsupported is 11 .

ScreenName:This one parameter is accepted by almost all API’s of Pokkt SDK. This controls the placement of ads and can be created on Pokkt Dashboard.

We will be referencing PokktAds Demoapp provided with SDK. We will be referencing this app during the course of explanation in this document. We suggest you go through the sample app for better understanding.

***

#### Project Configuration

**Dependencies**

* Add Pokkt Native Extension to your project to your *"subprojects"*.
* We expect Google play servicesintegrated in project, although it;s optional but we recommend you to integrate it, as it’s required to fetch AdvertisingIDfor device,which is useful to deliver targeted advertising to Android users.

**Manifest**

**Permissions Declarations**

Add the following permissions to your project manifest

1. Mandatory permissions.<br>

   ```
   <uses-permission android:name="android.permission.INTERNET" />
   <uses-permission android:name="android.permission.READ_PHONE_STATE" />
   ```

   * android.permission.INTERNET = Required for SDK communication with server.
   * android.permission.READ\_PHONE\_STATE = Required for creating unique identifier for you application based on the unique id of the device like IMEI.
2. Optional permissions.<br>

   ```
   <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
   <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
   <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
   <uses-permission android:name="android.permission.WAKE_LOCK" />
   <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
   <uses-permission android:name="android.permission.WRITE_CALENDAR" />
   <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
   <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
   <uses-permission android:name="android.permission.CALL_PHONE" />
   <uses-permission android:name="android.permission.SEND_SMS" />
   ```

   * android.permission.ACCESS\_NETWORK\_STATE = Required to detect changes in network, like if WIFI is available or not.
   * android.permission.ACCESS\_WIFI\_STATE = Required to detect changes in network, like if WIFI is available or not.
   * android.permission.CHANGE\_WIFI\_STATE = Required to detect changes in network, like if WIFI is available or not.
   * android.permission.WAKE\_LOCK = Required to prevent device from going into the sleep mode during video play.
   * android.permission.WRITE\_EXTERNAL\_STORAGE = Required to store media files related to ads in external SD card, if not provided we will use app cache folder to store media files, which will result in unnecessary increase in application’s size. It is recommended to ask for this permission as low end devices generally have less internally memory available.
   * android.permission.WRITE\_CALENDAR = Some Ads create events in calendar.
   * android.permission.ACCESS\_COARSE\_LOCATION" = Some Ads show content based on user’s location.
   * android.permission.ACCESS\_FINE\_LOCATION = Some Ads show content based on user’s location.
   * android.permission.CALL\_PHONE = Some Ads are interactive and they provide you a way to call directly from the content.
   * android.permission.SEND\_SMS = Some Ads are interactive and they provide you a way to send message.

**Activity Declaration**

Add the following activity in your AndroidManifest for Pokkt SDK integration.

```
<activity
   android:name="com.pokkt.sdk.userinterface.presenter.activity.PokktAdActivity"
   android:configChanges="keyboard|keyboardHidden|navigation|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"
   android:hardwareAccelerated="true"
   android:label=”Pokkt”
   android:screenOrientation="landscape"
   android:windowSoftInputMode="stateAlwaysHidden|adjustUnspecified" />
```

You can change the android:screenOrientation="landscape"to of your choice, the way you want to display the ads.

**Service Declaration**

Add the following service in your AndroidManifest for receiving InApp notifications. How to set up InApp notifications.

```
<service
   android:name="com.pokkt.sdk.notification.NotificationService"
   android:exported="false"
   android:label="PokktNotificationService" />
```

***

#### Implementation Steps

**SDK Configuration**

1. You need to set extension before calling any method like below. This should be the first call.<br>

   ```
   PCPokktAds::hookCallbackReceiver();
   ```
2. Set Application Idand Security keyin Pokkt SDK. You can get it from Pokkt dashboard from your account. We generally assign unique application Id and Security key.<br>

   ```
   PCPokktAds::setPokktConfig("<Pokkt Application ID>", "<Pokkt Security Key>");
   ```
3. If you are using server to server integration with Pokkt, you can also set Third Party UserIdin PCPokktAds.<br>

   ```
   PCPokktAds::setThirdPartyUserId("<Third party user Id>");
   ```
4. When your application is under development and if you want to see Pokkt logs and other informatory messages, you can enable it by setting shouldDebugto true. Make sure to disable debugging before release.<br>

   ```
   PCPokktAds::shouldDebug(<true>);
   ```

**Ad Types**

**Video**

* Video ad can be rewarded or non-rewarded. You can either cache the ad in advance or directly call show for it.
* We suggest you to cache the ad in advance so as to give seamless play behaviour, In other case it will stream the video which may lead to unnecessary buffering delays depending on the network connection.

**Rewarded**

1. To cache rewarded ad call:<br>

   ```
   PCPokktAds::cacheRewardedVideoAd("<ScreenName>");
   ```
2. To show rewarded ad call:<br>

   ```
   PCPokktAds::showRewardedVideoAd("<ScreenName>");
   ```

**Non Rewarded**

1. To cache non-rewarded ad call:<br>

   ```
   PCPokktAds::cacheNonRewardedVideoAd("<ScreeName>");
   ```
2. To show non-rewarded ad call:<br>

   ```
   PCPokktAds::showNonRewardedVideoAd("<ScreeName>");
   ```

You can check if ad is available or not before making c ache or show request.

```
PCPokktAds::checkRewardedVideoAdAvailability("<ScreeName>");
PCPokktAds::checkNonRewardedVideoAdAvailability("<ScreeName>");
```

**Interstitial**

**Rewarded**

1. To cache rewarded ad call:<br>

   ```
   PCPokktAds::cacheRewardedInterstitialAd("<ScreeName>");
   ```
2. To show rewarded ad call:<br>

   ```
   PCPokktAds::showNonRewardedInterstitialAd("<ScreeName>");
   ```

**Non Rewarded**

1. To cache non-rewarded ad call:<br>

   ```
   PCPokktAds::cacheNonRewardedInterstitialAd("<ScreeName>");
   ```
2. To show non-rewarded ad call:<br>

   ```
   PCPokktAds::showNonRewardedInterstitialAd("<ScreeName>");
   ```

You can check if ad is available or not before making c ache or show request.

```
PCPokktAds::checkRewardedInterstitialAdAvailability("<ScreeName>");
PCPokktAds::checkNonRewardedInterstitialAdAvailability("<ScreeName>");
```

There are two ways to load banners:

1. Load banner<br>

   ```
   PCPokktAds::loadBanner(<screenName>”, <BannerPosition>);
   ```

   There are predefined positions for banner positioning inside BannerPosition( Com. Pokkt.Plugin.Common.BannerPosition ).

   * TOP\_LEFT.
   * TOP\_CENTER.
   * TOP\_RIGHT.
   * MIDDLE\_LEFT.
   * MIDDLE\_CENTER.
   * MIDDLE\_RIGHT.
   * BOTTOM\_LEFT.
   * BOTTOM\_CENTER.
   * BOTTOM\_RIGHT.
2. Load banner with rect<br>

   ```
   PCPokktAds::initWithBannerAdSize(<ScreenName>,<Height>,<Width>,<x>,<y>,);
   ```

   Height: Custom height for banner.\
   Width: Custom width for banner.\
   x: Point x on screen to show banner.\
   y: Point y on screen to show banner.
3. You can remove Banner using:<br>

   ```
   PCPokktAds::destroyBanner()
   ```
4. You can also set banner to auto-refresh using:<br>

   ```
   PCPokktAds::setBannerAutoRefresh(<true/false>)
   ```

**Ad Actions**

Ad actions are optional, but we suggest to implement them as it will help you to keep track of the status of your ad request.

**Video**

```
PCPokktAds::setAdEventListener(AD_AVAILABILITY_EVENT,
PC_ADS_EVENT_SELECTOR(VideoAdsView::handleAdAvailability), this);
PCPokktAds::setAdEventListener(AD_CACHING_COMPLETED_EVENT,PC_ADS_EVENT_
SELECTOR(VideoAdsView::handleAdCachingCompleted), this);
PCPokktAds::setAdEventListener(AD_CACHING_FAILED_EVENT,
PC_ADS_EVENT_SELECTOR(VideoAdsView::handleAdCachingFailed), this);
PCPokktAds::setAdEventListener(AD_DISPLAYED_EVENT,
PC_ADS_EVENT_SELECTOR(VideoAdsView::handleAdDisplayed), this);
PCPokktAds::setAdEventListener(AD_SKIPPED_EVENT,
PC_ADS_EVENT_SELECTOR(VideoAdsView::handleAdSkipped), this);
PCPokktAds::setAdEventListener(AD_COMPLETED_EVENT,
PC_ADS_EVENT_SELECTOR(VideoAdsView::handleAdCompleted), this);
PCPokktAds::setAdEventListener(AD_CLOSED_EVENT,
PC_ADS_EVENT_SELECTOR(VideoAdsView::handleAdClosed), this);
PCPokktAds::setAdEventListener(AD_GRATIFIED_EVENT,
PC_ADS_EVENT_SELECTOR(VideoAdsView::handleAdGratified), this);
```

**Interstitial**

```
PCPokktAds::setAdEventListener(AD_AVAILABILITY_EVENT,
PC_ADS_EVENT_SELECTOR(InterstitialAdsView::handleAdAvailability), this);
PCPokktAds::setAdEventListener(AD_CACHING_COMPLETED_EVENT,PC_ADS_EVENT_
SELECTOR(InterstitialAdsView::handleAdCachingCompleted), this);
PCPokktAds::setAdEventListener(AD_CACHING_FAILED_EVENT,PC_ADS_EVENT_SELE
CTOR(InterstitialAdsView::handleAdCachingFailed), this);
PCPokktAds::setAdEventListener(AD_DISPLAYED_EVENT,
PC_ADS_EVENT_SELECTOR(InterstitialAdsView::handleAdDisplayed), this);
PCPokktAds::setAdEventListener(AD_SKIPPED_EVENT,
PC_ADS_EVENT_SELECTOR(InterstitialAdsView::handleAdSkipped), this);
PCPokktAds::setAdEventListener(AD_COMPLETED_EVENT,
PC_ADS_EVENT_SELECTOR(InterstitialAdsView::handleAdCompleted), this);
PCPokktAds::setAdEventListener(AD_CLOSED_EVENT,
PC_ADS_EVENT_SELECTOR(InterstitialAdsView::handleAdClosed), this);
PCPokktAds::setAdEventListener(AD_GRATIFIED_EVENT,
PC_ADS_EVENT_SELECTOR(InterstitialAdsView::handleAdGratified), this);
```

```
PCPokktAds::setAdEventListener(BANNER_LOADED_OP,
PC_ADS_EVENT_SELECTOR(BannerAdsView::handleBannerLoadSuccessfuly), this);
PCPokktAds::setAdEventListener(BANNER_LOAD_FAILED_OP,
```

**Pokkt ad player configuration**

Pokkt Ad player works the way App is configured at Pokkt dashboard, but we provide a way to override those settings using PokktAdPlayerViewConfig.

Application should prefer configuration provided through code by developer or what’s configured for the app in dashboard, can be controlled any time through the dashboard itself. If you want to make changes to this configuration after your app distribution, you can contact Pokkt Teamto do the same for your app through admin console.

```
PokktAdPlayerViewConfig adPlayerViewConfig = new PokktAdPlayerViewConfig ();
// set properties values to adPlayerViewConfig
PCPokktAds::setAdPlayerViewConfig(adPlayerViewConfig);
```

Various properties that can be managed through this are:

1. Back button\
   Defines if user is allowed to close the Advertisement by clicking on back button or not.\
   Property Name: BackButtonDisabled\
   Values:\
   True = Back button is disabled and user cannot close the Ad.\
   False = Back button is not disabled and user can close the Ad.
2. Default skip time\
   Defines the time after which user can skip the Ad.\
   Property name:DefaultSkipTime\
   Values:\
   Any Integer value.\
   Default value is 10 seconds.
3. Should allow skip\
   Defines if user is allowed to skip the Ad or not.\
   Property name:ShouldAllowSkip\
   Values:\
   True = User can skip Ad.\
   False = User can’t skip Ad.
4. Should allow mute\
   Defines if user is allowed to mute the Video Ad or not.\
   Property name:ShouldAllowMute\
   Values:\
   True = User can mute video Ad.\
   False = User can’t mute video Ad.
5. Should confirm skip\
   Defines if confirmation dialog is to be shown before skipping the Ad.\
   Property name:ShouldConfirmSkip\
   Values:\
   True = Confirmation dialog will be shown before skipping the video.\
   False = Confirmation dialog will not be shown before skipping the video.
6. Skip confirmation message\
   Defines what confirmation message to be shown in skip dialog.\
   Property name:SkipConfirmMessage\
   Values:\
   Any String message.\
   Default value is “Skipping this video will earn you NO rewards. Are you sure?”.
7. Affirmative label for skip dialog\
   Defines what should be the label for affirmative button in skip dialog.\
   Property name:SkipConfirmYesLabel\
   Values:\
   Any String message.\
   Default value is “Yes”.
8. Negative label for skip dialog\
   Defines what should be the label for affirmative button in skip dialog.\
   Property name:SkipConfirmNoLabel\
   Values:\
   Any String message.\
   Default value is “No”.
9. Skip timer message\
   Defines message to be shown before enabling skip button. Don’t forget to add placeholder “ ## ” in your custom message.\
   This placeholder is replaced by property “Default skip time” assigned above.\
   Property name:SkipTimerMessage\
   Values:\
   Any String message.\
   Default value is “You can skip video in ## seconds”
10. Incentive message\
    Defines message to be shown during video progress, that after what time user will be incentivised.\
    Property name:IncentiveMessage\
    Values:\
    Any String message\
    Default value is “more seconds only for your reward !”
11. Should collect feedback\
    Defines message to be shown during video progress, that after what time user will be incentivised.\
    Property name:setShouldCollectFeedback\
    Values:\
    True = If you want to collect feedback from the user for the Ad.\
    False = If you don’t want to collect feedback from the user for the Ad.

**User Details**

For better targeting of ads you can also provide user details to our SDK using.

```
PCPokktUserDetails* pokktUserDetails = new PokktUserDetails();
pokktUserDetails -> name =" ";
pokktUserDetails -> age = " ";
pokktUserDetails -> sex = " ";
pokktUserDetails -> mobileNumber = " ";
pokktUserDetails -> emailAddress = " ";
pokktUserDetails -> location = " ";
pokktUserDetails -> birthday = " ";
pokktUserDetails -> maritalStatus = " ";
pokktUserDetails -> facebookId = " ";
pokktUserDetails -> twitterHandle = " ";
pokktUserDetails -> education = " ";
pokktUserDetails -> nationality = " ";
pokktUserDetails -> employment = " ";
pokktUserDetails -> maturityRating = " ";
PokktAds::setUserDetails(pokktUserDetails);
```

**Debugging**

Other than enabling debugging for Pokkt SDK, it can also be used to:

1. Export log

   Export your log to your desired location, we generally have it in root directory of SD card, if permission for external storage is provided and in cache folder otherwise.

   ```
   PCPokktAds::exportLog();
   ```
2. Export log to cloud

   You can also export log to cloud.

   ```
   PCPokktAds::exportLogToCloud();
   ```

**Analytics**

We support various analytics in Pokkt SDK.

Below is mentioned how to enable various analytics with Pokkt SDK.

**Google Analytics**

Google analytics Id can be obtained from Google dashboard.

```
PCPokktAnalyticsDetails* analyticsDetail = new AnalyticsDetails();
analyticsDetail->eventType = “GOOGLE_ANALYTICS”;
analyticsDetail->googleAnalyticsID( "<Google Analytics Id>");
PCPokktAds::setAnalyticDetail(analyticsDetail);
```

**Flurry Analytics**

Flurry application key can be obtained from Flurry dashboard.

```
PCPokktAnalyticsDetails* analyticsDetail = new AnalyticsDetails();
analyticsDetail->eventType = ”FLURRY”;
analyticsDetail->flurryApplicationKey("<Flurry Application Key>");
PCPokktAds::setAnalyticDetail(analyticsDetail);
```

**MixPanel Analytics**

MixPanel project token can be obtained from MixPanel dashboard.

```
PCPokktAnalyticsDetails* analyticsDetail = new AnalyticsDetails();
aanalyticsDetail->eventType = “MIXPANEL”;
analyticsDetail->mixPanelProjectToken( "<MixPanel Project Token>");
PCPokktAds::setAnalyticDetail(analyticsDetail);
```

**Fabric Analytics**

Analytics Id is not required in case of Fabric.

```
PCPokktAnalyticsDetails* analyticsDetail = new AnalyticsDetails();
analyticsDetail->eventType = “FABRIC”;
PCPokktAds::setAnalyticDetail(analyticsDetail);
```

**IAP(In App Purchase)**

Call trackIAP to send any In App purchase information to Pokkt.

```
PCIAPDetails* pcIAPDetails = new PCIAPDetails();
pcIAPDetails -> productId("<productId>");
pcIAPDetails -> purchaseData("<purchaseData>");
pcIAPDetails -> purchaseSignature("<purchaseSignature>");
pcIAPDetails -> purchaseStore(IAPStoreType.GOOGLE);
pcIAPDetails -> price(<100.00>);
PCPokktAds :: setTrackIAP(pcIAPDetails );
```

***

#### Pokkt Dashboard

**InApp Notifications**

Open developer dashboard -> Manage App -> Notifications

**Create notifications**

1. Basic notification information required.<br>

   1. Name:

      A friendly name for notification. It will help you to distinguish between different notifications.
   2. App:

      Select your app for which you want to assign notifications.
   3. Platform:

      Select OS platform for which you want to target notifications.
   4. Countries:

      Select countries where this notifications will be shown to users. Let’s say if you have users in multiple countries, you can selectively target notifications to them.
   5. App version:

      Enter your app version for which you want to show notifications. Let’s say you have multiple version installed among users and you want to send different notifications to different users based on their versions.
   6. Last seen:

      Set minimum and maximum limit in days for which user can remain away from the app.\
      Let’s say if min = 2 and max = 4, and user hasn’t open your app for atleast 2 days, you can remind by showing notification, but if 4 days have passed app will not show any more notifications to user.
   7. Message:

      Message you want to show in notifications bar.
   8. Title:

      Title for the notification to be shown in notification bar.

2. Schedule notification

   Daily

   Weekly

   Monthly


# Shiva3d

### Contents

* [1 POKKT SDK v4.1.1 Integration Guide for ShiVa (Android)](broken://pages/1XRL1nnY0wt06O0Z1ZCV)
  * [1.1 1. Introduction](broken://pages/1XRL1nnY0wt06O0Z1ZCV)
  * [1.2 2. Configuration Steps](broken://pages/1XRL1nnY0wt06O0Z1ZCV)
    * [1.2.1 Android Manifest xml update](broken://pages/1XRL1nnY0wt06O0Z1ZCV)
  * [1.3 3. Implementation Steps](broken://pages/1XRL1nnY0wt06O0Z1ZCV)
    * [1.3.1 Common](broken://pages/1XRL1nnY0wt06O0Z1ZCV)
    * [1.3.2 Session](broken://pages/1XRL1nnY0wt06O0Z1ZCV)
    * [1.3.3 OfferWall](broken://pages/1XRL1nnY0wt06O0Z1ZCV)
    * [1.3.4 AdConfig](broken://pages/1XRL1nnY0wt06O0Z1ZCV)
    * [1.3.5 Rewarded/Non-Rewarded Ad](broken://pages/1XRL1nnY0wt06O0Z1ZCV)
    * [1.3.6 Mediation Info](broken://pages/1XRL1nnY0wt06O0Z1ZCV)
    * [1.3.7 Export Logs](broken://pages/1XRL1nnY0wt06O0Z1ZCV)
    * [1.3.8 Optional Parameters](broken://pages/1XRL1nnY0wt06O0Z1ZCV)
  * [1.4 In-App Notifications](broken://pages/1XRL1nnY0wt06O0Z1ZCV)
  * [1.5 Important Points](broken://pages/1XRL1nnY0wt06O0Z1ZCV)

### POKKT SDK v4.1.1 Integration Guide for ShiVa (Android)

Last Update: 24th May, 2016

Download Latest Version Here with PDF Documentation v4.1.1.

***

#### 1. Introduction

Thank you for choosing Pokkt SDK Plugin v4.1.1 for ShiVa. Pokkt SDK supports Offerwall as well as Reward-Ad campaigns feature. This document contains all the information that is needed by you to setup the SDK with your project. Please follow these steps as per your integration requirement (Reward/Offerwall/Both). The current plugin supports mediation for various third party ad-networks.

These are:

* AdColony
* AppLovon
* Chartboost
* Fyber
* InMobi
* SuperSonic
* TapJoy
* Vungle
* AdMob
* Facebook

A separate set of documents is provided for each of these, explaining the implementation process.

There is a sample app provided with the SDK. We will be referencing this app during the course of explanation in this document. It is suggested that you should check that app to understand the following process in detail.

***

#### 2. Configuration Steps

The Pokkt SDK v4.1.0 for ShiVa comes in two file. One is ".ste" files and 2nd is ".zip" file. Here is the details

1. com.pokkt.extension\_4.1.ste: This is the plugin which you need to import in project from ShiVa editor (Data Explorer->Import->Archive).
2. PokktSample.ste: This is the Sample Project and it contains few AIModel and HUD. This sample project will show the video campaign and offerwall campaign. One of the AI\_Model (which is AI\_POKKT) from this sample is very important to mplement PokktSDK.
3. res.zip:This is the resource file which is needed. This contains drawable, layoutand valuesfolder. You need to copy in your android project which gets exported from ShiVa tool.

**Android Manifest xml update**

1. Add following permissions in your App xml under android manifest, If not already there.

   ```
   <!-- These permissions are mandatory to run Pokkt SDK -->
   <uses-permission android:name="android.permission.INTERNET"/>
   <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
   <!-- These permissions are strongly recommended and will result in higher performance -->
   <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
   <uses-permission android:name="android.permission.WAKE_LOCK" />
   <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
   <!-- This permission is optional but will improve SDK feature-->
   <uses-permission android:name="android.permission.WRITE_CALENDAR" />
   ```
2. Add the following activity in your App xml under android manifest for OfferWall Integration

   ```
   <activity
      android:name=“com.app.pokktsdk.ShowOfferwallActivity"
      android:configChanges = “keyboard|keyboardHidden|navigation|orientation|screenLayout|uiMode|screenSize"
      android:label=“@string/app_name"
      android:windowSoftInputMode="adjustPan">
   </activity>
   ```
3. Add the following activity in your App xml under android manifest for Video Integration

   ```
   <activity
      android:name="com.app.pokktsdk.PlayVideoCampaignActivity"
      android:configChanges="keyboard|keyboardHidden|navigation|orientation|screenLayout|uiMode|screenSize"
      android:label="@string/app_name"
      android:screenOrientation="landscape"
      android:windowSoftInputMode="stateAlwaysHidden|adjustUnspecified" >
   </activity>
   ```
4. Add Following Broadcast receiver for OfferWall Integration in App xml under android manifest

   ```
   <receiver android:name="com.app.pokktsdk.AppInstallBroadcastReceiver" >
      <intent-filter android:priority="1000" >
      <action android:name="android.intent.action.PACKAGE_INSTALL" />
      <action android:name="android.intent.action.PACKAGE_ADDED" />
      <data android:scheme="package" />
      </intent-filter>
   </receiver>
   ```
5. Add the following activity in your App xml under android manifest for Pokkt Interstitial Integration

   ```
   <activity
      android:name=“com.app.pokktsdk.InterstitialActivity”
      android:configChanges=“keyboard|keyboardHidden|navigation|orientation|screenLayout|uiMode|screenSize|smallestScreenSize”
      android:label=“@string/app_name”
      android:windowSoftInputMode="stateAlwaysHidden|adjustUnspecified" >
   </activity>
   ```
6. Add Following meta tag for google play services (Goole play services is required and should be part of your project, if not, please add the GooglePlayService component in project.)

   ```
   <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />
   ```
7. Add a meta data tag for offerwall campaign. you will have to implement the IOfferwallDelegate interface in your project to listen for all offerwall related events. (refer to pokkt sample for example).

   ```
   <meta-data android:name=“offerwallDelegate" android:value=“<com.pokkt.plugin.common.PokktOfferwallDelegate>" />
   ```
8. Add following Service and receiver in manifest for google analytics (Optional).

   ```
   <receiver android:name="com.google.android.gms.analytics.AnalyticsReceiver" android:enabled="true">
      <intent-filter>
         <action android:name="com.google.android.gms.analytics.ANALYTICS_DISPATCH" />
      </intent-filter>
   </receiver>
   <service android:name="com.google.android.gms.analytics.AnalyticsService"
      android:enabled="true"
      android:exported="false"/>
   ```
9. Add following Service in manifest for in-app notification.

   ```
   <service android:name="com.app.pokktsdk.notification.NotificationService"
      android:label="PokktNotificationService”
      android:exported="false"/>
   ```

Note:Please do not copy the code points from this PDF file as it may introduce unwanted characters and space in your code. Instead please refer to sample app source code provided with the sample app.

***

#### 3. Implementation Steps

Import the POKKT extension (com.pokkt.extension\_4.1.ste) and follow the below steps:

* Import com.pokkt.extension\_4.1.ste in ShiVa Editor from Data Explorer. Now drag this plugin from Data Explorer into Game Editor under plugin section.
* Now import PokktSample.ste where you will see multiple AIModel and HUD. This sample project contains one important AIModel which is AI\_POKKT. This is mandatory to use in your project. This sample project contains few more AIModel which listen event and those gets trigger from AI\_POKKThandler. So update the AI\_POKKT AIModel handler according to your AIModel.\
  Here is the example how to do that:

  This is one of the event ("onCachingCompletedHandle") from AI\_POKKT.

  ```
  user.sendEvent ( application.getCurrentUser ( ), "AI_PlayVideo", "onCachingCompletedHandle", screenName,isRewarded,backButtonDisabled,defaultSkipTime,shouldAllowSkip,shouldAllowMute,shouldSkipConfirm,skipConfirmMessage,skipConfirmYesLabel,skipConfirmNoLabel,
  skipTimerMessage,incentiveMessage,rewardAmount)
  ```

  and handling this event in AI\_PlayVideo AIModel. Please check our given sample.
* Now export the game from Data Explore. On clicking export button will show one popup where select "Runtime Package (.stk)" and select Android as option and then export it. Then will generate .stk file.
* Now export android project of your ShiVa .stk file using ShiVa Authoring tools and do the all required setting for Android in Settings option. There you need to assign path for Android SDK, Android NDK and Cygwin path.

  Once it is done then follow the below steps:

  1. Select Content tab and give the path of ".stk" file.
  2. Select Authoring tab and choose Authoring type as "Project". Also give the Bundle identifier which will be the package ID and Version and Version code.

  Once all these two steps are done then click on Build button which will export the Android Project and which you can easily import in Android ID like Eclipse or other ID After importing the project in eclipse or android editor, need to do some changes. Here is the steps:

  1. First update AndroidManifest.xml as suggested in 3rd point of this document.
  2. Check the downloaded folder which you got from POKKT and get the res.zip. This res.zip contains values, layoutand drawablefolder. So extract the zip file and add it in imported project.

**Common**

1. First we need to set SET\_APPLICATION\_IDand SET\_SECURITY\_KEYwhich you will get once you create new App in Pokkt.com and then call INIT\_POKKT. Please check AI\_MainMenuin our given example.
2. If you are doing server to server integration then please perform operation:

   ```
   PokktNativeExtension.SET_THIRD_PARTY_USER_ID.
   ```
3. While in development please call

   ```
   PokktNativeExtension.performOperation ( PokktNativeExtension.SET_DEBUG, "true" )
   ```

   to see Pokkt debug log and for showing toast please call

   ```
   PokktNativeExtension.performOperation ( PokktNativeExtension .SHOW_TOAST, "message" ).
   ```

   please make sure to change this for production build.

   ```
   PokktNativeExtension.performOperation ( PokktNativeExtension.SET_DEBUG, "false" ).
   ```
4. Android MinSDKVersion should be >= 14.
5. To use google analytics, please set AnalyticsType and Analytics ID:

   ```
   PokktNativeExtension.performOperation(PokktNativeExtension.SET_SELECTED_ANALYTICS_TYPE, PokktNativeExtension.GOOGLE_ANALYTICS )
   PokktNativeExtension.performOperation(PokktNativeExtension.SET_GOOGLE_ANALYTICS_ID, "ID" )
   ```
6. To use flurry analytics please set AnalyticsType and Flurry Application Key:

   ```
   PokktNativeExtension.performOperation(PokktNativeExtension.SET_SELECTED_ANALYTICS_TYPE, PokktNativeExtension.ANALYTICS_TYPE_FLURRY)
   PokktNativeExtension.performOperation(PokktNativeExtension.SET_FLURRY_APPLICATION_KEY, "ID" )
   ```
7. To use mix panel analytics please set AnalyticsType and Mix PanelProject Token:

   ```
   PokktNativeExtension.performOperation(PokktNativeExtension.SET_SELECTED_ANALYTICS_TYPE, PokktNativeExtension. ANALYTICS_TYPE_MIXPANEL)
   PokktNativeExtension.performOperation(PokktNativeExtension.SET_MIX_PANEL_PROJECT_ID, "ID" )
   ```
8. To use mix panel analytics please set AnalyticsType and Fabric Token:

   ```
   PokktNativeExtension.performOperation(PokktNativeExtension.SET_SELECTED_ANALYTICS_TYPE, PokktNativeExtension. ANALYTICS_TYPE_FABRIC)
   ```
9. Please call TRACK\_IAPto send any in-app purchase information to Pokkt. Like below you can do this.

   ```
   PokktNativeExtension.performOperation(PokktNativeExtension.IAP_STORE_SET_CURRENCY_CODE, "<Country code>" )
   PokktNativeExtension.performOperation(PokktNativeExtension.IAP_STORE_SET_DESCRIPTION, "<description>" )
   PokktNativeExtension.performOperation(PokktNativeExtension.IAP_STORE_SET_PRICE, "<price>" )
   PokktNativeExtension.performOperation(PokktNativeExtension.IAP_STORE_SET_PRODUCT_ID, "<productid>" )
   PokktNativeExtension.performOperation(PokktNativeExtension.IAP_STORE_SET_PURCHASE_DATE, "<date>" )
   PokktNativeExtension.performOperation(PokktNativeExtension.IAP_STORE_SET_PURCHASE_SIGNATURE, "purchaseSignature" )
   PokktNativeExtension.performOperation(PokktNativeExtension.IAP_STORE_SET_TITLE, "title" )
   PokktNativeExtension.performOperation(PokktNativeExtension.IAP_STORE_SET_PURCHASE_STORE, PokktNativeExtension.IAP_STORE_TYPE_AMAZON )
   PokktNativeExtension.performOperation(PokktNativeExtension.TRACK_IAP, "" )
   ```

**Session**

1. We have option to start session for tracking: startSession and endSession so call these like below:

   ```
   PokktNativeExtension.performOperation(PokktNativeExtension.START_SESSION, "" )
   PokktNativeExtension.performOperation(PokktNativeExtension.END_SESSION, "" )
   ```
2. You should call startSession at the start of his application if you want to use this but this is the optional and call it after setting application id and security key.
3. You should call endSession at the end of his application.

**OfferWall**

1. For OfferWall, you can set two additional parameters which are SET\_OFFERWALL\_ASSETS\_VALUE and SET\_CLOSE\_ON\_SUCCESS\_FLAG. SET\_OFFERWALL\_ASSETS\_VALUEis required if you only want to show campaigns of certain value on OfferWall. So when you call show offerwall campaign, there if you pass the value then it will show such campaign which contains certain value. And if you don't pass then It has default value as empty. SET\_CLOSE\_ON\_SUCCESS\_FLAGis required if you wish to close the OfferWall after user has completed one offer. It’s default value is false.
2. Before calling another method for offerWall, please make sure that you have already called InitPokkt.
3. To show OfferWall please call

   ```
   PokktNativeExtension.performOperation ( PokktNativeExtension.GET_COINS, "" );
   ```
4. In the screen or activity where you have button to show offerwall, in that activity onResume you should call GET\_PENDING\_COINS so that you get a callback to award points to the user after he has come back to game/app after finishing with OfferWall. You will get a callback for this call in your AI\_POKKTAIModel where onCoinResponseor onCoinResponseWithTrIdwill trigger in case of success otherwise onCoinResponseFailedwill trigger in case of failure.
5. You can call PokktNativeExtension.performOperation ( PokktNativeExtension. CHECK\_OFFERWALL\_CAMPAIGN, "" )to check whether the campaigns are available before showing OfferWall button to user. You will get a callback for this call in your AI\_POKKT.onCampaignAvailabilityimplementation.

**AdConfig**

1. There are few extra setting which need to do for caching/showing Ad. There are few constants are available which need to call using PerformOperation method like below: PokktNativeExtension.performOperation(PokktNativeExtension.ADCONFIG\_IS\_SCREEN\_NAME, "start" ). So set ADCONFIG\_SCREEN\_NAME and ADCONFIG\_IS\_REWARDED. This screen name will be created on pokkt dashboard.
2. developer can also ADCONFIG\_DEFAULT\_SKIP\_TIME, ADCONFIG\_SKIP\_CONFIRMATION\_MESSAGE, ADCONFIG\_BACK\_BUTTON\_DISABLED, ADCONFIG\_SHOULD\_ALLOW\_MUTE, ADCONFIG\_SHOULD\_SKIP\_CONFIRM, ADCONFIG\_SKIP\_CONFIRM\_YES\_LABEL, ADCONFIG\_SKIP\_CONFIRM\_NO\_LABEL, ADCONFIG\_SKIP\_TIMER\_MESSAGE, ADCONFIG\_INCENTIVE\_MESSAGE. These values can be used to configure the behaviour ad.
3. If you want to enable/disable the skip button on video screen please set set ADCONFIG\_SHOULD\_ALLOW\_SKIP as "true"/"false". The default value for set ADCONFIG\_SHOULD\_ALLOW\_SKIP is "true"
4. If you have enabled skipped button by setting ADCONFIG\_SHOULD\_ALLOW\_SKIP as true then you can control after how many seconds the skip button will be visible in video by setting ADCONFIG\_DEFAULT\_SKIP\_TIME to appropriate value. Since most videos will be 30 sec or less please set ADCONFIG\_DEFAULT\_SKIP\_TIME as 10 or less. You can also give your own skip message by setting ADCONFIG\_SKIP\_CONFIRMATION\_MESSAGE.
5. The ADCONFIG\_SCREEN\_NAME has default value as default and can be used by you to give different screen name for different places in your app where you are showing ads. You will control ad targeting based on these screen names which should match exactly with screen names defined in dashboard. ADCONFIG\_SCREEN\_NAME can not contain white spaces and only special characters allowed are hyphen and underscore.
6. You can choose to show ad with or without incentive to user by setting ADCONFIG\_IS\_REWARDED as true or false. Ad gratification will only happen for incentivized playback
7. You can disable the back button while video is playing by setting ADCONFIG\_BACK\_BUTTON\_DISABLED by passing "true"/"false"
8. You can configure the ad skip dialog yes/no labels by setting ADCONFIG\_SKIP\_CONFIRM\_YES\_LABEL and ADCONFIG\_SKIP\_CONFIRM\_NO\_LABEL.
9. You can configure the ad incentive message by setting ADCONFIG\_INCENTIVE\_MESSAGE.
10. You can configure the ad skip timer message by setting ADCONFIG\_SKIP\_TIMER\_MESSAGE. The message must contain a ## placeholder to show skip time value, which will keep changing as per the time.

**Rewarded/Non-Rewarded Ad**

1. You need to set "true"/"false" for rewarded or non-rewarded ad in ADCONFIG\_IS\_REWARDED".
2. You will have to call PokktNativeExtension.performOperation ( PokktNativeExtension.CACHE\_AD\_CAMPAIGN, "" )to start caching ads on device.
3. You can call PokktNativeExtension.performOperation ( PokktNativeExtension.CHECK\_AD\_AVAILABILITY, "" )to check if the campaign are available for a particular adConfig before you try to show ad.
4. You can call PokktNativeExtension.performOperation ( PokktNativeExtension.SHOW\_AD, "" )to show ad.
5. Please reward user only from the OnAdGratifiedcallback method.

**Mediation Info**

Pokkt SDK now supports 10 ad networks which you can integrate in your application for better monetisation.

Please download mediation documentation from Pokkt and follow the process for each mediation network.

**Export Logs**

1. Developer should call PokktNativeExtension.performOperation ( PokktNativeExtension.EXPORT\_LOG, "" ) to export the Pokkt SDK logs to folder of your choice.
2. This API shows a folder chooser dialog where user can choose a particular folder.
3. User can also create a new folder where user wants to export the logs.

**Optional Parameters**

There are also provision for developers to provide extra user data available with them to pokkt. We currently support following data points: name, age, sex, mobileNo, emailAddress, location, birthday, maritalStatus, facebookId, twitterHandle, education, nationality, employment andmaturityRating. For reference, please check testAllMethods in AI\_MainMenuAIModel.

***

#### In-App Notifications

Developer can add In-App notifications in their dashboard.

\
Repeat schedule can be daily, weekly monthly. Daily Repeat can have options like frequency of repeat and time in hours of notification.

\
Weekly repeat can have options like frequency of repeat in weeks, days of repeat and time in hours of notification.

\
Monthly repeat can have options like frequency of repeat in months dates of repeat and time in hours for notification.

\
For don't repeat case, there are options like dates and time in hour for notification.

The notifications are listed and can be edited. Notifications can also be deactivated/activated

***

#### Important Points

Please do not copy the code points from this pdf as it may introduce unwanted characters and space in your code. Instead please refer to sample app source code in pokkt bundle.

Please also refer to sample app source code for better understanding of implementation.


# Xamarin

### Contents

* [1 POKKT SDK v7.5.0 (GDPR Compliance) Integration Guide for Xamarin](broken://pages/we53E1I9zrTwk7QHEl2T)
* [2 Getting Started with Pokkt SDK v7.5.0](broken://pages/we53E1I9zrTwk7QHEl2T)
* [3 Integration Guide v7.5.0](broken://pages/we53E1I9zrTwk7QHEl2T)
  * [3.1 Overview](broken://pages/we53E1I9zrTwk7QHEl2T)
  * [3.2 Implementation Steps](broken://pages/we53E1I9zrTwk7QHEl2T)
    * [3.2.1 SDK Configuration](broken://pages/we53E1I9zrTwk7QHEl2T)
    * [3.2.2 Ad Types](broken://pages/we53E1I9zrTwk7QHEl2T)
      * [3.2.2.1 Video](broken://pages/we53E1I9zrTwk7QHEl2T)
      * [3.2.2.2 Interstitial](broken://pages/we53E1I9zrTwk7QHEl2T)
      * [3.2.2.3 Banner](broken://pages/we53E1I9zrTwk7QHEl2T)
    * [3.2.3 Ad Actions](broken://pages/we53E1I9zrTwk7QHEl2T)
      * [3.2.3.1 Video](broken://pages/we53E1I9zrTwk7QHEl2T)
      * [3.2.3.2 Interstitial](broken://pages/we53E1I9zrTwk7QHEl2T)
      * [3.2.3.3 Banner](broken://pages/we53E1I9zrTwk7QHEl2T)
    * [3.2.4 Pokkt ad player configuration](broken://pages/we53E1I9zrTwk7QHEl2T)
    * [3.2.5 User Details](broken://pages/we53E1I9zrTwk7QHEl2T)
    * [3.2.6 Pokkt Server Callback Params](broken://pages/we53E1I9zrTwk7QHEl2T)
    * [3.2.7 Debugging](broken://pages/we53E1I9zrTwk7QHEl2T)
    * [3.2.8 Analytics](broken://pages/we53E1I9zrTwk7QHEl2T)
      * [3.2.8.1 Google Analytics](broken://pages/we53E1I9zrTwk7QHEl2T)
      * [3.2.8.2 Flurry Analytics](broken://pages/we53E1I9zrTwk7QHEl2T)
      * [3.2.8.3 MixPanel Analytics](broken://pages/we53E1I9zrTwk7QHEl2T)
      * [3.2.8.4 Fabric Analytics](broken://pages/we53E1I9zrTwk7QHEl2T)
    * [3.2.9 IAP(In App Purchase)](broken://pages/we53E1I9zrTwk7QHEl2T)
  * [3.3 Project Configuration](broken://pages/we53E1I9zrTwk7QHEl2T)
    * [3.3.1 Android](broken://pages/we53E1I9zrTwk7QHEl2T)
    * [3.3.2 Dependencies](broken://pages/we53E1I9zrTwk7QHEl2T)
    * [3.3.3 Manifest](broken://pages/we53E1I9zrTwk7QHEl2T)
      * [3.3.3.1 Permissions Declarations](broken://pages/we53E1I9zrTwk7QHEl2T)
      * [3.3.3.2 Activity Declaration](broken://pages/we53E1I9zrTwk7QHEl2T)
      * [3.3.3.3 Service Declaration](broken://pages/we53E1I9zrTwk7QHEl2T)
    * [3.3.4 iOS](broken://pages/we53E1I9zrTwk7QHEl2T)
      * [3.3.4.1 Dependencies](broken://pages/we53E1I9zrTwk7QHEl2T)
      * [3.3.4.2 Framework](broken://pages/we53E1I9zrTwk7QHEl2T)
      * [3.3.4.3 Info.plist](broken://pages/we53E1I9zrTwk7QHEl2T)
* [4 Migration Note Guide v7.5.0](broken://pages/we53E1I9zrTwk7QHEl2T)
  * [4.1 Note](broken://pages/we53E1I9zrTwk7QHEl2T)

###

Last Update: 13th March, 2019

Download Latest Version Here.

***

### Getting Started with Pokkt SDK v7.5.0

1\. Add “ ( PokktExtension.dll, PokktExtension.Droid.dll ) / ( PokktExtension.dll, PokktExtension.iOS.dll ) ” to your project.

2\. Set native extension

```
PokktAds.SetNativeExtentions(new AndroidExtension(this));
PokktAds.SetNativeExtentions(new IosExtension(this));
```

3\. Set *Application Id* and *Security Key* in Pokkt SDK. You can get it from Pokkt dashboard from your account. These are unique per app registered.

```
PokktAds.SetPokktConfig("<Pokkt Application ID>", "<Pokkt Security Key>");
```

4\. Set *GDPR consent* in Pokkt SDK. This must be called before calling any ad related API. Developers/Publishers must get the consent from user. For more information on GDPR please refer <https://www.eugdpr.org/> and <https://www.eugdpr.org/gdpr-faqs.html> . This API can again be used by publishers to revoke the consent. If this API is not called or invalid data provided then SDK will access the users personal data for ad targeting.

```
PokktAds.ConsentInfo consentInfo = new PokktAds.ConsentInfo();
consentInfo. GDPRApplicable = true;
//true if GDPR is applicable.
consentInfo. GDPRConsentAvailable = true;
//true if user has given consent to use personal details for ad targeting.
PokktAds. SetDataAccessConsent (consentInfo);
```

5\. Set the following to enable or disable omission of Pokkt logs and other informatory messages. Make sure to set it to false before release.

```
PokktAds.Debugging.ShouldDebug(<true>);
```

6\. You can check if Ad is cached or not using

```
PokktAds.VideoAd.IsAdCached("<ScreenName>", <true / false>);
PokktAds.Interstitial.IsAdCached("<ScreenName>", <true / false>);
```

7\. Show Video Ad with one of the followings:

```
PokktAds.VideoAd.ShowRewarded("<ScreenName>");
PokktAds.VideoAd.ShowNonRewarded("<ScreenName>");
```

8\. Show Interstitial Ad with one of the followings:

```
PokktAds.Interstitial.ShowRewarded("<ScreenName>");
PokktAds.Interstitial.ShowNonRewarded("<ScreenName>");
```

9\. For Banner Ad

```
PokktAds.Banner.LoadBanner(<ScreenName>, <BannerPosition>);
PokktAds.Banner.LoadBannerWithRect(<ScreenName>,<Height>, Width>, <x>,<y>);
PokktAds.Banner.RemoveBanner();
```

10\. Implement '*Actions* provided in *PokktAds.VideoAd* to listen to video-ad related messages.

11\. Implement *Actions* provided in *PokktAds.Interstitial* to listen to interstitial-ad related messages.

12\. Implement *Actions* provided in *PokktAds.Banner* to listen to banner-ad related messages.

13\. We recommend caching of video-ads for better user experience, you can cache an ad using the followings:

```
PokktAds.VideoAd.cacheRewarded("<ScreenName>");
PokktAds.VideoAd.cacheNonRewarded("<ScreeName>");
```

### Integration Guide v7.5.0

#### Overview

Thank you for choosing Pokkt SDKfor Xamarin. This document contains all the information required to set up the SDK with your project. We also support mediation for various third party networks. To know the supported third party networks and their integration process go to mediation section .

Before implementing plugins it is mandatory to go through project configuration and implementation steps, as these sections contain mandatory steps for basic SDK integration and are followed by every plugin.

You can download our SDK from pokkt.com.

ScreenName:This one parameter is accepted by almost all API’s of Pokkt SDK. This controls the placement of ads and can be created on Pokkt Dashboard.

We will be referencing PokktAds Demoapp provided with SDK. We will be referencing this app during the course of explanation in this document. We suggest you go through the sample app for better understanding.

***

#### Implementation Steps

**SDK Configuration**

1. You need to set extension before calling any method like below. This should be the first call.<br>

   ```
   PokktAds.SetNativeExtentions(new AndroidExtension(this));
   PokktAds.SetNativeExtentions(new IosExtension(this));
   ```
2. Set Application Idand Security keyin Pokkt SDK. You can get it from Pokkt dashboard from your account. We generally assign unique application Id and Security key.<br>

   ```
   PokktAds.SetPokktConfig("<Pokkt Application ID>", "<Pokkt Security Key>");
   ```
3. If you are using server to server integration with Pokkt, you can also set Third Party UserIdin PokktAds.<br>

   ```
   PokktAds.SetThirdPartyUserId("<Third party user Id>");
   ```
4. Set *GDPR consent* in Pokkt SDK. This must be called before calling any ad related API. Developers/Publishers must get the consent from user. For more information on GDPR please refer <https://www.eugdpr.org/> and <https://www.eugdpr.org/gdpr-faqs.html> . This API can again be used by publishers to revoke the consent. If this API is not called or invalid data provided then SDK will access the users personal data for ad targeting.

   ```
   PokktAds.ConsentInfo consentInfo = new PokktAds.ConsentInfo();
   consentInfo. GDPRApplicable = true;
   //true if GDPR is applicable.
   consentInfo. GDPRConsentAvailable = false;
   //false if user has given consent to use personal details for ad targeting.
   PokktAds. SetDataAccessConsent (consentInfo);
   ```
5. When your application is under development and if you want to see Pokkt logs and other informatory messages, you can enable it by setting shouldDebugto true. Make sure to disable debugging before release.

   ```
   PokktAds.Debugging.ShouldDebug(<true>);
   ```

**Ad Types**

**Video**

* Video ad can be rewarded or non-rewarded. You can either cache the ad in advance or directly call show for it.
* We suggest you to cache the ad in advance so as to give seamless play behaviour, In other case it will stream the video which may lead to unnecessary buffering delays depending on the network connection.

1. To cache rewarded ad call:<br>

   ```
   PokktAds.VideoAd.CacheRewarded("<ScreenName>");
   ```
2. To show rewarded ad call:<br>

   ```
   PokktAds.VideoAd.ShowRewarded("<ScreenName>");
   ```
3. To cache non-rewarded ad call:<br>

   ```
   PokktAds.VideoAd.CacheNonRewarded("<ScreeName>");
   ```
4. To show non-rewarded ad call:<br>

   ```
   PokktAds.VideoAd.ShowNonRewarded("<ScreeName>");
   ```
5. Check if Ad is already cached

   ```
   PokktAds.VideoAd.isAdCached("<ScreenName>", <true / false>);
   ```

**Interstitial**

1. To cache rewarded ad call:<br>

   ```
   PokktAds.Interstitial.CacheRewarded("<ScreeName>");
   ```
2. To show rewarded ad call:<br>

   ```
   PokktAds.Interstitial.ShowRewarded("<ScreeName>");
   ```
3. To cache non-rewarded ad call:<br>

   ```
   PokktAds.Interstitial.CacheNonRewarded("<ScreeName>");
   ```
4. To show non-rewarded ad call:<br>

   ```
   PokktAds.Interstitial.ShowNonRewarded("<ScreeName>");
   ```
5. Check if Ad is already cached

   ```
   PokktAds.Interstitial.isAdCached("<ScreenName>", <true / false>);
   ```

There are two ways to load banners:

1. Load banner<br>

   ```
   PokktManager.LoadBanner(“<screenName>”, <BannerPosition>);
   ```

   TThere are predefined positions for banner positioning inside BannerPosition (Com.Pokkt.Plugin.Common.BannerPosition) .

   * TOP\_LEFT.
   * TOP\_CENTER.
   * TOP\_RIGHT.
   * MIDDLE\_LEFT.
   * MIDDLE\_CENTER.
   * MIDDLE\_RIGHT.
   * BOTTOM\_LEFT.
   * BOTTOM\_CENTER.
   * BOTTOM\_RIGHT.
2. Load banner with rect<br>

   ```
   PokktAds.Banner.LoadBannerWithRect(<ScreenName>,<Height>,<Width>,<x>,<y>);
   ```

   Height : Custom height for banner.\
   Width: Custom width for banner.\
   x: Point x on screen to show banner.\
   y: Point y on screen to show banner.
3. You can remove Banner using:<br>

   ```
   PokktAds.Banner.RemoveBanner();
   ```

**Ad Actions**

Ad actions are optional, but we suggest to implement them as it will help you to keep track of the status of your ad request.

**Video**

```
PokktAds.VideoAd.AdAvailabilityEvent += AdAvailabilityStatus;
PokktAds.VideoAd.AdCachingCompletedEvent += AdCachingCompleted;
PokktAds.VideoAd.AdCachingFailedEvent += AdCachingFailed;
PokktAds.VideoAd.AdDisplayedEvent += AdDisplayed;
PokktAds.VideoAd.AdFailedToShowEvent += AdFailedToShow;
PokktAds.VideoAd.AdSkippedEvent += AdSkipped;
PokktAds.VideoAd.AdCompletedEvent += AdCompleted;
PokktAds.VideoAd.AdClosedEvent += AdClosed;
PokktAds.VideoAd.AdGratifiedEvent += AdGratified;
PokktAds.VideoAd. AdClickedEvent += AdClicked ;
```

**Interstitial**

```
PokktAds.Interstitial.AdAvailabilityEvent += AdAvailabilityStatus;
PokktAds.Interstitial.AdCachingCompletedEvent += AdCachingCompleted;
PokktAds.Interstitial.AdCachingFailedEvent += AdCachingFailed;
PokktAds.Interstitial.AdDisplayedEvent += AdDisplayed;
PokktAds.Interstitial.AdFailedToShowEvent += AdFailedToShow;
PokktAds.Interstitial.AdSkippedEvent += AdSkipped;
PokktAds.Interstitial.AdCompletedEvent += AdCompleted;
PokktAds.Interstitial.AdClosedEvent += AdClosed;
PokktAds.Interstitial.AdGratifiedEvent += AdGratified;
PokktAds.Interstitial. AdClickedEvent += AdClicked
```

```
PokktAds.Banner.BannerLoadedEvent += bannerLoaded;
PokktAds.Banner.BannerLoadFailedEvent += bannerLoadFailed;
PokktAds.Banner. BannerClickedEvent += AdClicked
```

**Pokkt ad player configuration**

Pokkt Ad player works the way App is configured at Pokkt dashboard, but we provide a way to override those settings using PokktAdPlayerViewConfig.

Application should prefer configuration provided through code by developer or what’s configured for the app in dashboard, can be controlled any time through the dashboard itself. If you want to make changes to this configuration after your app distribution, you can contact Pokkt Teamto do the same for your app through admin console.

```
PokktAdPlayerViewConfig adPlayerViewConfig = new PokktAdPlayerViewConfig ();
// set properties values to adPlayerViewConfig
PokktAds.SetAdPlayerViewConfig(adPlayerViewConfig );
```

Various properties that can be managed through this are:

1. Back button\
   Defines if user is allowed to close the Advertisement by clicking on back button or not.\
   Property Name: BackButtonDisabled\
   Values:\
   True = Back button is disabled and user cannot close the Ad.\
   False = Back button is not disabled and user can close the Ad.
2. Default skip time\
   Defines the time after which user can skip the Ad.\
   Property name:DefaultSkipTime\
   Values:\
   Any Integer value.\
   Default value is 10 seconds.
3. Should allow skip\
   Defines if user is allowed to skip the Ad or not.\
   Property name:ShouldAllowSkip\
   Values:\
   True = User can skip Ad.\
   False = User can’t skip Ad.
4. Should allow mute\
   Defines if user is allowed to mute the Video Ad or not.\
   Property name:ShouldAllowMute\
   Values:\
   True = User can mute video Ad.\
   False = User can’t mute video Ad.
5. Should confirm skip\
   Defines if confirmation dialog is to be shown before skipping the Ad.\
   Property name:ShouldConfirmSkip\
   Values:\
   True = Confirmation dialog will be shown before skipping the video.\
   False = Confirmation dialog will not be shown before skipping the video.
6. Skip confirmation message\
   Defines what confirmation message to be shown in skip dialog.\
   Property name:SkipConfirmMessage\
   Values:\
   Any String message.\
   Default value is “Skipping this video will earn you NO rewards. Are you sure?”.
7. Affirmative label for skip dialog\
   Defines what should be the label for affirmative button in skip dialog.\
   Property name:SkipConfirmYesLabel\
   Values:\
   Any String message.\
   Default value is “Yes”.
8. Negative label for skip dialog\
   Defines what should be the label for affirmative button in skip dialog.\
   Property name:SkipConfirmNoLabel\
   Values:\
   Any String message.\
   Default value is “No”.
9. Skip timer message\
   Defines message to be shown before enabling skip button. Don’t forget to add placeholder “ ## ” in your custom message.\
   This placeholder is replaced by property “Default skip time” assigned above.\
   Property name:SkipTimerMessage\
   Values:\
   Any String message.\
   Default value is “You can skip video in ## seconds”
10. Incentive message\
    Defines message to be shown during video progress, that after what time user will be incentivised.\
    Property name:IncentiveMessage\
    Values:\
    Any String message\
    Default value is “more seconds only for your reward !”
11. Should collect feedback\
    Defines message to be shown during video progress, that after what time user will be incentivised.\
    Property name:setShouldCollectFeedback\
    Values:\
    True = If you want to collect feedback from the user for the Ad.\
    False = If you don’t want to collect feedback from the user for the Ad.
12. Audio Enabled\
    Provides a medium to disable audio for video ad without user interaction.\
    Property name:IsAudioEnabled\
    Values:\
    True = If you want to play audio for video ad.\
    False = If you don’t want to play audio for video ad.

**User Details**

For better targeting of ads you can also provide user details to our SDK using.

```
PokktUserDetails pokktUserDetails = new PokktUserDetails();
pokktUserDetails.Name = "";
pokktUserDetails.Age = "";
pokktUserDetails.Sex = "";
pokktUserDetails.MobileNo = "";
pokktUserDetails.EmailAddress = "";
pokktUserDetails.Location = "";
pokktUserDetails.Birthday = "";
pokktUserDetails.MaritalStatus = "";
pokktUserDetails.FacebookId = "";
pokktUserDetails.TwitterHandle = "";
pokktUserDetails.Education = "";
pokktUserDetails.Nationality = "";
pokktUserDetails.Employment = "";
pokktUserDetails.MaturityRating = "";
PokktAds.SetUserDetails(pokktUserDetails);
```

**Pokkt Server Callback Params**

Developer can set some values in POKKT SDK that they need to be sent to their server via POKKT Server callbacks.

```
Dictionary<string, string> extraParam = new Dictionary<string, string>();
extraParam.put("testdata","{\"adnetwork\": \"pokkt\"}");
PokktAds.SetCallbackExtraParams(extraParam);
```

**Debugging**

Other than enabling debugging for Pokkt SDK, it can also be used to:

1. Export log

   Export your log to your desired location, we generally have it in root directory of SD card, if permission for external storage is provided and in cache folder otherwise.

   ```
   PokktAds.Debugging.ExportLog();
   ```
2. Export log to cloud

   You can also export log to cloud.

   ```
   PokktAds.Debugging.ExportLogToCloud();
   ```

**Analytics**

We support various analytics in Pokkt SDK.

Below is mentioned how to enable various analytics with Pokkt SDK.

**Google Analytics**

Google analytics Id can be obtained from Google dashboard.

```
AnalyticsDetails analyticsDetail = new AnalyticsDetails();
analyticsDetail.SelectedAnalyticsType = AnalyticsType.GOOGLE_ANALYTICS;
analyticsDetail.GoogleAnalyticsId = "Google Analytics Id";
PokktAds.Analytics.SetAnalyticsDetails(analyticsDetail);
```

**Flurry Analytics**

Flurry application key can be obtained from Flurry dashboard.

```
AnalyticsDetails analyticsDetail = new AnalyticsDetails();
analyticsDetail.SelectedAnalyticsType = AnalyticsType.FLURRY;
analyticsDetail.FlurryApplicationKey = "Flurry Application Key";
PokktAds.Analytics.SetAnalyticsDetails(analyticsDetail);
```

**MixPanel Analytics**

MixPanel project token can be obtained from MixPanel dashboard.

```
AnalyticsDetails analyticsDetail = new AnalyticsDetails();
analyticsDetail.SelectedAnalyticsType = AnalyticsType.MIXPANEL;
analyticsDetail.MixPanelProjectToken = "MixPanel Project Token";
PokktAds.Analytics.SetAnalyticsDetails(analyticsDetail);
```

**Fabric Analytics**

Analytics Id is not required in case of Fabric.

```
AnalyticsDetails analyticsDetail = new AnalyticsDetails();
analyticsDetail.SelectedAnalyticsType = AnalyticsType.FABRIC;
analyticsDetail.FabricAnalyticsId = "Fabric Analytics Id";
PokktAds.Analytics.SetAnalyticsDetails(analyticsDetail);
```

**IAP(In App Purchase)**

Call trackIAP to send any In App purchase information to Pokkt.

```
InAppPurchaseDetails inAppPurchaseDetails = new InAppPurchaseDetails();
inAppPurchaseDetails.ProductId = "<productId>";
inAppPurchaseDetails.PurchaseData = "<purchaseData>";
inAppPurchaseDetails.PurchaseSignature = "<purchaseSignature>";
inAppPurchaseDetails.PurchaseStore = IAPStoreType.GOOGLE;
inAppPurchaseDetails.Price = <100.00>;
PokktAds.Analytics.trackIAP(inAppPurchaseDetails);
```

***

#### Project Configuration

**Android**

In the package downloaded above you will find:

1. Docs:

   Contains documentations for step wise step integration for SDK.
2. PokktAds Demo

   Source code for *PokktAds Demo*(Sample app) which showcase implementation of Pokkt SDK through code for better understanding.
3. Extensions:

   *PokktExtension.dll*, *PokktExtension.Droid.dll* and *PokktExtension.iOS.dll* both of these are required by Pokkt SDK and should be added to project

minSdkVersionsupported is 11 .

**Dependencies**

* Add PokktExtension.dll and PokktExtension.Droid.dll with analytics to your project as *"Reference"*.
* Add *support-v4.jar*
* We expect Google play services integrated in project, although it;s optional but we recommend you to integrate it, as it’s required to fetch AdvertisingID for device,which is useful to deliver targeted advertising to Android users.

**Manifest**

**Permissions Declarations**

Add the following permissions to your project manifest

1. Mandatory permissions.

   ```
   <uses-permission android:name="android.permission.INTERNET" />
   <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
   ```

   * android.permission.INTERNET = Required for SDK communication with server.
   * android.permission.ACCESS\_NETWORK\_STATE = Required to detect changes in network, like if WIFI is available or not.
2. Optional permissions.

   ```
   <uses-permission android:name="android.permission.WAKE_LOCK" />
   <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
   <uses-permission android:name="android.permission.WRITE_CALENDAR" />
   <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
   <uses-permission android:name="android.permission.VIBRATE" />
   ```

   * android.permission.WAKE\_LOCK = Required to prevent device from going into the sleep mode during video play.
   * android.permission.WRITE\_EXTERNAL\_STORAGE = Required to store media files related to ads in external SD card, if not provided we will use app cache folder to store media files, which will result in unnecessary increase in application’s size. It is recommended to ask for this permission as low end devices generally have less internally memory available.
   * android.permission.WRITE\_CALENDAR = Some Ads create events in calendar.
   * android.permission.ACCESS\_FINE\_LOCATION = Some Ads show content based on user’s location
   * android.permission.VIBRATE = Some Ads provide haptic feedback, so as to maintain their behaviorwe need this permission

**Activity Declaration**

Add the following activity in your AndroidManifest for Pokkt SDK integration.

```
<activity
   android:name="com.pokkt.sdk.userinterface.presenter.activity.PokktAdActivity"
   android:configChanges="keyboard|keyboardHidden|navigation|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"
   android:hardwareAccelerated="true"
   android:label=”Pokkt”
   android:screenOrientation="landscape"
   android:windowSoftInputMode="stateAlwaysHidden|adjustUnspecified" />
```

You can change the android:screenOrientation="landscape" to of your choice, the way you want to display the ads.

**Service Declaration**

Add the following service in your AndroidManifest for receiving InApp notifications. How to set up InApp notifications see “Pokkt Dashboard” document.

```
<service
   android:name="com.pokkt.sdk.notification.NotificationService"
   android:exported="false"
   android:label="PokktNotificationService" />
```

**iOS**

**Dependencies**

* Add PokktExtension.dll and PokktExtension.iOS.dll with analytics to your project as *"Reference"*.
* If you are using Visual Studio Code\
  Navigate to "Select iOS project -> Project Options -> Build -> iOS Build" and then enter following arguments in "Additional m touch arguments" text box:

```
-gcc_flags "-ObjC -framework CoreMotion -framework CoreData -framework Foundation -framework MediaPlayer -framework SystemConfiguration -framework UIKit -framework CoreTelephony -framework EventKit -framework AdSupport -framework CoreGraphics -framework CoreMotion -framework MessageUI -framework EventKitUI -framework CoreLocation -framework AVFoundation" to Additional mtouch arguments
```

**Framework**

```
CoreData.framework
ARKit.framework
Foundation.framework
MediaPlayer.framework
SystemConfiguration.framework
UIKit.framework
CoreTelephony.framework
EventKit.framework
AdSupport.framework
CoreGraphics.framework
CoreMotion.framework
MessageUI.framework
EventKitUI.framework
CoreLocation.framework
AVFoundation.framework
libc++.tbd
libsqlite3.tbd
```

**Info.plist**

Add the below exceptions to your application info.plist.

```
<key>NSAppTransportSecurity</key>
   <dict>
      <key>NSExceptionDomains</key>
      <dict>
        <key>pokkt.com</key>
        <dict>
           <key>NSIncludesSubdomains</key>
           <true/>
           <key>NSExceptionAllowsInsecureHTTPLoads</key>
           <true/>
           <key>NSExceptionRequiresForwardSecrecy</key>
           <false/>
           <key>NSExceptionMinimumTLSVersion</key>
           <string>TLSv1.2</string>
           <key>NSThirdPartyExceptionAllowsInsecureHTTPLoads</key>
           <false/>
           <key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
           <true/>
           <key>NSThirdPartyExceptionMinimumTLSVersion</key>
           <string>TLSv1.2</string>
           <key>NSRequiresCertificateTransparency</key>
           <false/>
        </dict>
        <key>cloudfront.net</key>
        <dict>
           <key>NSIncludesSubdomains</key>
           <true/>
           <key>NSExceptionAllowsInsecureHTTPLoads</key>
           <true/>
           <key>NSExceptionRequiresForwardSecrecy</key>
           <false/>
           <key>NSExceptionMinimumTLSVersion</key>
           <string>TLSv1.2</string>
           <key>NSThirdPartyExceptionAllowsInsecureHTTPLoads</key>
           <false/>
           <key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
           <true/>
           <key>NSThirdPartyExceptionMinimumTLSVersion</key>
           <string>TLSv1.2</string>
           <key>NSRequiresCertificateTransparency</key>
           <false/>
        </dict>
      </dict>
   </dict>
```

***

### Migration Note Guide v7.5.0

**Note**

* In case of any query regarding integration, refer\
  *"POKKT\_SDK\_Integration\_Guide(\_v7.5.0\_Xamarin\_Android)"* for this version provided inside "Pokkt\_SDK\_7.5.0\_Xamarin\_Android".

1. Removed callbacks\
   videoAdAvailabilityStatus and interstitialAvailabilityStatus are removed from the Video and Interstitial ads respectively and so are the CheckAdAvailability API.
2. PokktAdPlayerViewConfig\
   PokktAdPlayerViewConfig is renamed to PokktAdViewConfig.


# Cordova/PhoneGap

### Contents

* [1 POKKT SDK v7.6.0 (GDPR Compliance) Integration Guide for Cordova](broken://pages/0kKAA0CezrL0o6eUe6RB)
  * [1.1 Overview](broken://pages/0kKAA0CezrL0o6eUe6RB)
  * [1.2 Project Configuration](broken://pages/0kKAA0CezrL0o6eUe6RB)
    * [1.2.1 Android](broken://pages/0kKAA0CezrL0o6eUe6RB)
    * [1.2.2 Dependencies](broken://pages/0kKAA0CezrL0o6eUe6RB)
    * [1.2.3 Manifest](broken://pages/0kKAA0CezrL0o6eUe6RB)
      * [1.2.3.1 Permissions Declarations](broken://pages/0kKAA0CezrL0o6eUe6RB)
      * [1.2.3.2 Activity Declaration](broken://pages/0kKAA0CezrL0o6eUe6RB)
      * [1.2.3.3 Service Declaration](broken://pages/0kKAA0CezrL0o6eUe6RB)
    * [1.2.4 iOS](broken://pages/0kKAA0CezrL0o6eUe6RB)
    * [1.2.5 Dependencies](broken://pages/0kKAA0CezrL0o6eUe6RB)
    * [1.2.6 Framework](broken://pages/0kKAA0CezrL0o6eUe6RB)
    * [1.2.7 Info.plist](broken://pages/0kKAA0CezrL0o6eUe6RB)
  * [1.3 Implementation Steps](broken://pages/0kKAA0CezrL0o6eUe6RB)
    * [1.3.1 SDK Configuration](broken://pages/0kKAA0CezrL0o6eUe6RB)
    * [1.3.2 Ad Types](broken://pages/0kKAA0CezrL0o6eUe6RB)
      * [1.3.2.1 Video](broken://pages/0kKAA0CezrL0o6eUe6RB)
      * [1.3.2.2 Interstitial](broken://pages/0kKAA0CezrL0o6eUe6RB)
      * [1.3.2.3 Banner](broken://pages/0kKAA0CezrL0o6eUe6RB)
    * [1.3.3 Ad Delegates](broken://pages/0kKAA0CezrL0o6eUe6RB)
      * [1.3.3.1 Video](broken://pages/0kKAA0CezrL0o6eUe6RB)
      * [1.3.3.2 Interstitial](broken://pages/0kKAA0CezrL0o6eUe6RB)
      * [1.3.3.3 Banner](broken://pages/0kKAA0CezrL0o6eUe6RB)
    * [1.3.4 Pokkt ad player configuration](broken://pages/0kKAA0CezrL0o6eUe6RB)
    * [1.3.5 User Details](broken://pages/0kKAA0CezrL0o6eUe6RB)
    * [1.3.6 Pokkt Server Callback Params](broken://pages/0kKAA0CezrL0o6eUe6RB)
    * [1.3.7 Debugging](broken://pages/0kKAA0CezrL0o6eUe6RB)
    * [1.3.8 Analytics](broken://pages/0kKAA0CezrL0o6eUe6RB)
      * [1.3.8.1 Google Analytics](broken://pages/0kKAA0CezrL0o6eUe6RB)
      * [1.3.8.2 Flurry Analytics](broken://pages/0kKAA0CezrL0o6eUe6RB)
      * [1.3.8.3 MixPanel Analytics](broken://pages/0kKAA0CezrL0o6eUe6RB)
      * [1.3.8.4 Fabric Analytics](broken://pages/0kKAA0CezrL0o6eUe6RB)
      * [1.3.8.5 IAP(In App Purchase)](broken://pages/0kKAA0CezrL0o6eUe6RB)

###

Last Update: 22nd November, 2019

Download Latest Version Here.

***

#### Overview

Thank you for choosing Pokkt SDK for Cordova. This document contains all the information required to set up the SDK with your project. We also support mediation for various third party networks. To know the supported third party networks and their integration process go to mediation section.

Before implementing plugins it is mandatory to go through project configuration and implementation steps, as these sections contain mandatory steps for basic SDK integration and are followed by every plugin.

minSdkVersionsupported is 11 .

ScreenName:This one parameter is accepted by almost all API’s of Pokkt SDK. This controls the placement of ads and can be created on Pokkt Dashboard.

We will be referencing PokktAds Demo app provided with SDK during the course of explanation in this document. We suggest you go through the sample app for better understanding.

***

#### Project Configuration

**Android**

In the package downloaded above you will find:

1. Docs:

   Contains step wise step integration for SDK.
2. PokktCordovaDemo app code.
3. PokktCordovaDemo.apk:

   Application package of Pokkt Cordova Demo, so that you can directly install this apk on your device and have a look how our SDK works instead of compiling the source code.
4. SDK + Plugin:
   1. JAR
      * PokktSDK\_v7.6.0.jar
      * PAPCordova.jar
      * pokktsdk360ext.jar
   2. Dependencies
      * Android-support-v4.jar
      * google-play-services.jar

minSdkVersionsupported is 11.

**Dependencies**

* Extract the provided file "cordova-plugin-pokkt.zip" into a directory. Execute the following command from your terminal:\
  $cordova plugin add */ \<path-to-plugin-directory> /cordova-plugin-pokkt/*
* We expect Google play services integrated in project, although it is optional but we recommend you to integrate it, as it is required to fetch AdvertisingID for device,which is useful to deliver targeted advertising to Android users.

**Manifest**

**Permissions Declarations**

We have already added the following mandatory permissions to the manifest via plugin.xml

1. Mandatory permissions.<br>

   ```
   <uses-permission android:name="android.permission.INTERNET" />
   <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
   ```

   * android.permission.INTERNET = Required for SDK communication with server.
   * android.permission.ACCESS\_NETWORK\_STATE = Required to detect changes in network, like if WIFI is available or not.
2. Optional permissions. We have commented out these in plugin.xml. Please uncomment those for better ad delivery and ad experience.<br>

   ```
   <uses-permission android:name="android.permission.WAKE_LOCK" />
   <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
   <uses-permission android:name="android.permission.WRITE_CALENDAR" />
   <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
   <uses-permission android:name="android.permission.VIBRATE" />
   ```

   * android.permission.WAKE\_LOCK = Required to prevent device from going into the sleep mode during video play.
   * android.permission.WRITE\_EXTERNAL\_STORAGE = Required to store media files related to ads in external SD card, if not provided we will use app cache folder to store media files, which will result in unnecessary increase in application’s size. It is recommended to ask for this permission as low end devices generally have less internally memory available.
   * android.permission.WRITE\_CALENDAR = Some Ads create events in calendar.
   * android.permission.ACCESS\_FINE\_LOCATION = Some Ads show content based on user’s location
   * android.permission.VIBRATE = Some Ads provide haptic feedback, so as to maintain their behavior we need this permission

**Activity Declaration**

We have already added the following activity in your AndroidManifest for Pokkt SDK integration via plugin.xml

```
<activity
   android:name="com.pokkt.sdk.PokktAdActivity"
   android:configChanges="keyboard|keyboardHidden|navigation|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"
   android:hardwareAccelerated="true"
   android:label=”Pokkt”
   android:screenOrientation="landscape"
   android:windowSoftInputMode="stateAlwaysHidden|adjustUnspecified" />
```

You can change the android:screenOrientation="landscape"to of your choice, the way you want to display the ads.

**Service Declaration**

We have already added the following service in your AndroidManifest for receiving InApp notifications. How to set up InApp notifications see “Pokkt Dashboard” document.

```
<service
   android:name="com.pokkt.sdk.notification.NotificationService"
   android:exported="false"
   android:label="PokktNotificationService" />
```

**iOS**

In the package downloaded above you will find:

1. Docs:

   Contains documentations for step wise step integration for SDK.
2. PokktSDK\_v7.6.0:
   1. PokktSDK.framework

**Dependencies**

* Extract the provided file "cordova-plugin-pokkt.zip" into a directory. Execute the following command from your terminal:\
  $cordova plugin add */ \<path-to-plugin-directory> /cordova-plugin-pokkt/*

**Framework**

```
CoreData.framework
ARKit.framework
Foundation.framework
MediaPlayer.framework
SystemConfiguration.framework
UIKit.framework
CoreTelephony.framework
EventKit.framework
AdSupport.framework
CoreGraphics.framework
CoreMotion.framework
MessageUI.framework
EventKitUI.framework
CoreLocation.framework
AVFoundation.framework
libc++.tbd
```

**Info.plist**

Add the below exceptions to your application info.plist.

```
<key>NSAppTransportSecurity</key>
   <dict>
      <key>NSExceptionDomains</key>
      <dict>
        <key>pokkt.com</key>
        <dict>
           <key>NSIncludesSubdomains</key>
           <true/>
           <key>NSExceptionAllowsInsecureHTTPLoads</key>
           <true/>
           <key>NSExceptionRequiresForwardSecrecy</key>
           <false/>
           <key>NSExceptionMinimumTLSVersion</key>
           <string>TLSv1.2</string>
           <key>NSThirdPartyExceptionAllowsInsecureHTTPLoads</key>
           <false/>
           <key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
           <true/>
           <key>NSThirdPartyExceptionMinimumTLSVersion</key>
           <string>TLSv1.2</string>
           <key>NSRequiresCertificateTransparency</key>
           <false/>
        </dict>
        <key>cloudfront.net</key>
        <dict>
           <key>NSIncludesSubdomains</key>
           <true/>
           <key>NSExceptionAllowsInsecureHTTPLoads</key>
           <true/>
           <key>NSExceptionRequiresForwardSecrecy</key>
           <false/>
           <key>NSExceptionMinimumTLSVersion</key>
           <string>TLSv1.2</string>
           <key>NSThirdPartyExceptionAllowsInsecureHTTPLoads</key>
           <false/>
           <key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
           <true/>
           <key>NSThirdPartyExceptionMinimumTLSVersion</key>
           <string>TLSv1.2</string>
           <key>NSRequiresCertificateTransparency</key>
           <false/>
        </dict>
      </dict>
   </dict>
```

***

#### Implementation Steps

**SDK Configuration**

1. For all invocation of Pokkt SDK developer will make use of methods available in pokktAds.jsfile using PokktExtensionobject.
2. Set Application Idand Security keyin Pokkt SDK. You can get it from Pokkt dashboard from your account. These are unique per app registered.<br>

   ```
   pe = window.plugins.pokktExtension;
   pe.setPokktConfig("<Pokkt Application ID>", "<Pokkt Security Key>");
   ```
3. Set *GDPR consent* in Pokkt SDK. This must be called before calling any ad related API. Developers/Publishers must get the consent from user. For more information on GDPR please refer <https://www.eugdpr.org/> and <https://www.eugdpr.org/gdpr-faqs.html> . This API can again be used by publishers to revoke the consent. If this API is not called or invalid data provided then SDK will access the users personal data for ad targeting.

   ```
   var gdprConsent =
   {GDPRApplicable:<true/false>,GDPRConsentAvailable:<true/false>};
   //GDPRApplicable true if GDPR is applicable.
   //GDPRConsentAvailable true if user has given consent to use personal details
   for ad targeting.
   pe.setDataAccessConsent(JSON.stringify(gdprConsent));
   ```
4. If you are using server to server integration with Pokkt, you can also set Third Party UserIdin PokktAds.<br>

   ```
   pe.setThirdPartyUserId("<Third party user Id>");
   ```
5. When your application is under development and if you want to see Pokkt logs and other informatory messages, you can enable it by setting setDebugto true . Make sure to disable debugging before release.<br>

   ```
   pe.setDebug(<true>);
   ```

**Ad Types**

**Video**

* Video ad can be rewarded or non-rewarded. You can either cache the ad in advance or directly call show for it.
* We suggest you to cache the ad in advance so as to give seamless play behaviour, In other case it will stream the video which may lead to unnecessary buffering delays depending on the network connection.

1. To cache rewarded ad call:<br>

   ```
   pe.cacheRewardedVideoAd("<ScreenName>");
   ```
2. To show rewarded ad call:<br>

   ```
   pe.showRewardedVideoAd("<ScreenName>");
   ```
3. To cache non-rewarded ad call:<br>

   ```
   pe.cacheNonRewardedVideoAd("<ScreeName>");
   ```
4. To show non-rewarded ad call:<br>

   ```
   pe.showNonRewardedVideoAd("<ScreeName>");
   ```
5. To check if video ad is cached:

   ```
   pe.isVideoAdCached("<ScreenName>", <true / false>, callback);
   ```

**Interstitial**

1. To cache rewarded ad call:<br>

   ```
   pe.cacheRewardedInterstitial("<ScreenName>");
   ```

2. To show rewarded ad call:<br>

   ```
   pe.showRewardedInterstitial("<ScreenName>");
   ```

3. To cache non-rewarded ad call:<br>

   ```
   pe.cacheNonRewardedInterstitial("<ScreeName>");
   ```

4. To show non-rewarded ad call:<br>

   ```
   pe.showNonRewardedInterstitial("<ScreenName>");
   ```

5. To check if interstitial ad is cached:

   ```
   pe.isInterstitialAdCached("<ScreenName>", <true / false>, callback);
   ```

6. Add PokktBannerView to your layout, we use it as placeholder to populate banner ad into it.<br>

   ```
   <com.pokkt.sdk.banners.PokktBannerView
      android:id="@+id/pokkt_banner_view_top"
      android:layout_width="320dp"
      android:layout_height="50dp"
      android:layout_centerHorizontal="true"/>
   ```

7. Load banner<br>

   ```
   pe.loadBanner(“<screenName>”, <pokktBannerView>);
   ```

8. You can remove Banner using:<br>

   ```
   pe.destroyBanner(<pokktBannerView>);
   ```

**Ad Delegates**

Ad delegates are optional, but we suggest to implement them as it will help you to keep track of the status of your ad request.

**Video**

```
document.addEventListener('VideoAdCachingCompleted', this.handleAdCachingCompleted, false);
document.addEventListener('VideoAdCachingFailed', this.handleAdCachingFailed, false);
document.addEventListener('VideoAdDisplayed', this.handleAdDisplayed, false);
document.addEventListener('VideoAdSkipped', this.handleAdSkipped, false);
document.addEventListener('VideoAdCompleted', this.handleAdCompleted, false);
document.addEventListener('VideoAdClosed', this.handleAdClosed, false);
document.addEventListener('VideoAdGratified', this.handleAdGratified, false);
document.addEventListener('VideoAdFailedToShow', this.handleAdShowFailed, false);
document.addEventListener('VideoAdClicked', this.handleAdClicked, false);
```

**Interstitial**

```
document.addEventListener('InterstitialCachingCompleted', this.handleAdCachingCompleted, false);
document.addEventListener('InterstitialCachingFailed', this.handleAdCachingFailed, false);
document.addEventListener('InterstitialDisplayed', this.handleAdDisplayed, false);
document.addEventListener('InterstitialSkipped', this.handleAdSkipped, false);
document.addEventListener('InterstitialCompleted', this.handleAdCompleted, false);
document.addEventListener('InterstitialClosed', this.handleAdClosed, false);
document.addEventListener('InterstitialGratified', this.handleAdGratified, false);
document.addEventListener('InterstitialFailedToShow', this.handleAdShowFailed, false);
document.addEventListener('InterstitialAdClicked', this.handleAdClicked, false);
```

```
document.addEventListener('BannerLoaded', this.handleBannerLoaded, false);
document.addEventListener('BannerLoadFailed', this.handleBannerLoadFailed, false);
document.addEventListener('BannerClicked', this.handleBannerClicked, false);
```

**Pokkt ad player configuration**

Pokkt Ad player works the way App is configured at Pokkt dashboard, but we provide a way to override those settings using PokktAdPlayerViewConfig.

Application should prefer configuration provided through code by developer or what’s configured for the app in dashboard, can be controlled any time through the dashboard itself. If you want to make changes to this configuration after your app distribution, you can contact Pokkt Teamto do the same for your app through admin console.

```
var adPlayerViewConfig = pe.createAdPlayerViewConfig();
// set properties values to adPlayerViewConfig
pe.setAdPlayerViewConfig(adPlayerViewConfig );
```

Various setters for the properties that can be managed through this are:

1. Back button\
   Defines if user is allowed to close the Advertisement by clicking on back button or not.\
   Setter Name: setBackButtonDisabled(boolean backButtonDisabled)\
   Values:\
   True = Back button is disabled and user cannot close the Ad.\
   False = Back button is not disabled and user can close the Ad.
2. Default skip time\
   Defines the time after which user can skip the Ad.\
   Setter Name:setDefaultSkipTime(int defaultSkipTime)\
   Values:\
   Any Integer value.\
   Default value is 10 seconds.
3. Should allow skip\
   Defines if user is allowed to skip the Ad or not.\
   Setter Name:setShouldAllowSkip(boolean shouldAllowSkip)\
   Values:\
   True = User can skip Ad.\
   False = User can’t skip Ad.
4. Should allow mute\
   Defines if user is allowed to mute the Video Ad or not.\
   Setter Name:setShouldAllowMute(boolean shouldAllowMute)\
   Values:\
   True = User can mute video Ad.\
   False = User can’t mute video Ad.
5. Should confirm skip\
   Defines if confirmation dialog is to be shown before skipping the Ad.\
   Setter Name:ShouldConfirmSkip\
   Values:\
   True = Confirmation dialog will be shown before skipping the video.\
   False = Confirmation dialog will not be shown before skipping the video.
6. Skip confirmation message\
   Defines what confirmation message to be shown in skip dialog.\
   Setter Name:setShouldSkipConfirm(boolean shouldSkipConfirm)\
   Values:\
   Any String message.\
   Default value is “Skipping this video will earn you NO rewards. Are you sure?”.
7. Affirmative label for skip dialog\
   Defines what should be the label for affirmative button in skip dialog.\
   Setter Name:setSkipConfirmYesLabel(String skipConfirmYesLabel)\
   Values:\
   Any String message.\
   Default value is “Yes”.
8. Negative label for skip dialog\
   Defines what should be the label for affirmative button in skip dialog.\
   Setter Name:setSkipConfirmNoLabel(String skipConfirmNoLabel)\
   Values:\
   Any String message.\
   Default value is “No”.
9. Skip timer message\
   Defines message to be shown before enabling skip button. Don’t forget to add placeholder “ ## ” in your custom message.\
   This placeholder is replaced by property “Default skip time” assigned above.\
   Setter Name:setSkipTimerMessage(String skipTimerMessage)\
   Values:\
   Any String message.\
   Default value is “You can skip video in ## seconds”
10. Incentive message\
    Defines message to be shown during video progress, that after what time user will be incentivised.\
    Setter Name:setIncentiveMessage(String incentiveMessage)\
    Values:\
    Any String message\
    Default value is “more seconds only for your reward !”
11. Should collect feedback\
    Defines message to be shown during video progress, that after what time user will be incentivised.\
    Setter Name:setShouldCollectFeedback\
    Values:\
    True = If you want to collect feedback from the user for the Ad.\
    False = If you don’t want to collect feedback from the user for the Ad.
12. Audio Enabled\
    Provides a medium to disable audio for video ad without user interaction.\
    Property name:setAudioEnabled\
    Values:\
    True = If you want to play audio for video ad.\
    False = If you don’t want to play audio for video ad.

**User Details**

For better targeting of ads you can also provide user details to our SDK using.

```
var pokktUserDetails = pe.createPokktUserDetails();
pokktUserDetails.Name = "";
pokktUserDetails.Age = "";
pokktUserDetails.Sex = "";
pokktUserDetails.MobileNo = "";
pokktUserDetails.EmailAddress = "";
pokktUserDetails.Location = "";
pokktUserDetails.Birthday = "";
pokktUserDetails.MaritalStatus = "";
pokktUserDetails.FacebookId = "";
pokktUserDetails.TwitterHandle = "";
pokktUserDetails.Education = "";
pokktUserDetails.Nationality = "";
pokktUserDetails.Employment = "";
pokktUserDetails.MaturityRating = "";
pe.setUserDetails(pokktUserDetails);
```

**Pokkt Server Callback Params**

Developer can set some values in POKKT SDK that they need to be sent to their server via POKKT Server callbacks.

```
var extraParams = {};
//set your values here. eg: network name can be given as pokkt
extraParams.Network = "POKKT";
pe.setCallbackExtraParams(JSON.stringify(extraParams));
```

**Debugging**

Other than enabling debugging for Pokkt SDK, it can also be used to:

1. Export log

   Export your log to your desired location, we generally have it in root directory of SD card, if permission for external storage is provided and in cache folder otherwise.

   ```
   pe.exportLog();
   ```
2. Export log to cloud

   You can also export log to cloud.

   ```
   pe.exportLogToCloud();
   ```

**Analytics**

We support various analytics in Pokkt SDK.

Below is mentioned how to enable various analytics with Pokkt SDK.

**Google Analytics**

Google analytics Id can be obtained from Google dashboard.

```
var analyticsDetail = pe.createAnalyticsDetails();
analyticsDetail.selectedAnalyticsType = “GOOGLE_ANALYTICS”;
analyticsDetail.googleAnalyticsID = "Google Analytics Id";
pe.setAnalyticsDetails(analyticsDetail);
```

**Flurry Analytics**

Flurry application key can be obtained from Flurry dashboard.

```
var analyticsDetail = pe.createAnalyticsDetails();
analyticsDetail.selectedAnalyticsType = “FLURRY”;
analyticsDetail.flurryApplicationKey = "flurry Application Key";
pe.setAnalyticsDetails(analyticsDetail);
```

**MixPanel Analytics**

MixPanel project token can be obtained from MixPanel dashboard.

```
var analyticsDetail = pe.createAnalyticsDetails();
analyticsDetail.selectedAnalyticsType = “MIXPANEL”;
analyticsDetail. mixPanelProjectToken = "mixpanel project token";
pe.setAnalyticsDetails(analyticsDetail);
```

**Fabric Analytics**

Analytics Id is not required in case of Fabric.

```
var analyticsDetail = pe.createAnalyticsDetails();
analyticsDetail.selectedAnalyticsType = “FABRIC”;
pe.setAnalyticsDetails(analyticsDetail);
```

**IAP(In App Purchase)**

Call trackIAP to send any In App purchase information to Pokkt.

```
var inAppPurchaseDetails = pe.createInAppPurchaseDetail();
inAppPurchaseDetails.productId = "<productId>";
inAppPurchaseDetails.price = <price>;
inAppPurchaseDetails.currencyCode = "<currencyCode>";
inAppPurchaseDetails.title = "<title>";
inAppPurchaseDetails.description = "<description>";
inAppPurchaseDetails.purchaseData = "<purchaseData>";
inAppPurchaseDetails.purchaseSignature = “<purchaseSignature>”;
inAppPurchaseDetails.purchaseStore = “<purchaseStore>”;//NONE,GOOGLE,IOS,AMAZON
pe.trackIAP(inAppPurchaseDetails);
```


# Corona

### Contents

* [1 POKKT SDK v7.6.0 (GDPR Compliance) Integration Guide for Corona](broken://pages/aO589c27q3ayryzpM3N3)
  * [1.1 Overview](broken://pages/aO589c27q3ayryzpM3N3)
  * [1.2 Project Configuration](broken://pages/aO589c27q3ayryzpM3N3)
    * [1.2.1 Android](broken://pages/aO589c27q3ayryzpM3N3)
    * [1.2.2 Dependencies](broken://pages/aO589c27q3ayryzpM3N3)
    * [1.2.3 Manifest](broken://pages/aO589c27q3ayryzpM3N3)
      * [1.2.3.1 Permissions Declarations](broken://pages/aO589c27q3ayryzpM3N3)
      * [1.2.3.2 Activity Declaration](broken://pages/aO589c27q3ayryzpM3N3)
      * [1.2.3.3 Service Declaration](broken://pages/aO589c27q3ayryzpM3N3)
    * [1.2.4 iOS](broken://pages/aO589c27q3ayryzpM3N3)
    * [1.2.5 Dependencies](broken://pages/aO589c27q3ayryzpM3N3)
    * [1.2.6 Framework](broken://pages/aO589c27q3ayryzpM3N3)
    * [1.2.7 Info.plist](broken://pages/aO589c27q3ayryzpM3N3)
  * [1.3 Implementation Steps](broken://pages/aO589c27q3ayryzpM3N3)
    * [1.3.1 SDK Configuration](broken://pages/aO589c27q3ayryzpM3N3)
    * [1.3.2 Ad Types](broken://pages/aO589c27q3ayryzpM3N3)
      * [1.3.2.1 Video](broken://pages/aO589c27q3ayryzpM3N3)
      * [1.3.2.2 Interstitial](broken://pages/aO589c27q3ayryzpM3N3)
      * [1.3.2.3 Banner](broken://pages/aO589c27q3ayryzpM3N3)
    * [1.3.3 Ad Delegates](broken://pages/aO589c27q3ayryzpM3N3)
    * [1.3.4 Pokkt ad player configuration](broken://pages/aO589c27q3ayryzpM3N3)
    * [1.3.5 User Details](broken://pages/aO589c27q3ayryzpM3N3)
    * [1.3.6 Pokkt Server Callback Params](broken://pages/aO589c27q3ayryzpM3N3)
    * [1.3.7 Debugging](broken://pages/aO589c27q3ayryzpM3N3)
    * [1.3.8 Analytics](broken://pages/aO589c27q3ayryzpM3N3)
      * [1.3.8.1 Google Analytics](broken://pages/aO589c27q3ayryzpM3N3)
      * [1.3.8.2 Flurry Analytics](broken://pages/aO589c27q3ayryzpM3N3)
      * [1.3.8.3 MixPanel Analytics](broken://pages/aO589c27q3ayryzpM3N3)
      * [1.3.8.4 Fabric Analytics](broken://pages/aO589c27q3ayryzpM3N3)
      * [1.3.8.5 IAP(In App Purchase)](broken://pages/aO589c27q3ayryzpM3N3)

###

Last Update: 22nd November, 2019

Download Latest Version Here.

***

#### Overview

Thank you for choosing Pokkt SDK for Corona. This document contains all the information required to setup the SDK with your project. We also support mediation for various third party networks. To know the supported third party networks and their integration process go to mediation section.

Before implementing plugins it is mandatory to go through project configuration and implementation steps, as these sections contain mandatory steps for basic SDK integration and are followed by every plugin.

minSdkVersionsupported is 11 .

ScreenName: This one parameter is accepted by almost all API’s of Pokkt SDK. This controls the placement of ads and can be created on Pokkt Dashboard.

We will be referencing PokktAds Demo app provided with SDK during the course of explanation in this document. We suggest you go through the sample app for better understanding.

***

#### Project Configuration

**Android**

In the package downloaded above you will find:

1. Docs:

   Contains step wise step integration for SDK.
2. PokktCoronaDemo app code.
3. PokktCoronaDemo.apk:

   Application package of Pokkt Corona Demo, so that you can directly install this apk on your device and have a look how our SDK works instead of compiling the source code.
4. SDK + Plugin:
   1. JAR
      * PokktSDK\_v7.6.0.jar
      * PAPCorona.jar
      * pokktsdk360ext.jar
   2. Dependencies
      * Android-support-v4.jar
      * google-play-services.jar

minSdkVersionsupported is 11.

**Dependencies**

* Extract the provided file "corona-plugin-pokkt.zip" into a directory.
* We expect Google play services integrated in project, although it is optional but we recommend you to integrate it, as it is required to fetch AdvertisingID for device,which is useful to deliver targeted advertising to Android users.

**Manifest**

**Permissions Declarations**

We have already added the following mandatory permissions to the manifest via plugin.xml

1. Mandatory permissions.<br>

   ```
   <uses-permission android:name="android.permission.INTERNET" />
   <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
   ```

   * android.permission.INTERNET = Required for SDK communication with server.
   * android.permission.ACCESS\_NETWORK\_STATE = Required to detect changes in network, like if WIFI is available or not.
2. Optional permissions. We have commented out these in plugin.xml. Please uncomment those for better ad delivery and ad experience.<br>

   ```
   <uses-permission android:name="android.permission.WAKE_LOCK" />
   <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
   <uses-permission android:name="android.permission.WRITE_CALENDAR" />
   <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
   <uses-permission android:name="android.permission.VIBRATE" />
   ```

   * android.permission.WAKE\_LOCK = Required to prevent device from going into the sleep mode during video play.
   * android.permission.WRITE\_EXTERNAL\_STORAGE = Required to store media files related to ads in external SD card, if not provided we will use app cache folder to store media files, which will result in unnecessary increase in application’s size. It is recommended to ask for this permission as low end devices generally have less internally memory available.
   * android.permission.WRITE\_CALENDAR = Some Ads create events in calendar.
   * android.permission.ACCESS\_FINE\_LOCATION = Some Ads show content based on user’s location
   * android.permission.VIBRATE = Some Ads provide haptic feedback, so as to maintain their behavior we need this permission

**Activity Declaration**

We have already added the following activity in your AndroidManifest for Pokkt SDK integration via plugin.xml

```
<activity
   android:name="com.pokkt.sdk.PokktAdActivity"
   android:configChanges="keyboard|keyboardHidden|navigation|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"
   android:hardwareAccelerated="true"
   android:label=”Pokkt”
   android:screenOrientation="landscape"
   android:windowSoftInputMode="stateAlwaysHidden|adjustUnspecified" />
```

You can change the android:screenOrientation="landscape"to of your choice, the way you want to display the ads.

**Service Declaration**

We have already added the following service in your AndroidManifest for receiving InApp notifications. How to set up InApp notifications see “Pokkt Dashboard” document.

```
<service
   android:name="com.pokkt.sdk.notification.NotificationService"
   android:exported="false"
   android:label="PokktNotificationService" />
```

**iOS**

In the package downloaded above you will find:

1. Docs:

   Contains documentations for step wise step integration for SDK.
2. PokktSDK\_v7.6.0:
   1. libPokktSDK.a
   2. Headers

**Dependencies**

* Extract the provided file "corona-plugin-pokkt.zip" into a directory. Link the pokkt library in the xcode project.

**Framework**

```
CoreData.framework
ARKit.framework
Foundation.framework
MediaPlayer.framework
SystemConfiguration.framework
UIKit.framework
CoreTelephony.framework
EventKit.framework
AdSupport.framework
CoreGraphics.framework
CoreMotion.framework
MessageUI.framework
EventKitUI.framework
CoreLocation.framework
AVFoundation.framework
libc++.tbd
```

**Info.plist**

Add the below exceptions to your application info.plist.

```
<key>NSAppTransportSecurity</key>
   <dict>
      <key>NSExceptionDomains</key>
      <dict>
        <key>pokkt.com</key>
        <dict>
           <key>NSIncludesSubdomains</key>
           <true/>
           <key>NSExceptionAllowsInsecureHTTPLoads</key>
           <true/>
           <key>NSExceptionRequiresForwardSecrecy</key>
           <false/>
           <key>NSExceptionMinimumTLSVersion</key>
           <string>TLSv1.2</string>
           <key>NSThirdPartyExceptionAllowsInsecureHTTPLoads</key>
           <false/>
           <key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
           <true/>
           <key>NSThirdPartyExceptionMinimumTLSVersion</key>
           <string>TLSv1.2</string>
           <key>NSRequiresCertificateTransparency</key>
           <false/>
        </dict>
        <key>cloudfront.net</key>
        <dict>
           <key>NSIncludesSubdomains</key>
           <true/>
           <key>NSExceptionAllowsInsecureHTTPLoads</key>
           <true/>
           <key>NSExceptionRequiresForwardSecrecy</key>
           <false/>
           <key>NSExceptionMinimumTLSVersion</key>
           <string>TLSv1.2</string>
           <key>NSThirdPartyExceptionAllowsInsecureHTTPLoads</key>
           <false/>
           <key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
           <true/>
           <key>NSThirdPartyExceptionMinimumTLSVersion</key>
           <string>TLSv1.2</string>
           <key>NSRequiresCertificateTransparency</key>
           <false/>
        </dict>
      </dict>
   </dict>
```

***

#### Implementation Steps

**SDK Configuration**

1. For all invocation of Pokkt SDK developer will make use of methods available in pokkt.plugin using PokktNativeExtension class. Android Plugin LuaLoader will have changes as below:<br>

   ```
   //This corresponds to the event name, e.g. [Lua] event.name
   private static final String POKKT_EVENT_NAME = "pluginpokktevent";
   //Pokkt plugin
   PokktNativeExtension pokktNativeExtension = new PokktNativeExtension();

   //Implements the library.init() Lua function.
   public int init(LuaState L) {
      int listenerIndex = 1;
      if (CoronaLua.isListener(L, listenerIndex, POKKT_EVENT_NAME)) {
         fListener = CoronaLua.newRef(L, listenerIndex);
         pokktNativeExtension.setListenerIndex(fListener);
      }
      return 0;
   }
   @Override
   public int invoke(LuaState L) {
      // Register this plugin into Lua with the following functions.
      NamedJavaFunction[] luaFunctions = new NamedJavaFunction[]{
         new plugin.pokkt.LuaLoader.InitWrapper(),};
      luaFunctions = pokktNativeExtension.addPokktNamedFunctions(luaFunctions);
      String libName = L.toString(1);
      L.register(libName, luaFunctions);

      //1 indicates that Lua require() function will return above Lua library.
      return 1;
   }
   ```
2. Set Application Id and Security key in Pokkt SDK. You can get it from Pokkt dashboard from your account. These are unique per app registered.<br>

   ```
   local pokktlibrary = require "plugin.pokkt"
   local pokktConfigJson = {
      ["appId"] = "<Pokkt Application ID>",
      ["securityKey"] = <Pokkt Security Key>"
      }
   local encoded = json.encode( pokktConfigJson )
   pokktlibrary.NotifyPokkt("setPokktConfig",encoded)
   ```
3. Set *GDPR consent* in Pokkt SDK. This must be called before calling any ad related API. Developers/Publishers must get the consent from user. For more information on GDPR please refer <https://www.eugdpr.org/> and <https://www.eugdpr.org/gdpr-faqs.html> . This API can again be used by publishers to revoke the consent. If this API is not called or invalid data provided then SDK will access the users personal data for ad targeting.

   ```
   local t = {
   ["GDPRConsentAvailable"] = <“true/false”>,
   ["GDPRApplicable"] = <“true/false”>
   }
   local encoded = json.encode( t )
   pokktlibrary.NotifyPokkt("setDataAccessConsent",encoded)
   --GDPRConsentAvailable true if GDPR is applicable.
   --GDPRConsentAvailable true if user has given consent to use personal
   details for ad targeting.
   ```
4. If you are using server to server integration with Pokkt, you can also set Third Party UserId in PokktAds.<br>

   ```
   pokktlibrary.NotifyPokkt("setThirdPartyUserId", "<unique user id>")
   ```
5. When your application is under development and if you want to see Pokkt logs and other informatory messages, you can enable it by setting setDebug to true. Make sure to disable debugging before release.<br>

   ```
   pokktlibrary.NotifyPokkt("Debugging_shouldDebug", "<true/false>")
   ```

**Ad Types**

**Video**

* Video ad can be rewarded or non-rewarded. You can either cache the ad in advance or directly call show for it.
* We suggest you to cache the ad in advance so as to give seamless play behaviour, In other case it will stream the video which may lead to unnecessary buffering delays depending on the network connection.

1. To cache rewarded ad call:<br>

   ```
   pokktlibrary.NotifyPokkt("VideoAd_cacheRewarded","<ScreenName>")
   ```
2. To show rewarded ad call:<br>

   ```
   pokktlibrary.NotifyPokkt("VideoAd_showRewarded","<ScreenName>")
   ```
3. To cache non-rewarded ad call:<br>

   ```
   pokktlibrary.NotifyPokkt("VideoAd_cacheNonRewarded","<ScreenName>")
   ```
4. To show non-rewarded ad call:<br>

   ```
   pokktlibrary.NotifyPokkt("VideoAd_showNonRewarded","<ScreenName>")
   ```
5. To check if video ad is cached:

   ```
   local jsondata = {
      ["screenName"] = <ScreenName>",
      ["isRewarded"] = <true/false>
   }
   local encoded = json.encode( jsondata )
   local isVideoCached = pokktlibrary.NotifyPokkt("VideoAd_isAdCached",encoded)
   ```

**Interstitial**

1. To cache rewarded ad call:<br>

   ```
   pokktlibrary.NotifyPokkt("Interstitial_cacheRewarded","<ScreenName>")
   ```

2. To show rewarded ad call:<br>

   ```
   pokktlibrary.NotifyPokkt("Interstitial_showRewarded","<ScreenName>")
   ```

3. To cache non-rewarded ad call:<br>

   ```
   pokktlibrary.NotifyPokkt("Interstitial_cacheNonRewarded","<ScreenName>")
   ```

4. To show non-rewarded ad call:<br>

   ```
   pokktlibrary.NotifyPokkt("Interstitial_showNonRewarded","<ScreenName>")
   ```

5. To check if interstitial ad is cached:

   ```
   local jsondata = {
      ["screenName"] = screenEditText.text,
      ["isRewarded"] = true
   }
   local encoded = json.encode( jsondata )
   local isAdCached = pokktlibrary.NotifyPokkt("Interstitial_isAdCached",encoded)
   infoText.text = "Interstitial Cached : "..tostring(isAdCached)
   ```

6. Load banner<br>

   ```
   local jsondata = {
      ["screenName"] = “<screenName>”,
      ["bannerPosition"] = "8"
   }
   local encoded = json.encode( jsondata )
   pokktlibrary.NotifyPokkt("Banner_loadBanner",encoded)
   ```

7. Banner position values can be<br>

   ```
   TOP_LEFT = "1"
   TOP_CENTER = "2"
   TOP_RIGHT = "3"
   MIDDLE_LEFT = "4"
   MIDDLE_CENTER = "5"
   MIDDLE_RIGHT = "6"
   BOTTOM_LEFT = "7"
   BOTTOM_CENTER = "8"
   BOTTOM_RIGHT = "9"
   ```

8. You can remove Banner using:<br>

   ```
   pokktlibrary.NotifyPokkt("Banner_destroyBanner",“<screenName>”)
   ```

**Ad Delegates**

Ad delegates are optional, but we suggest to implement them as it will help you to keep track of the status of your ad request.

```
local function listener( event )
   print( "Received event from Pokkt Library plugin (" .. event.name .. "): ",
event.params )
end
pokktlibrary.init( listener )
```

**Pokkt ad player configuration**

Pokkt Ad player works the way App is configured at Pokkt dashboard, but we provide a way to override those settings using PokktAdPlayerViewConfig.

Application should prefer configuration provided through code by developer or what’s configured for the app in dashboard, can be controlled any time through the dashboard itself. If you want to make changes to this configuration after your app distribution, you can contact Pokkt Team to do the same for your app through admin console.

```
local adPlayerConfigJson = {
   ["backButtonDisabled"] = false,
   ["defaultSkipTime"] = 10,
   ["shouldAllowSkip"] = true,
   ["shouldAllowMute"] = true,
   ["shouldSkipConfirm"] = true,
   ["skipConfirmMessage"] = "Skipping this video will earn you NO rewards. Are you sure?",
   ["skipConfirmYesLabel"] = "Yes",
   ["skipConfirmNoLabel"] = "No",
   ["skipTimerMessage"] = "You can skip video in ## seconds",
   ["incentiveMessage"] = "more seconds only for your reward !",
   ["shouldCollectFeedback"] = true,
   ["isAudioEnabled"] = true
}
local encoded = json.encode( adPlayerConfigJson )
pokktlibrary.NotifyPokkt("setAdPlayerViewConfig",encoded)
```

Various setters for the properties that can be managed through this are:

1. Back button\
   Defines if user is allowed to close the Advertisement by clicking on back button or not.\
   Setter Name: setBackButtonDisabled(boolean backButtonDisabled)\
   Values:\
   True = Back button is disabled and user cannot close the Ad.\
   False = Back button is not disabled and user can close the Ad.
2. Default skip time\
   Defines the time after which user can skip the Ad.\
   Setter Name:setDefaultSkipTime(int defaultSkipTime)\
   Values:\
   Any Integer value.\
   Default value is 10 seconds.
3. Should allow skip\
   Defines if user is allowed to skip the Ad or not.\
   Setter Name:setShouldAllowSkip(boolean shouldAllowSkip)\
   Values:\
   True = User can skip Ad.\
   False = User can’t skip Ad.
4. Should allow mute\
   Defines if user is allowed to mute the Video Ad or not.\
   Setter Name:setShouldAllowMute(boolean shouldAllowMute)\
   Values:\
   True = User can mute video Ad.\
   False = User can’t mute video Ad.
5. Should confirm skip\
   Defines if confirmation dialog is to be shown before skipping the Ad.\
   Setter Name:ShouldConfirmSkip\
   Values:\
   True = Confirmation dialog will be shown before skipping the video.\
   False = Confirmation dialog will not be shown before skipping the video.
6. Skip confirmation message\
   Defines what confirmation message to be shown in skip dialog.\
   Setter Name:setShouldSkipConfirm(boolean shouldSkipConfirm)\
   Values:\
   Any String message.\
   Default value is “Skipping this video will earn you NO rewards. Are you sure?”.
7. Affirmative label for skip dialog\
   Defines what should be the label for affirmative button in skip dialog.\
   Setter Name:setSkipConfirmYesLabel(String skipConfirmYesLabel)\
   Values:\
   Any String message.\
   Default value is “Yes”.
8. Negative label for skip dialog\
   Defines what should be the label for affirmative button in skip dialog.\
   Setter Name:setSkipConfirmNoLabel(String skipConfirmNoLabel)\
   Values:\
   Any String message.\
   Default value is “No”.
9. Skip timer message\
   Defines message to be shown before enabling skip button. Don’t forget to add placeholder “ ## ” in your custom message.\
   This placeholder is replaced by property “Default skip time” assigned above.\
   Setter Name:setSkipTimerMessage(String skipTimerMessage)\
   Values:\
   Any String message.\
   Default value is “You can skip video in ## seconds”
10. Incentive message\
    Defines message to be shown during video progress, that after what time user will be incentivised.\
    Setter Name:setIncentiveMessage(String incentiveMessage)\
    Values:\
    Any String message\
    Default value is “more seconds only for your reward !”
11. Should collect feedback\
    Defines message to be shown during video progress, that after what time user will be incentivised.\
    Setter Name:setShouldCollectFeedback\
    Values:\
    True = If you want to collect feedback from the user for the Ad.\
    False = If you don’t want to collect feedback from the user for the Ad.
12. Audio Enabled\
    Provides a medium to disable audio for video ad without user interaction.\
    Property name:setAudioEnabled\
    Values:\
    True = If you want to play audio for video ad.\
    False = If you don’t want to play audio for video ad.

**User Details**

For better targeting of ads you can also provide user details to our SDK using.

```
local userDetailsJson = {
   ["name"] = "",
   ["age"] = "",
   ["sex"] = "",
   ["mobileNo"] = "",
   ["emailAddress"] = "",
   ["location"] = "",
   ["birthday"] = "",
   ["maritalStatus"] = "",
   ["facebookId"] = "",
   ["twitterHandle"] = "",
   ["education"] = "",
   ["nationality"] = "",
   ["employment"] = "",
   ["maturityRating"] = ""
}
local encoded = json.encode( userDetailsJson )
pokktlibrary.NotifyPokkt("setUserDetails",encoded)
```

**Pokkt Server Callback Params**

Developer can set some values in POKKT SDK that they need to be sent to their server via POKKT Server callbacks.

```
local serverCallbackJson = {
   ["Network"] = "POKKT",
   ["Integration"] = "Corona"
}
local encoded = json.encode( serverCallbackJson )
pokktlibrary.NotifyPokkt("setCallbackExtraParams",encoded)
```

**Debugging**

Other than enabling debugging for Pokkt SDK, it can also be used to:

1. Export log

   Export your log to your desired location, we generally have it in root directory of SD card, if permission for external storage is provided and in cache folder otherwise.

   ```
   pokktlibrary.NotifyPokkt("Debugging_exportLog")
   ```
2. Export log to cloud

   You can also export log to cloud.

   ```
   pokktlibrary.NotifyPokkt("Debugging_exportLogToCloud")
   ```

**Analytics**

We support various analytics in Pokkt SDK. Below is mentioned how to enable various analytics with Pokkt SDK.

**Google Analytics**

Google analytics Id can be obtained from Google dashboard.

```
local analyticsJson = {
   ["selectedAnalyticsType"] = "GOOGLE_ANALYTICS",
   ["googleAnalyticsID"] = "<Google Analytics Id>"
}
local encoded = json.encode( analyticsJson )
pokktlibrary.NotifyPokkt("Analytics_setAnalyticsDetails",encoded)
```

**Flurry Analytics**

Flurry application key can be obtained from Flurry dashboard.

```
local analyticsJson = {
   ["selectedAnalyticsType"] = "FLURRY",
   ["flurryApplicationKey"] = "<flurry Application Key>"
}
local encoded = json.encode( analyticsJson )
pokktlibrary.NotifyPokkt("Analytics_setAnalyticsDetails",encoded)
```

**MixPanel Analytics**

MixPanel project token can be obtained from MixPanel dashboard.

```
local analyticsJson = {
   ["selectedAnalyticsType"] = "MIXPANEL",
   ["flurryApplicationKey"] = "<mixpanel project token>"
}
local encoded = json.encode( analyticsJson )
pokktlibrary.NotifyPokkt("Analytics_setAnalyticsDetails",encoded)
```

**Fabric Analytics**

Analytics Id is not required in case of Fabric.

```
local analyticsJson = {
   ["selectedAnalyticsType"] = "FABRIC"
}
local encoded = json.encode( analyticsJson )
pokktlibrary.NotifyPokkt("Analytics_setAnalyticsDetails",encoded)
```

**IAP(In App Purchase)**

Call trackIAP to send any In App purchase information to Pokkt.

```
local iapJson = {
   ["productId"] = "<productId>",
   ["price"] = <price>,
   ["currencyCode"] = "<title>",
   ["title"] = "<productId>",
   ["purchaseData"] = "<purchaseData>",
   ["description"] = "<description>",
   ["purchaseSignature"] = “<purchaseSignature>”,
   ["purchaseStore"] = “<purchaseStore>”
}
local encoded = json.encode( iapJson )
pokktlibrary.NotifyPokkt("Analytics_trackIAP",encoded)
```


# Titanium

### Contents

* [1 POKKT SDK v5.0 Integration Guide for Appcelerator (Android)](broken://pages/xCtdaldTrRWLKX1VQjNJ)
  * [1.1 1. Overview:](broken://pages/xCtdaldTrRWLKX1VQjNJ)
  * [1.2 2. Configuration Steps](broken://pages/xCtdaldTrRWLKX1VQjNJ)
    * [1.2.1 Android-Manifest Changes](broken://pages/xCtdaldTrRWLKX1VQjNJ)
  * [1.3 3. Implementation Steps](broken://pages/xCtdaldTrRWLKX1VQjNJ)
    * [1.3.1 Common](broken://pages/xCtdaldTrRWLKX1VQjNJ)
    * [1.3.2 Session](broken://pages/xCtdaldTrRWLKX1VQjNJ)
    * [1.3.3 Offerwall](broken://pages/xCtdaldTrRWLKX1VQjNJ)
    * [1.3.4 Rewarded/Non-Rewarded Ads](broken://pages/xCtdaldTrRWLKX1VQjNJ)
    * [1.3.5 Export Logs](broken://pages/xCtdaldTrRWLKX1VQjNJ)
    * [1.3.6 Optional Parameters](broken://pages/xCtdaldTrRWLKX1VQjNJ)

### POKKT SDK v5.0 Integration Guide for Appcelerator (Android)

Last Update: 18th November, 2016

Download Latest Version Here with PDF Documentation v5.0.

***

#### 1. Overview:

Thank you for choosing Pokkt SDK Plugin v5.0 for Appcelerator. Pokkt SDK supports Offerwall as well as Video/Interstitial-Ad campaigns feature. This document contains all the information that is needed by you to setup the SDK with your project. Please follow these steps as per your integration requirement (Ad/Interstitial/Both). The current plugin supports mediation for various third party ad-networks. These are:

* AdColony
* AppLovon
* Chartboost
* Fyber
* InMobi
* SuperSonic
* UnityAds
* TapJoy
* Vungle
* AdMob
* Facebook
* MoPub

A separate set of documents is provided for each of these, explaining the implementation process.

Kindly note that these instructions are for Appcelerator with Titanium SDK Version 5.x and above, older versions of are not supported.

There is a sample app provided with the SDK. We will be referencing this app during the course of explanation in this document. It is suggested that you should check that app to understand the following process in detail.

Note:Please do not copy the code points from this Doc/PDF file as it may introduce unwanted characters and space in your code. Instead please refer to sample app source code provided with the sample app.

***

#### 2. Configuration Steps

There are three files that are provided and will be needed by you to use the plugin:

1. com.pokkt.titaniumandroid-android-5.0.zip
2. pokkt\_native\_extension.js

In order to add this to you project, go to Help -> Install Mobile Module,browse to com.pokkt.titaniumandroid-android-5.0.zipand press “Ok”.This should install the plugin in your project. Next, copy pokkt\_native\_extension.jsinside your Resource folder. Now the plugin should be ready for you to use with your project.

Minimum android SDK version is 14.

***

**Android-Manifest Changes**

(You can edit these inside timodule.xmlafter you install the Pokkt module.)

Permissions:

```
<!--REQUIRED PERMISSIONS FOR POKKT-->
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<!--RECOMMENDED PERMISSIONS FOR POKKT-->
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<!--OPTIONAL PERMISSIONS FOR POKKT-->
<uses-permission android:name="android.permission.WRITE_CALENDAR" />
```

Activities:

Needed for Offerwall:

```
<activity
android:name="com.app.pokktsdk.ShowOfferwallActivity"
android:configChanges="keyboard|keyboardHidden|navigation|orientation|screenLayout|uiMode|screenSize"
android:windowSoftInputMode="adjustPan" />
```

Needed for ads:

```
<activity
android:name="com.app.pokktsdk.PlayVideoCampaignActivity"
android:configChanges="keyboard|keyboardHidden|navigation|orientation|screenLayout|uiMode|screenSize"
android:screenOrientation="landscape"
android:windowSoftInputMode="stateAlwaysHidden|adjustUnspecified"/>

<activity
android:name="com.app.pokktsdk.InterstitialActivity"
android:configChanges="keyboard|keyboardHidden|navigation|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" />

<activity
android:name="com.app.pokktsdk.VPAIDActivity"
android:configChanges="keyboard|keyboardHidden|navigation|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" />
```

Broadcast Receivers:

Needed for Offerwall:

```
<receiver android:name="com.app.pokktsdk.AppInstallBroadcastReceiver">
   <intent-filter android:priority="1000" >
      <action android:name="android.intent.action.PACKAGE_INSTALL" />
      <action android:name="android.intent.action.PACKAGE_ADDED" />
      <data android:scheme="package" />
   </intent-filter>
</receiver>
```

Optional for Google Analytics:

```
<receiver
android:name="com.google.android.gms.analytics.AnalyticsReceiver"
android:enabled="true">
   <intent-filter>
      <action android:name="com.google.android.gms.analytics.ANALYTICS_DISPATCH" />
   </intent-filter>
</receiver>
```

Meta-Data tags:

Needed for Offerwall:

```
<meta-data
android:name="offerwallDelegate"
android:value="com.pokkt.plugin.common.PokktOfferwallDelegate" />
Required for Google Play Services: Add Following meta tag for google play services (Goole play
services is required and should be part of your project, if not, please refer
http://developer.android.com/google/play-services/setup.html)
<meta-data android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
```

Services:

Optional for In-App Notifications:

```
<service
   android:name="com.google.android.gms.analytics.AnalyticsService"
   android:enabled="true"
   android:exported="false" />
```

***

#### 3. Implementation Steps

**Common**

1. For all invocation of Pokkt SDK developer will make use of methods available in pokktNativeExtension.jsfile using PokktExtensionobject.
2. Create a PokktConfigobject using creatPokktConfig()method, then provide applicationIdand securityKey, these are must for initializing Pokkt.
3. Once you have your pokktConfig ready, invoke initPokktmethod before you invoke any other methods from the PokktExtension. This does not apply to session related methods namely startSession and endSessionand few utility methods.
4. In order to know whether Pokkt is initialized or not, listen to ‘PokktInitialised’ event, if the provided Boolean parameter is true only then move ahead with other operations.
5. If you are doing server to server integration with Pokkt you can also set thirdPartyUserIdin pokktConfigobject.
6. Apart from above mentioned parameters you can assign additional ones based on your integration type. Refer to Offerwall and Video sections below.
7. While in development please call PokktExtension.setDebug(true) to see Pokkt debug logs and toast messages. Make sure to change this to falsefor production build.
8. Call PokktExtension.notifyAppInstall()to log your application installation information with Pokkt.
9. Call PokktExtension.trackIAP(details)to log any in-app purchase details with Pokkt. Accepted values are (all caps): “NONE”, “GOOGLE”, “IOS”, “AMAZON”.
10. To use google analytics, please set selectedAnalyticsType to “GOOGLE\_ANALYTICS” and googleAnalyticsIDin pokktConfig.
11. To use flurry analytics please set selectedAnalyticsTypeto “FLURRY” and flurryApplicationKeyin pokktConfig.
12. To use mix panel analytics please set selectedAnalyticsTypeto “MIXPANEL” and mixPanelProjectTokenin pokktConfig.
13. To use mix panel analytics please set selectedAnalyticsTypeto “FABRIC”.

**Session**

1. Invoke PokktExtension.startSession()at the start of his application and once only.
2. You should callPokktExtension.endSession()at the end of his application and once only.

**Offerwall**

1. In pokketConfigfor Offerwall you can set two additional parameters which are setOfferWallAssetValueand setCloseOnSuccessFlag.Setting of setOfferWallAssetValueis only required if you only want to show campaign of certain value on the Offerwall. setCloseOnSuccessFlagis required if you wish to auto-close the Offerwall after user has completed one offer. It’s default value is false.
2. Make sure to call initPokktbefore calling another method for Offerwall in PokktExtension.
3. To show Offerwall you can call PokktExtension.getCoins(pokktConfig).
4. In the screen or activity where you have button to show Offerwall, in that activity onResumeyou should call PokktExtension.getPendingCoins(pokktConfig) so that you get a callback to award points to the user after he has come back to your game after finishing with Offerwall. You will get a callback for this call in your IOfferwallDelegate implementation class in method EarnedCoinsor CoinResponseFailed.
5. You can call PokktExtension.checkCampaignAvailable(pokktConfig)to check whether the campaigns are available before showing Offerwall button to user.
6. Following are offerwall-related events, you can refer to the provided sample-code to understand the ideal implementation on how to consume these:<br>
   * CoinResponse
   * CoinResponseWithTransId
   * CoinResponseFailed
   * CampaignAvailability
   * OfferwallClosed

**Rewarded/Non-Rewarded Ads**

1. You will have to configure an adConfigobject to request for any ad to be displayed. Get one using createAdConfig()method. It also provides options for customizing your ad-screen. It is recommended to have different adConfigobjects for each screens. Followings are the values that you can set with adConfig:<br>
   * screenName (Required): This controls the placement of ads and can be created on Pokkt Dashboard.
   * adFormat (Required): Requested ad format. SDK supports Video, Interstitial and banner adFormats. Default is Video ad format.
   * isRewarded (Required): Requested ad type. Ad gratification will happen only for rewarded ads.
   * backButtonDisabled:Disable ‘back’ button press while on ad-screen.
   * defaultSkipTime:If ad-skipping is allowed, this provides the seconds it will wait before the skip button appears.
   * shouldAllowSkip:Whether skipping-ad is allowed or not. If set to ‘false’, user will be forced to watch the ad till it finishes.
   * shouldAllowMute:Whether to allow sound-mute while on ad-screen, it controls the ‘mute’ button. Cannot contains whitespaces and only special characters allowed are hyphens (-) and underscores (\_).
   * shouldConfirmSkip:Controls whether to show the skip-confirmation dialog box. If set to ‘false’, the ad will be silently closed without prompting for confirmation
   * skipConfirmMessage: The message that will appear on skip-confirmation dialog box.
   * skipConfirmYesLabel:‘Yes’ Label of skip-confirmation dialog box.
   * skipConfirmNoLabel: ‘No’ Label of skip-confirmation dialog box.
   * skipTimerMessage: The message on countdown-timer before the skip button appears. The message must contain a ‘##’-placeholder to show timer value.
   * incentiveMessage:If set, the message will be displayed while prompting user to watch the ad for certain time before it can be rewarded.
2. Invoke PokktExtension.cacheAd(adConfig)to cache the ad on device. Cached-ads provide better user experience than streaming-ads
3. You can call PokktExtension.checkAdAvailability(adConfig) to check if the adcampaigns are available or not. The result will be notified via 'AdAvailability'.
4. Invoke PokktExtension.showAd(adConfig) to show ad.
5. Following are ad-related events, you can refer to the provided sample-code to understand the ideal implementation on how to consume these:<br>
   * AdCachingCompleted
   * AdCachingFailed
   * AdClosed
   * AdCompleted
   * AdDisplayed
   * AdSkipped
   * AdGratified
   * AdAvailability
6. Reward user ONLY from the 'AdGratified' event.

**Export Logs**

1. Developer should call PokktExtension.exportLog() to export the Pokkt SDK logs to folder of your choice.
2. This API shows a folder chooser dialog where user can choose a particular folder.
3. User can also create a new folder where user wants to export the logs.

**Optional Parameters**

PokktConfig also has provision for developers to provide extra user data available with them to Pokkt. We currently support following data points: Name, Age, Sex, MobileNo, EmailAddress, Location, Birthday, MaritalStatus, FacebookId, TwitterHandle, Education, Nationality, EmploymentandMaturityRating.


# Unreal Engine

### POKKT SDK v7.6.0 Integration Steps for Unreal Engine v4.15+

Download Latest Version Here

Last Update: 22nd November, 2019

***

1. Ensure that the project is a C++ project. A pure blueprint project is not supported at this moment.
2. Put the “PokktAds” folder inside “Plugins” folder (create one if not there already) of your project directory.

   Error creating thumbnail: File missing
3. Restart the Editor to force-build the plugin and to open your project. Once successfully built, PokktAds Plugin should have been added to your project.

   Error creating thumbnail: File missing
4. Open a desired Actor in blueprint editor and add “Pokkt Ads” component to it. You should be able to notice all the SDK events. You can then subscribe to these events.

   Error creating thumbnail: File missing
5. You can enable on Pokkt SDK debug mode with “Should Debug” function, make sure to set it to false before final release.
6. Now, first and foremost, ensure that you have set Pokkt configuration using “Set Pokkt Config” function. Any other calls to SDK’s APIs will fail if this is not set.

   Error creating thumbnail: File missing
7. Set *GDPR consent* in Pokkt SDK. This must be called before calling any ad related API. Developers/Publishers must get the consent from user. For more information on GDPR please refer <https://www.eugdpr.org/> and <https://www.eugdpr.org/gdprfaqs>. html. This API can again be used by publishers to revoke the consent. If this API is not called or invalid data provided, then SDK will access the user’s personal data for ad targeting.\
   GDPR Step 1:

   Error creating thumbnail: File missing

   GDPR Step 2:

   Error creating thumbnail: File missing
8. You are now ready to cache/show Pokkt Ads. Simply make call to required API functions.

   Error creating thumbnail: File missing

   Error creating thumbnail: File missing


# React

### Contents

* [1 POKKT SDK v8.1.0 Integration Guide for React](broken://pages/kFO7vVsCiTzyRYzS3EeP)
  * [1.1 Overview](broken://pages/kFO7vVsCiTzyRYzS3EeP)
  * [1.2 Project Configuration](broken://pages/kFO7vVsCiTzyRYzS3EeP)
    * [1.2.1 Android](broken://pages/kFO7vVsCiTzyRYzS3EeP)
      * [1.2.1.1 Dependencies](broken://pages/kFO7vVsCiTzyRYzS3EeP)
      * [1.2.1.2 Manifest](broken://pages/kFO7vVsCiTzyRYzS3EeP)
      * [1.2.1.3 Permissions Declarations](broken://pages/kFO7vVsCiTzyRYzS3EeP)
      * [1.2.1.4 Activity Declaration](broken://pages/kFO7vVsCiTzyRYzS3EeP)
    * [1.2.2 iOS](broken://pages/kFO7vVsCiTzyRYzS3EeP)
      * [1.2.2.1 Dependencies](broken://pages/kFO7vVsCiTzyRYzS3EeP)
      * [1.2.2.2 Framework](broken://pages/kFO7vVsCiTzyRYzS3EeP)
      * [1.2.2.3 Info.plist](broken://pages/kFO7vVsCiTzyRYzS3EeP)
  * [1.3 Implementation Steps](broken://pages/kFO7vVsCiTzyRYzS3EeP)
    * [1.3.1 Android SDK Configuration](broken://pages/kFO7vVsCiTzyRYzS3EeP)
    * [1.3.2 Common Configuration](broken://pages/kFO7vVsCiTzyRYzS3EeP)
    * [1.3.3 Ad Types](broken://pages/kFO7vVsCiTzyRYzS3EeP)
      * [1.3.3.1 FullScreen Ads](broken://pages/kFO7vVsCiTzyRYzS3EeP)
      * [1.3.3.2 Banner](broken://pages/kFO7vVsCiTzyRYzS3EeP)
    * [1.3.4 Ad Delegates](broken://pages/kFO7vVsCiTzyRYzS3EeP)
    * [1.3.5 Pokkt ad player configuration](broken://pages/kFO7vVsCiTzyRYzS3EeP)
    * [1.3.6 User Details](broken://pages/kFO7vVsCiTzyRYzS3EeP)
    * [1.3.7 Pokkt Server Callback Params](broken://pages/kFO7vVsCiTzyRYzS3EeP)
    * [1.3.8 Debugging](broken://pages/kFO7vVsCiTzyRYzS3EeP)

### POKKT SDK v8.1.0 Integration Guide for React

Last Update: 15th November, 2021

Download Latest Version Here.

***

#### Overview

Thank you for choosing Pokkt SDK for React. This document contains all the information required to setup the SDK with your project. We also support mediation for various third party networks. To know the supported third party networks and their integration process go to mediation section on our Pokkt site. Before implementing plugins it is mandatory to go through project configuration and implementation steps, as these sections contain mandatory steps for basic SDK integration and are followed by every plugin.

minSdkVersion supported is 11.

ScreenId: This one parameter is accepted by almost all API’s of Pokkt SDK. This controls the placement of ads and can be created on Pokkt Dashboard. We will be referencing PokktReactDemo app provided with SDK during the course of explanation in this document. We suggest you go through the sample app for better understanding.

***

#### Project Configuration

**Android**

In the package downloaded above you will find:

1. Docs:

   Contains step wise step integration for SDK.
2. PokktReactDemo app code.
3. SDK + Plugin:
   1. JAR
      * PokktSDK\_v8.1.0.jar
      * pokktsdk360ext.jar
      * PAPReact.jar
   2. PokktAds.js
   3. Dependencies
      * google-play-services.jar

minSdkVersionsupported is 11.

**Dependencies**

* Extract the provided file "react-plugin-pokkt.zip" into a directory.
* Copy PokktAds.js to React app folder parallel to app.js.
* Add Pokkt dependencies like PokktSDK\_v8.1.0.jar , pokktsdk360ext.jar and PAPReact.jar to your project.
* We expect Google play services integrated in project, although it is optional but we recommend you to integrate it, as it is required to fetch AdvertisingID for device,which is useful to deliver targeted advertising to Android users.

**Manifest**

**Permissions Declarations**

Add the following mandatory permissions to the android manifest of the generated studio project.

1. Mandatory permissions.<br>

   ```
   <uses-permission android:name="android.permission.INTERNET" />
   <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
   ```

   * android.permission.INTERNET = Required for SDK communication with server.
   * android.permission.ACCESS\_NETWORK\_STATE = Required to detect changes in network, like if WIFI is available or not.

**Activity Declaration**

We have already added the following activity in your AndroidManifest for Pokkt SDK integration via plugin.xml

```
<activity
android:name="com.pokkt.sdk.PokktAdActivity"
android:configChanges="keyboard|keyboardHidden|navigation|
orientation|screenLayout|uiMode|screenSize|smallestScreenSize"
android:hardwareAccelerated="true"
android:label=”Pokkt”
android:screenOrientation="landscape"
android:windowSoftInputMode="stateAlwaysHidden|adjustUnspecified" />
```

You can change the android:screenOrientation="landscape"to of your choice, the way you want to display the ads.

**iOS**

In the package downloaded above you will find:

1. Docs:

   Contains documentations for step wise step integration for SDK.
2. PokktSDK\_v8.1.0:
   1. PokktSDK.framework
   2. PokktAds.js
   3. PokktNativeExtension.mm

**Dependencies**

* Extract the provided file "react-plugin-pokkt.zip" into a directory. Link the pokkt library in the xcode project.
* Copy PokktAds.js to React app folder parallel to app.js
* Copy PokktNativeExtension.mm to your Xcode project.

**Framework**

```
CoreData.framework
Foundation.framework
MediaPlayer.framework
SystemConfiguration.framework
UIKit.framework
CoreTelephony.framework
EventKit.framework
AdSupport.framework
CoreGraphics.framework
CoreMotion.framework
MessageUI.framework
EventKitUI.framework
CoreLocation.framework
AVFoundation.framework
libc++.tbd
```

**Info.plist**

Add the below exceptions to your application info.plist.

```
<key>NSAppTransportSecurity</key>
   <dict>
      <key>NSExceptionDomains</key>
      <dict>
        <key>pokkt.com</key>
        <dict>
           <key>NSIncludesSubdomains</key>
           <true/>
           <key>NSExceptionAllowsInsecureHTTPLoads</key>
           <true/>
           <key>NSExceptionRequiresForwardSecrecy</key>
           <false/>
           <key>NSExceptionMinimumTLSVersion</key>
           <string>TLSv1.2</string>
           <key>NSThirdPartyExceptionAllowsInsecureHTTPLoads</key>
           <false/>
           <key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
           <true/>
           <key>NSThirdPartyExceptionMinimumTLSVersion</key>
           <string>TLSv1.2</string>
           <key>NSRequiresCertificateTransparency</key>
           <false/>
        </dict>
        <key>cloudfront.net</key>
        <dict>
           <key>NSIncludesSubdomains</key>
           <true/>
           <key>NSExceptionAllowsInsecureHTTPLoads</key>
           <true/>
           <key>NSExceptionRequiresForwardSecrecy</key>
           <false/>
           <key>NSExceptionMinimumTLSVersion</key>
           <string>TLSv1.2</string>
           <key>NSThirdPartyExceptionAllowsInsecureHTTPLoads</key>
           <false/>
           <key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
           <true/>
           <key>NSThirdPartyExceptionMinimumTLSVersion</key>
           <string>TLSv1.2</string>
           <key>NSRequiresCertificateTransparency</key>
           <false/>
        </dict>
      </dict>
   </dict>
```

***

#### Implementation Steps

**Android SDK Configuration**

1. Add PokktPluginPackage in your Application which implements ReactApplication.<br>

   ```
   @Override
   protected List<ReactPackage> getPackages() {
   return Arrays.<ReactPackage>asList(new PokktPluginPackage());
   }
   ```

**Common Configuration**

1. For all invocation of Pokkt SDK, developer will make use of methods available in PokktAds.js<br>

   ```
   //Add this to js file where you are using pokkt plugin.
   import { PokktExtension } from './PokktAds';//Step 1 <Path to PokktAds.js/PokktAds>
   import { DeviceEventEmitter,NativeEventEmitter } from ‘react-native'; //Step 2 For delegates.
   var pe = window.plugins.pokktExtension; //Step 3 declare the pokkt extension
   var emitter;//Step 4 declare the delegate
   ```
2. Set Application Id and Security key in Pokkt SDK. You can get it from Pokkt dashboard from your account. These are unique per app registered.<br>

   ```
   pe.setPokktConfig(<Pokkt Application ID>,<Pokkt Security Key>);
   ```
3. Set GDPR consent in Pokkt SDK. This must be called before calling any ad related API. Developers/Publishers must get the consent from user. For more information on GDPR please refer <https://www.eugdpr.org/> and <https://www.eugdpr.org/gdpr-faqs.html>. This API can again be used by publishers to revoke the consent. If this API is not called or invalid data provided then SDK will access the users personal data for ad targeting.

   ```
   pe.setDataAccessConsent(<GDPRApplicable>,<GDPRConsentAvailable> );
   //GDPRApplicable true if GDPR is applicable.
   //GDPRConsentAvailable true if user has given consent to use personal details for ad targeting.
   ```
4. If you are using server to server integration with Pokkt, you can also set Third Party UserId in PokktAds.<br>

   ```
   pe.setThirdPartyUserId("<Third party user Id>");
   ```
5. When your application is under development and if you want to see Pokkt logs and other informatory messages, you can enable it by setting setDebug to true. Make sure to disable debugging before release.<br>

   ```
   pe.setDebug(<true>);
   ```

**Ad Types**

**FullScreen Ads**

* FullScreen Ads are of two types : Video and Interstitial.

• FullScreen ads can be rewarded or non-rewarded. • FullScreen properties can be configured from the Pokkt dashboard. • You can either cache the ad in advance or directly call show for it. • We suggest you cache the ad in advance so as to give seamless play behaviour, In other case it will stream the video which may lead to unnecessary buffering delays depending on the network connection.

1. To cache fullscreen ad call:<br>

   ```
   pe.cacheAd(“<ScreenId>”);
   ```

2. To show fullscreen ad call:<br>

   ```
   pe.showAd(“<ScreenId>");
   ```

3. To check if video ad is cached:<br>

   ```
   pe.isAdCached(<ScreenId>, (result) => {pe.showToast("Ad is Cached : " + result});
   ```

4. Load banner<br>

   ```
   pe.showAd(<screenId>,<BannerPosition>);
   ```

5. Banner position values can be\</br>
   * TOP\_LEFT = "1"
   * TOP\_CENTER = "2"
   * TOP\_RIGHT = "3"
   * MIDDLE\_LEFT = "4"
   * MIDDLE\_CENTER = "5"
   * MIDDLE\_RIGHT = "6"
   * BOTTOM\_LEFT = "7"
   * BOTTOM\_CENTER = "8"
   * BOTTOM\_RIGHT = "9"

6. You can remove Banner using:<br>

   ```
   pe.destroyBanner(“<screenId>”);
   ```

**Ad Delegates**

Ad delegates are optional, but we suggest to implement them as it will help you to keep track of the status of your ad request. Register the listener in componentWillMount and remove the listener in componentWillUnmount.

```
const { PokktPluginEvent } = NativeModules;
emitter = Platform.select({ios: new NativeEventEmitter(PokktPluginEvent),
android: DeviceEventEmitter});

//FullScreen Ads delegates
emitter.addListener('AdCachingResult', <adCachingCompletedCallback>);
emitter.addListener('AdDisplayedResult', <adDisplayedResultCallback>);
emitter.addListener('AdClicked', <adClickedCallback>);
emitter.addListener(‘AdClosed', <adClosedCallback>);
emitter.addListener('AdGratified', <adGratifiedCallback>);

//Banner delegates
emitter.addListener('AdDisplayedResult', <bannerLoadedCallback>);
emitter.addListener('AdClicked', <bannerClickedCallback>); 
```

**Pokkt ad player configuration**

Pokkt Ad player works the way App is configured at Pokkt dashboard, but we provide a way to override those settings using PokktAdPlayerViewConfig.

Application should prefer configuration provided through code by developer or what’s configured for the app in dashboard, can be controlled any time through the dashboard itself. If you want to make changes to this configuration after your app distribution, you can contact Pokkt Teamto do the same for your app through admin console.

```
var adPlayerViewConfig = pe.createAdPlayerViewConfig();
// set properties values to adPlayerViewConfig
pe.setAdPlayerViewConfig(JSON.stringify(adPlayerViewConfig)); 
```

Various setters for the properties that can be managed through this are:

1. Back button\
   Defines if user is allowed to close the Advertisement by clicking on back button or not.\
   Setter Name: setBackButtonDisabled(boolean backButtonDisabled)\
   Values:\
   True = Back button is disabled and user cannot close the Ad.\
   False = Back button is not disabled and user can close the Ad.
2. Default skip time\
   Defines the time after which user can skip the Ad.\
   Setter Name:setDefaultSkipTime(int defaultSkipTime)\
   Values:\
   Any Integer value.\
   Default value is 10 seconds.
3. Should allow skip\
   Defines if user is allowed to skip the Ad or not.\
   Setter Name:setShouldAllowSkip(boolean shouldAllowSkip)\
   Values:\
   True = User can skip Ad.\
   False = User can’t skip Ad.
4. Should allow mute\
   Defines if user is allowed to mute the Video Ad or not.\
   Setter Name:setShouldAllowMute(boolean shouldAllowMute)\
   Values:\
   True = User can mute video Ad.\
   False = User can’t mute video Ad.
5. Should confirm skip\
   Defines if confirmation dialog is to be shown before skipping the Ad.\
   Setter Name:ShouldConfirmSkip\
   Values:\
   True = Confirmation dialog will be shown before skipping the video.\
   False = Confirmation dialog will not be shown before skipping the video.
6. Skip confirmation message\
   Defines what confirmation message to be shown in skip dialog.\
   Setter Name:setShouldSkipConfirm(boolean shouldSkipConfirm)\
   Values:\
   Any String message.\
   Default value is “Skipping this video will earn you NO rewards. Are you sure?”.
7. Affirmative label for skip dialog\
   Defines what should be the label for affirmative button in skip dialog.\
   Setter Name:setSkipConfirmYesLabel(String skipConfirmYesLabel)\
   Values:\
   Any String message.\
   Default value is “Yes”.
8. Negative label for skip dialog\
   Defines what should be the label for affirmative button in skip dialog.\
   Setter Name:setSkipConfirmNoLabel(String skipConfirmNoLabel)\
   Values:\
   Any String message.\
   Default value is “No”.
9. Skip timer message\
   Defines message to be shown before enabling skip button. Don’t forget to add placeholder “ ## ” in your custom message.\
   This placeholder is replaced by property “Default skip time” assigned above.\
   Setter Name:setSkipTimerMessage(String skipTimerMessage)\
   Values:\
   Any String message.\
   Default value is “You can skip video in ## seconds”
10. Incentive message\
    Defines message to be shown during video progress, that after what time user will be incentivised.\
    Setter Name:setIncentiveMessage(String incentiveMessage)\
    Values:\
    Any String message\
    Default value is “more seconds only for your reward !”
11. Should collect feedback\
    Defines message to be shown during video progress, that after what time user will be incentivised.\
    Setter Name:setShouldCollectFeedback\
    Values:\
    True = If you want to collect feedback from the user for the Ad.\
    False = If you don’t want to collect feedback from the user for the Ad.
12. Audio Enabled\
    Provides a medium to disable audio for video ad without user interaction.\
    Property name:setAudioEnabled\
    Values:\
    True = If you want to play audio for video ad.\
    False = If you don’t want to play audio for video ad.

**User Details**

For better targeting of ads you can also provide user details to our SDK using.

```
var pokktUserDetails = pe.createPokktUserDetails();
pokktUserDetails.Name = "";
pokktUserDetails.Age = "";
pokktUserDetails.Sex = "";
pokktUserDetails.MobileNo = "";
pokktUserDetails.EmailAddress = "";
pokktUserDetails.Location = "";
pokktUserDetails.Birthday = "";
pokktUserDetails.MaritalStatus = "";
pokktUserDetails.FacebookId = "";
pokktUserDetails.TwitterHandle = "";
pokktUserDetails.Education = "";
pokktUserDetails.Nationality = "";
pokktUserDetails.Employment = "";
pokktUserDetails.MaturityRating = "";
pe.setUserDetails(pokktUserDetails);
```

**Pokkt Server Callback Params**

Developer can set some values in POKKT SDK that they need to be sent to their server via POKKT Server callbacks.

```
var extraParams = {};
//set your values here. eg: network name can be given as pokkt
extraParams.Network = "POKKT";
pe.setCallbackExtraParams(JSON.stringify(extraParams));
```

**Debugging**

Other than enabling debugging for Pokkt SDK, it can also be used to:

1. Export log

   Export your log to your desired location, we generally have it in root directory of SD card, if permission for external storage is provided and in cache folder otherwise.

   ```
   pe.exportLog();
   ```
2. Export log to cloud

   You can also export log to cloud.

   ```
   pe.exportLogToCloud();
   ```


# DSP Integration Guide

Last Update: September 9th, 2024


# POKKT DSP

Last Update: September 9th, 2024

## Content

Overview

1. [Overview](#overview)
2. [Bid Request Specification](#bid-request-specification)
3. [Bid Response Specification](#bid-response-specification)
4. [Sample Bid Request & Response](#sample-request-and-response)
   1. [Video RTB Request](#video-rtb-request)
   2. [Video RTB Response](#video-rtb-response)
   3. [Banner/Interstitial RTB Request](#banner-interstitial-rtb-request)
   4. [Banner/Interstitial RTB Response](#banner-interstitial-rtb-response)

***

## Overview

* POKKT supports the following OpenRTB versions:
  * [2.5](https://www.iab.com/wp-content/uploads/2016/03/OpenRTB-API-Specification-Version-2-5-FINAL.pdf)
  * [2.6](https://iabtechlab.com/wp-content/uploads/2022/04/OpenRTB-2-6_FINAL.pdf)
* POKKT does not support every field in the OpenRTB specification, and nuances can apply. Sections of this document contain information and recommendations specific to the POKKT implementation. Some fields are not supported, but are still parsed. These fields must be formatted correctly but will not affect the bidding outcome.
* All OpenRTB POST requests should be directed to the following endpoint based on your region:

  * **Global \[Recommended]:**  <https://vdo.pokkt.com/api/rtb/>\<yourappid>
  * **APAC Region:** <https://sg-vdo.pokkt.com/api/rtb/>\<yourappid>
  * **US Region:** <https://us-vdo.pokkt.com/api/rtb/>\<yourappid>

  Note: Please reach out to your account manager for App ID details.

***

## Bid request specification <a href="#bid-request-specification" id="bid-request-specification"></a>

* A bid request is an HTTP Post request with a content type of `application/json` and a body of a bid request object.
* The corresponding response is either an HTTP 204 with no body for a no-bid, or an HTTP 200 with a json body of a bid response.
* All OpenRTB calls to POKKT DSP will have “x-openrtb-version”header mentioning protocol version as per OpenRTB specifications.
* POKKT DSP supports Video/Banner/interstitial ads through the API.
* All request to POKKT DSP can currently have only one impression object as we do not support multiple impressions object per request as of now.
* VPAID is not supported
* The bid request objects are recommended and affects the bidding,
  * Supply Chain and nodes
  * User
  * Device
* The following bid request objects are not supported by POKKT,
  * Audio
  * Native
  * Deal
  * PMP

***

## **Bid response specification**

* In all bid responses across ad types, POKKT DSP will provide the following parameters: id, adid, cid, adm, price, and crid, optionally.
* For video ads, the bid response will follow the VAST 2.0 format within the adm attribute.&#x20;
* For banner and interstitial ads, the adm attribute will contain the creative in HTML format.
* Additionally, the bid win URL will be included in the response, incorporating the ${AUCTION\_PRICE} macro. Please note that we currently do not support encoding for this macro.

***

## Sample Request & Response

Bid request & response sample is provided below for reference,

***

### Video RTB Request&#x20;

```json
{
  "id": "810839a6-5eaf-4b34-8110-c29810faad3f-9582-bDnt5nwfF",
  "imp": [{
    "id": "1",
    "video": {
      "mimes": ["video/mp4"],
      "linearity": 1,
      "minduration": 5,
      "maxduration": 120,
      "w": 480,
      "h": 320,
      "sequence": 1,
      "battr": [1, 3, 5, 8, 9, 13],
      "pos": 7,
      "companionad": [{
        "w": 480,
        "h": 320,
        "battr": [1, 3, 5, 6, 8, 9],
        "api": [5, 6, 7],
        "vcm": true
      }],
      "api": [7],
      "companiontype": [1, 2],
      "protocols": [2, 3, 5, 6],
      "skip": false,
      "placement": 5,
      "plcmt": 3
    },
    "displaymanager": "unity sdk",
    "displaymanagerver": "41000",
    "instl": true,
    "tagid": "es.socialpoint.MonsterLegends-vast",
    "bidfloor": 0.01,
    "secure": true,
    "rwdd": true
  }],
  "app": {
    "id": "18259",
    "name": "Monster Legends",
    "bundle": "es.socialpoint.MonsterLegends",
    "publisher": {
      "id": "13184",
      "name": "Social Point"
    },
    "storeurl": "https://play.google.com/store/apps/details?id\u003des.socialpoint.MonsterLegends"
  },
  "device": {
    "ua": "Mozilla/5.0 (Linux; Android 10; RMX2020 Build/QP1A.190711.020; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/126.0.2478.134 Mobile Safari/537.36",
    "ip": "49.145.253.188",
    "geo": {
      "lat": 10.3099,
      "lon": 123.893,
      "country": "PHL",
      "region": "07",
      "city": "Cebu City",
      "zip": "6000",
      "type": 2,
      "utcoffset": 480
    },
    "carrier": "51566",
    "language": "en",
    "make": "realme",
    "model": "RMX2020",
    "os": "android",
    "osv": "10.0",
    "connectiontype": 2,
    "devicetype": 4,
    "ifa": "0fa94627-9b47-ss9f-603c8d",
    "hwv": "realme RMX2020",
    "w": 1456,
    "h": 720,
    "pxratio": 2.0
  },
  "at": 1,
  "tmax": 1500,
  "bcat": ["IAB11-2", "IAB11-1", "IAB11-4", "IAB11", "IAB9-7", "IAB23-9", "IAB23", "IAB23-4", "IAB23-3", "IAB23-10", "IAB23-2", "IAB23-8", "IAB23-7", "IAB23-6", "IAB23-1", "IAB23-5", "IAB8-5", "IAB9-9", "IAB8-18", "IAB14-1", "IAB14-7", "IAB14-4"],
  "regs": {
  },
  "source": {
    "fd": true,
    "pchain": "96cabafsss37a7:13184",
    "source": {
      "schain": {
        "complete": true,
        "ver": "1.0",
        "nodes": [{
          "asi": "unity.com",
          "sid": "13184",
          "rid": "810839a6-5eaf-4b34-8110-c29810faad3f-9582-bAjEi9wfF",
          "hp": true
        }]
      },
      "omidpn": "Unity3d",
      "omidpv": "1.3.0"
    }
  }
}
```

***

### Video RTB Response

```json
{
    "id": "810839a6-5eaf-4b34-8110-c29810faad3f-9582-esfsgEi9wfF",
    "seatbid": [
        {
            "bid": [
                {
                    "id": "9af5bda0-eef4-41cb-9142-4f81",
                    "impid": "1",
                    "price": 1.5,
                    "adid": "34410",
                    "nurl": "https://t.appads.in/api/winbid?crid=58099952421242&pt_fp=0.01&apid=bf5d9c029400934802f4c4f119dabc0f&lt=0&pt_bp=1.5000000000000002&oid=34410&isrtb=1&ht=320&tstp=1721026660363&tid=9af5bda0-eef4-41cb-9142-4f11bbb07281&chid=7977&wopid=a3690642-2b90-4384-959a-a66bd9d97d51&eap=5.0&cntry=philippines&tkn=d33d0a27a22ec98386807873ad0595ce&exdi=PM-WJNU-0659&bundle=es.socialpoint.MonsterLegends&wot=4&wt=480&did=0fa94627-9b47-4a43-b99f-603c141b6a8d&ap=${AUCTION_PRICE}&aid=${AUCTION_ID}&event=41&",
                    "adm": "<?xml version=\"1.0\" ?><VAST version=\"3.0\"><Ad id=\"590583710\"><InLine><AdSystem>DBM</AdSystem><AdTitle>In-Stream Video</AdTitle><Error><![CDATA[https://pagead2.googlesyndication.com/pagead/gen_204?id=notify&exchange=pubmatic&creative_id=580999522&creative_type=118&usl_id=93481632261&errorcode=[ERRORCODE]&asseturi=[ASSETURI]&ord=[CACHEBUSTING]&offset=[CONTENTPLAYHEAD]&d=APEucNXnHrKwFg4xRcXT-65SuDPGtmG5vB_dv_hcwRXyd9cn8uC_Bx3c_p7d94d8ptQPS8xvv-MgrLGKk-JnvWlCygvd44OkIw]]></Error><Impression><![CDATA[https://googleads4.g.doubleclick.net/pcs/view?xai=AKAOjstcfzL6z-hjG7ZCNTOBDVpNbfjHSxW4S_DcFxvOhmfn43nGeMY_5lRA_pIwPEA7q51yf98OKp6U9pFDSzt8XpoB0qplf6PL5c9bXTghZaiuzl36-j2eTWeaepr6G1_cUuh2tThZ_NU98qhGw0_XJEK0sWzNjc_Abk4s-ZLvkPDJtgMKoej1XzeOX-j3vp9eIoq-8c8J6MErfFXdWns6ms0Z2Y-eAadGhF2Xcp3K1P52LvalPnrKKfEEsgvkqV_V0M76DwMksp_x8OzGIsKdylGo8cBzOqMXL8k4EwMnFNPvqEyXFOsew9kN2xmzJjH9HKHevxM4UeLXC1vHQ726kjEamGuM3XFCVksAO35tt-_SezcTve9GGHCkmBR6nYYbt503YHWo5zkz_pTQVaApoxL5dtPZZRdgIBWNVOsvnxgz5-TUF1qQb3fhq1WiO427KXuFIN1fsxHodUO3cgoCENWWtTcS0v9arrpLueTWXQC0s8X9P2QeY7o6u-tpzaSu9GvfquCO4EeOBNOPb81P9as_H7NmklHI_FqfWsQx3WoK_o1UNXZSCWeYDNHTwrPvsL-4oovwnOhrEymJnlzdndxFqIhz4dzZ936l57Z3iaHqpSU2j1E9pUvCKQGYwkd8aF6X3lGm_h65aRBL8eYOwDEJkgC_zMaW5tjXLuYWwXPjr5byGl_9ed1dLBhR60fXmfwkPfEZ1GPI-bnpuqIxBWxEl6ouNIWNd-iG0jELQxi6xj0WLwoTiuFLhe0l0Kb5V6CSoC_D3-sbnf-Yi3am7EWRmB-IsmLDVGRQ2Yman1s_dQ9PKth9FqCAVhxDMZXVPhyBT9Aq-2RmV1QEgHu9qUcuPO5rgAJG5XAkJ_I9OMiCCiL4-gb6hF4gtPNDI_9qyeL7UHKwYyEGsv_wGZ4KEYKdhPrqZlZMlo6EO7_ZZ0hD7cbimdGFNw4Dp8wxzH6L4CcWZdkLHFbKV4IHfjb7stNx128Ey0oGp8AK6NJXBxH9WCQC7dkwYF--ZIealTT-uOmQ5wUO_1cxtkKMaDpVmY3eymWWVR0vrSD66A0NnrV-LP33lmZCNRio7K81bIszgeqIj8fHjAezH96lONwcyrnEmGvZIzZ915g_D5jKaiowKdq2YLqcr8a0BGjVnkFVwahCc1CzvrBUr2JcKpBZ3sPcrvso4eoJ-PAZS9wRjRsGwUmNtcJ4g72y-XulBjGhgoHKv2GI0Ix37mNGx83H0Os0nK0Cg5q3SMsg0BxRwjg4165ZvxX57Lb_B8iTbABf8TjuWli9NO5XYGZ3nmr-iCthO5wIYaN9qCIyMqNn9btmsn7P1fyPh9M-2JhcdUF6fOkxeUFob-6FnkHIa4BeWYNbN5BaacNgyzCfR_K-y8_mqlmtDLvi4EMZmZQRJp2BRRrya6mR_6jPPLyt8tKtXlp-1hwypjNgpSlvL-nZD1aV7kIjT_MpzO2daB6LyuvG5jeLMQE93uVP6ah4JcOJT42mzU3kypcT_jMu2zr_09M2riXlh3Pes-xvcaJ66CzEoQlVDaX9vWc8&sai=AMfl-YTLKG1xw_QNcfQEHC8FfPgOGXvtRw17W5qDg5LszBDlDxjeba4FtHyXuum1_BA-1fMUefIq9mQWpMUl93nm2U2C2trN-YXK5Kerr2kh8bHLvz2CbbiaoRAD5coShyyHWNx3fF8jA14BNiAnEHESYkaudjo_rAeVBmDESvGuIy1njYZgi8I&sig=Cg0ArKJSzHtuVjO8-ritEAE&uach_m=%5BUACH%5D&pr=6:5.000000&fbs_aeid=%5Bgw_fbsaeid%5D&urlfix=1&adurl=]]></Impression><Impression><![CDATA[https://googleads.g.doubleclick.net/xbbe/pixel?d=CLTtg5IEEPnr5J4EGOKyhZUCIAEwAQ&v=APEucNX6UNConQA2vEivENYhwWq4o4lfZrtUkBFsL28dG8sTde6GoZgMvocHF4FLep87UcyKoKU-poDub3PPOyGld5rR0kyb2byvc1rkyqf7fbZekQU-3lQ]]></Impression><Impression id=\"45b95df9-e001-45d8-9237-b25dee10de25\"></Impression><Impression id=\"89e124b4-10ec-4d17-b31d-1740f7d5f6b4\"><![CDATA[https://st.pubmatic.com/AdServer/AdDisplayTrackerServlet?operId=1&pubId=160456&siteId=799454&adId=6046966&imprId=4AB904AF-595C-4CDD-A401-57A5392C291F&cksum=5FAED0E6FB690989&adType=13&adServerId=243&kefact=5&kaxefact=5&kadNetFrequecy=0&kadwidth=0&kadheight=0&kadsizeid=97&kltstamp=1721026660&indirectAdId=0&adServerOptimizerId=2&ranreq=0.1&kpbmtpfact=5&tldId=0&passback=0&ekefact=ZMiUZmSGBAD2cbyLPnMZdVVHpkK1dfo6Na_6n2wMT7pSMGcr&ekaxefact=ZMiUZmSGBAD2cbyLPnMZdVVHpkK1dfo6Na_6n2wMT7pSMGcr&ekpbmtpfact=ZMiUZqGGBAA093NehP3hjrIG45wOok0WLgTMki8EY92y8jkv&svr=BIDVA20108&adsver=_2479453136&adsabzcid=0&cls=BID&i0=0x2100101112100110&i1=0x3111&enpp=ZMiUZoWGBAD-34Jr89PjFTpzsZNhe8oXVPKjgXSuF4ePYLlC&pmr_m=ZMiUZruGBAAGAxjq4nO5hwjqR24RTefEHOkVllhBH8Vnz9nL&mdsp=ZMiUZtSGBAAw-h_2eYyF-UA6EwbNhvh7qnMsDtAlZNtRSOUS&pfi=5&domId=858021007506040847&dc=VA1&pubBuyId=51287&crID=580999522&lpu=foodpanda.ph&ucrid=2706090604851211696&wAdType=13&campaignId=23025&creativeId=0&pctr=0.000000&wDSPByrId=1111553716&wDspId=80&wbId=0&wrId=4470997&wAdvID=54516&wDspCampId=21432075349&isRTB=1&rtbId=B6C68004-FF89-42E4-9F14-2E3F6F24C3AFV&wDlId=4470997&wDlMtId=382637&wDlChnlId=5&dOwn=1&ver=21&dateHr=2024071506&usrgen=0&usryob=0&layeringebl=1&usrip=49.145.163.188&gctry=ph&greg=ceb&uid=0&mid=1&vph=320&wccookied=0&qpsladszid=97&oid=4AB904AF-595C-4CDD-A401-57A5392C291F&mobflag=1&ismobileapp=1&modelid=19767&osid=313&udidtype=1&country=PH&cntryId=178&sec=1&pAuSt=2&wops=0&sURL=es.socialpoint.MonsterLegends&BrID=5&oiabdvt=4&tpb=0]]></Impression><Impression id=\"73f8f8ea-2f17-4fc1-88c3-aa58d9aa0141\"><![CDATA[https://image8.pubmatic.com/AdServer/ImgSync?&fp=1&mpc=10&p=160456&gdpr=0&gdpr_consent=1&pmc=-1&gpp=&gpp_sid=&gpmc=-1&pu=https%3A%2F%2Fimage4.pubmatic.com%2FAdServer%2FSPug%3Fpmc%3D-1%26gpmc%3D-1%26partnerID%3D160456%26partnerUID%3D%28null%29]]></Impression><Impression id=\"45b95df9-e001-45d8-9237-b25dee10de25\"></Impression><Impression id=\"89e124b4-10ec-4d17-b31d-1740f7d5f6b4\"><![CDATA[https://st.pubmatic.com/AdServer/AdDisplayTrackerServlet?operId=1&pubId=160456&siteId=799454&adId=6046966&imprId=4AB904AF-595C-4CDD-A401-57A5392C291F&cksum=5FAED0E6FB690989&adType=13&adServerId=243&kefact=5&kaxefact=5&kadNetFrequecy=0&kadwidth=0&kadheight=0&kadsizeid=97&kltstamp=1721026660&indirectAdId=0&adServerOptimizerId=2&ranreq=0.1&kpbmtpfact=5&tldId=0&passback=0&ekefact=ZMiUZmSGBAD2cbyLPnMZdVVHpkK1dfo6Na_6n2wMT7pSMGcr&ekaxefact=ZMiUZmSGBAD2cbyLPnMZdVVHpkK1dfo6Na_6n2wMT7pSMGcr&ekpbmtpfact=ZMiUZqGGBAA093NehP3hjrIG45wOok0WLgTMki8EY92y8jkv&svr=BIDVA20108&adsver=_2479453136&adsabzcid=0&cls=BID&i0=0x2100101112100110&i1=0x3111&enpp=ZMiUZoWGBAD-34Jr89PjFTpzsZNhe8oXVPKjgXSuF4ePYLlC&pmr_m=ZMiUZruGBAAGAxjq4nO5hwjqR24RTefEHOkVllhBH8Vnz9nL&mdsp=ZMiUZtSGBAAw-h_2eYyF-UA6EwbNhvh7qnMsDtAlZNtRSOUS&pfi=5&domId=858021007506040847&dc=VA1&pubBuyId=51287&crID=580999522&lpu=foodpanda.ph&ucrid=2706090604851211696&wAdType=13&campaignId=23025&creativeId=0&pctr=0.000000&wDSPByrId=1111553716&wDspId=80&wbId=0&wrId=4470997&wAdvID=54516&wDspCampId=21432075349&isRTB=1&rtbId=B6C68004-FF89-42E4-9F14-2E3F6F24C3AFV&wDlId=4470997&wDlMtId=382637&wDlChnlId=5&dOwn=1&ver=21&dateHr=2024071506&usrgen=0&usryob=0&layeringebl=1&usrip=49.145.163.188&gctry=ph&greg=ceb&uid=0&mid=1&vph=320&wccookied=0&qpsladszid=97&oid=4AB904AF-595C-4CDD-A401-57A5392C291F&mobflag=1&ismobileapp=1&modelid=19767&osid=313&udidtype=1&country=PH&cntryId=178&sec=1&pAuSt=2&wops=0&sURL=es.socialpoint.MonsterLegends&BrID=5&oiabdvt=4&tpb=0]]></Impression><Impression id=\"73f8f8ea-2f17-4fc1-88c3-aa58d9aa0141\"><![CDATA[https://image8.pubmatic.com/AdServer/ImgSync?&fp=1&mpc=10&p=160456&gdpr=0&gdpr_consent=1&pmc=-1&gpp=&gpp_sid=&gpmc=-1&pu=https%3A%2F%2Fimage4.pubmatic.com%2FAdServer%2FSPug%3Fpmc%3D-1%26gpmc%3D-1%26partnerID%3D160456%26partnerUID%3D%28null%29]]></Impression><Impression id=\"appads_impression_1\"><![CDATA[https://s.fst.pokkt.com/2/535734/analytics.gif?dt=5357341718311704875000&pd=avt&ui=0fa94627-9b47-4a43-b99f-603c141b6a8d&ap=es.socialpoint.MonsterLegends&sr=unity.com&pp=6246&ti=9af5bda0-eef4-41cb-9142-4f11bbb07281&to=4&pv=a3690642-2b90-4384-959a-a66bd9d97d51&md=2&de=4&dm=480x320&pi=34410&gt=ph&ac=0&pc1004350&cr=580999522]]></Impression><Impression id=\"appads_impression\"><![CDATA[https://t.appads.in/api/track?crid=580999522&pt_fp=0.01&apid=bf5d9c029400934802f4c4f119dabc0f&lt=0&pt_bp=1.5000000000000002&oid=34410&isrtb=1&ht=320&tstp=1721026660351&tid=9af5bda0-eef4-41cb-9142-4f11bbb07281&chid=7977&wopid=a3690642-2b90-4384-959a-a66bd9d97d51&eap=5.0&cntry=philippines&tkn=9ae68114238eb829026fd80cbefb75ed&exdi=PM-WJNU-0659&bundle=es.socialpoint.MonsterLegends&wot=4&wt=480&did=0fa94627-9b47-4a43-b99f-603c141b6a8d&ap=${AUCTION_PRICE}&aid=${AUCTION_ID}&event=6&]]></Impression><Impression><![CDATA[https://googleads.g.doubleclick.net/xbbe/pixel?d=CLTtg5IEEPnr5J4EGOKyhZUCIAEwAQ&v=APEucNX6UNConQA2vEivENYhwWq4o4lfZrtUkBFsL28dG8sTde6GoZgMvocHF4FLep87UcyKoKU-poDub3PPOyGld5rR0kyb2byvc1rkyqf7fbZekQU-3lQ]]></Impression><Impression><![CDATA[https://googleads4.g.doubleclick.net/pcs/view?xai=AKAOjstcfzL6z-hjG7ZCNTOBDVpNbfjHSxW4S_DcFxvOhmfn43nGeMY_5lRA_pIwPEA7q51yf98OKp6U9pFDSzt8XpoB0qplf6PL5c9bXTghZaiuzl36-j2eTWeaepr6G1_cUuh2tThZ_NU98qhGw0_XJEK0sWzNjc_Abk4s-ZLvkPDJtgMKoej1XzeOX-j3vp9eIoq-8c8J6MErfFXdWns6ms0Z2Y-eAadGhF2Xcp3K1P52LvalPnrKKfEEsgvkqV_V0M76DwMksp_x8OzGIsKdylGo8cBzOqMXL8k4EwMnFNPvqEyXFOsew9kN2xmzJjH9HKHevxM4UeLXC1vHQ726kjEamGuM3XFCVksAO35tt-_SezcTve9GGHCkmBR6nYYbt503YHWo5zkz_pTQVaApoxL5dtPZZRdgIBWNVOsvnxgz5-TUF1qQb3fhq1WiO427KXuFIN1fsxHodUO3cgoCENWWtTcS0v9arrpLueTWXQC0s8X9P2QeY7o6u-tpzaSu9GvfquCO4EeOBNOPb81P9as_H7NmklHI_FqfWsQx3WoK_o1UNXZSCWeYDNHTwrPvsL-4oovwnOhrEymJnlzdndxFqIhz4dzZ936l57Z3iaHqpSU2j1E9pUvCKQGYwkd8aF6X3lGm_h65aRBL8eYOwDEJkgC_zMaW5tjXLuYWwXPjr5byGl_9ed1dLBhR60fXmfwkPfEZ1GPI-bnpuqIxBWxEl6ouNIWNd-iG0jELQxi6xj0WLwoTiuFLhe0l0Kb5V6CSoC_D3-sbnf-Yi3am7EWRmB-IsmLDVGRQ2Yman1s_dQ9PKth9FqCAVhxDMZXVPhyBT9Aq-2RmV1QEgHu9qUcuPO5rgAJG5XAkJ_I9OMiCCiL4-gb6hF4gtPNDI_9qyeL7UHKwYyEGsv_wGZ4KEYKdhPrqZlZMlo6EO7_ZZ0hD7cbimdGFNw4Dp8wxzH6L4CcWZdkLHFbKV4IHfjb7stNx128Ey0oGp8AK6NJXBxH9WCQC7dkwYF--ZIealTT-uOmQ5wUO_1cxtkKMaDpVmY3eymWWVR0vrSD66A0NnrV-LP33lmZCNRio7K81bIszgeqIj8fHjAezH96lONwcyrnEmGvZIzZ915g_D5jKaiowKdq2YLqcr8a0BGjVnkFVwahCc1CzvrBUr2JcKpBZ3sPcrvso4eoJ-PAZS9wRjRsGwUmNtcJ4g72y-XulBjGhgoHKv2GI0Ix37mNGx83H0Os0nK0Cg5q3SMsg0BxRwjg4165ZvxX57Lb_B8iTbABf8TjuWli9NO5XYGZ3nmr-iCthO5wIYaN9qCIyMqNn9btmsn7P1fyPh9M-2JhcdUF6fOkxeUFob-6FnkHIa4BeWYNbN5BaacNgyzCfR_K-y8_mqlmtDLvi4EMZmZQRJp2BRRrya6mR_6jPPLyt8tKtXlp-1hwypjNgpSlvL-nZD1aV7kIjT_MpzO2daB6LyuvG5jeLMQE93uVP6ah4JcOJT42mzU3kypcT_jMu2zr_09M2riXlh3Pes-xvcaJ66CzEoQlVDaX9vWc8&sai=AMfl-YTLKG1xw_QNcfQEHC8FfPgOGXvtRw17W5qDg5LszBDlDxjeba4FtHyXuum1_BA-1fMUefIq9mQWpMUl93nm2U2C2trN-YXK5Kerr2kh8bHLvz2CbbiaoRAD5coShyyHWNx3fF8jA14BNiAnEHESYkaudjo_rAeVBmDESvGuIy1njYZgi8I&sig=Cg0ArKJSzHtuVjO8-ritEAE&uach_m=%5BUACH%5D&pr=6:5.000000&fbs_aeid=%5Bgw_fbsaeid%5D&urlfix=1&adurl=]]></Impression><Creatives><Creative id=\"218854482\" sequence=\"1\" AdID=\"580999522-1\"><Linear><Icons></Icons><Duration>00:00:15</Duration><TrackingEvents><Tracking event=\"acceptInvitation\"><![CDATA[https://ade.googlesyndication.com/ddm/activity/dc_oe=ChMI6tTy9buohwMV7gRoCB2uOQONEAAYACDS6K1oOhoI-evkngQQkLGCquwEGN2Kn-UDIP3srdzUEkITCJnH6_W7qIcDFfgLaAgdmtcOVkgAUDpYmHVg6KHzDWih4Yy-AYIBjAEKEwiZx-v1u6iHAxX4C2gIHZrXDlYSEwjGnvL1u6iHAxWTDmgIHcljCR0iGgjViM7rTxDisoWVAqgC-evkngSwAt2Kn-UDKIgnQAbgAQGAAgGYAgGgAv3srdzUEqgCBsACdpoDBDGRo7zQAwLiAx1lcy5zb2NpYWxwb2ludC5Nb25zdGVyTGVnZW5kcw;dc_rmcid=CAQSGwDaQooLok9zP9zz-sCGA2wcbIFqkESHrOg6zRgB;eps=CIhhEAEYXzIDioIBOg6AwICAgIAIgMCAgICgKEi9_cE6WNOf6_W7qIcD;met=1;ecn1=1;etm1=0;eid1=10;]]></Tracking><Tracking event=\"thirdQuartile\"><![CDATA[https://ade.googlesyndication.com/ddm/activity/dc_oe=ChMI6tTy9buohwMV7gRoCB2uOQONEAAYACDS6K1oOhoI-evkngQQkLGCquwEGN2Kn-UDIP3srdzUEkITCJnH6_W7qIcDFfgLaAgdmtcOVkgAUDpYmHVg6KHzDWih4Yy-AYIBjAEKEwiZx-v1u6iHAxX4C2gIHZrXDlYSEwjGnvL1u6iHAxWTDmgIHcljCR0iGgjViM7rTxDisoWVAqgC-evkngSwAt2Kn-UDKIgnQAbgAQGAAgGYAgGgAv3srdzUEqgCBsACdpoDBDGRo7zQAwLiAx1lcy5zb2NpYWxwb2ludC5Nb25zdGVyTGVnZW5kcw;dc_rmcid=CAQSGwDaQooLok9zP9zz-sCGA2wcbIFqkESHrOg6zRgB;eps=CIhhEAEYXzIDioIBOg6AwICAgIAIgMCAgICgKEi9_cE6WNOf6_W7qIcD;met=1;ecn1=1;etm1=0;eid1=960585;]]></Tracking><Tracking event=\"thirdQuartile\"><![CDATA[https://st.pubmatic.com/track?operId=7&p=160456&s=799454&a=6046966&wa=243&ts=1721026660&wc=23025&crId=580999522&ucrid=2706090604851211696&impid=4AB904AF-595C-4CDD-A401-57A5392C291F&advertiser_id=54516&ecpm=5.000000&mkid=19197&pbyId=51287&plmt=3&rwrd=1&instl=1&abzcid=0&wDlId=4470997&wDlMtId=382637&wDlChnlId=5&gcoid=178&ch=1&e=5&pfi=5&vps=3&sURL=es.socialpoint.MonsterLegends]]></Tracking><Tracking event=\"thirdQuartile\"><![CDATA[https://t.appads.in/api/track?crid=580999522&pt_fp=0.01&apid=bf5d9c029400934802f4c4f119dabc0f&lt=0&pt_bp=1.5000000000000002&oid=34410&isrtb=1&ht=320&tstp=1721026660351&tid=9af5bda0-eef4-41cb-9142-4f11bbb07281&chid=7977&wopid=a3690642-2b90-4384-959a-a66bd9d97d51&eap=5.0&cntry=philippines&tkn=9ae68114238eb829026fd80cbefb75ed&exdi=PM-WJNU-0659&bundle=es.socialpoint.MonsterLegends&wot=4&wt=480&did=0fa94627-9b47-4a43-b99f-603c141b6a8d&ap=${AUCTION_PRICE}&aid=${AUCTION_ID}&event=3&]]></Tracking><Tracking event=\"start\"><![CDATA[https://t.appads.in/api/track?crid=580999522&pt_fp=0.01&apid=bf5d9c029400934802f4c4f119dabc0f&lt=0&pt_bp=1.5000000000000002&oid=34410&isrtb=1&ht=320&tstp=1721026660351&tid=9af5bda0-eef4-41cb-9142-4f11bbb07281&chid=7977&wopid=a3690642-2b90-4384-959a-a66bd9d97d51&eap=5.0&cntry=philippines&tkn=9ae68114238eb829026fd80cbefb75ed&exdi=PM-WJNU-0659&bundle=es.socialpoint.MonsterLegends&wot=4&wt=480&did=0fa94627-9b47-4a43-b99f-603c141b6a8d&ap=${AUCTION_PRICE}&aid=${AUCTION_ID}&event=7&]]></Tracking><Tracking event=\"start\"><![CDATA[https://ade.googlesyndication.com/ddm/activity/dc_oe=ChMI6tTy9buohwMV7gRoCB2uOQONEAAYACDS6K1oOhoI-evkngQQkLGCquwEGN2Kn-UDIP3srdzUEkITCJnH6_W7qIcDFfgLaAgdmtcOVkgAUDpYmHVg6KHzDWih4Yy-AYIBjAEKEwiZx-v1u6iHAxX4C2gIHZrXDlYSEwjGnvL1u6iHAxWTDmgIHcljCR0iGgjViM7rTxDisoWVAqgC-evkngSwAt2Kn-UDKIgnQAbgAQGAAgGYAgGgAv3srdzUEqgCBsACdpoDBDGRo7zQAwLiAx1lcy5zb2NpYWxwb2ludC5Nb25zdGVyTGVnZW5kcw;dc_rmcid=CAQSGwDaQooLok9zP9zz-sCGA2wcbIFqkESHrOg6zRgB;eps=CIhhEAEYXzIDioIBOg6AwICAgIAIgMCAgICgKEi9_cE6WNOf6_W7qIcD;met=1;ecn1=1;etm1=0;eid1=11;]]></Tracking><Tracking event=\"start\"><![CDATA[https://st.pubmatic.com/track?operId=7&p=160456&s=799454&a=6046966&wa=243&ts=1721026660&wc=23025&crId=580999522&ucrid=2706090604851211696&impid=4AB904AF-595C-4CDD-A401-57A5392C291F&advertiser_id=54516&ecpm=5.000000&mkid=19197&pbyId=51287&plmt=3&rwrd=1&instl=1&abzcid=0&wDlId=4470997&wDlMtId=382637&wDlChnlId=5&gcoid=178&ch=1&e=2&pfi=5&vps=3&it=2&vadFmt=6&vapi=7&sURL=es.socialpoint.MonsterLegends]]></Tracking><Tracking event=\"creativeView\"><![CDATA[https://st.pubmatic.com/track?operId=7&p=160456&s=799454&a=6046966&wa=243&ts=1721026660&wc=23025&crId=580999522&ucrid=2706090604851211696&impid=4AB904AF-595C-4CDD-A401-57A5392C291F&advertiser_id=54516&ecpm=5.000000&mkid=19197&pbyId=51287&plmt=3&rwrd=1&instl=1&abzcid=0&wDlId=4470997&wDlMtId=382637&wDlChnlId=5&gcoid=178&ch=1&e=1]]></Tracking><Tracking event=\"creativeView\"><![CDATA[https://t.appads.in/api/track?crid=580999522&pt_fp=0.01&apid=bf5d9c029400934802f4c4f119dabc0f&lt=0&pt_bp=1.5000000000000002&oid=34410&isrtb=1&ht=320&tstp=1721026660351&tid=9af5bda0-eef4-41cb-9142-4f11bbb07281&chid=7977&wopid=a3690642-2b90-4384-959a-a66bd9d97d51&eap=5.0&cntry=philippines&tkn=9ae68114238eb829026fd80cbefb75ed&exdi=PM-WJNU-0659&bundle=es.socialpoint.MonsterLegends&wot=4&wt=480&did=0fa94627-9b47-4a43-b99f-603c141b6a8d&ap=${AUCTION_PRICE}&aid=${AUCTION_ID}&event=31&]]></Tracking><Tracking event=\"skip\"><![CDATA[https://t.appads.in/api/track?crid=580999522&pt_fp=0.01&apid=bf5d9c029400934802f4c4f119dabc0f&lt=0&pt_bp=1.5000000000000002&oid=34410&isrtb=1&ht=320&tstp=1721026660351&tid=9af5bda0-eef4-41cb-9142-4f11bbb07281&chid=7977&wopid=a3690642-2b90-4384-959a-a66bd9d97d51&eap=5.0&cntry=philippines&tkn=9ae68114238eb829026fd80cbefb75ed&exdi=PM-WJNU-0659&bundle=es.socialpoint.MonsterLegends&wot=4&wt=480&did=0fa94627-9b47-4a43-b99f-603c141b6a8d&ap=${AUCTION_PRICE}&aid=${AUCTION_ID}&event=14&]]></Tracking><Tracking event=\"mute\"><![CDATA[https://t.appads.in/api/track?crid=580999522&pt_fp=0.01&apid=bf5d9c029400934802f4c4f119dabc0f&lt=0&pt_bp=1.5000000000000002&oid=34410&isrtb=1&ht=320&tstp=1721026660351&tid=9af5bda0-eef4-41cb-9142-4f11bbb07281&chid=7977&wopid=a3690642-2b90-4384-959a-a66bd9d97d51&eap=5.0&cntry=philippines&tkn=9ae68114238eb829026fd80cbefb75ed&exdi=PM-WJNU-0659&bundle=es.socialpoint.MonsterLegends&wot=4&wt=480&did=0fa94627-9b47-4a43-b99f-603c141b6a8d&ap=${AUCTION_PRICE}&aid=${AUCTION_ID}&event=26&]]></Tracking><Tracking event=\"mute\"><![CDATA[https://ade.googlesyndication.com/ddm/activity/dc_oe=ChMI6tTy9buohwMV7gRoCB2uOQONEAAYACDS6K1oOhoI-evkngQQkLGCquwEGN2Kn-UDIP3srdzUEkITCJnH6_W7qIcDFfgLaAgdmtcOVkgAUDpYmHVg6KHzDWih4Yy-AYIBjAEKEwiZx-v1u6iHAxX4C2gIHZrXDlYSEwjGnvL1u6iHAxWTDmgIHcljCR0iGgjViM7rTxDisoWVAqgC-evkngSwAt2Kn-UDKIgnQAbgAQGAAgGYAgGgAv3srdzUEqgCBsACdpoDBDGRo7zQAwLiAx1lcy5zb2NpYWxwb2ludC5Nb25zdGVyTGVnZW5kcw;dc_rmcid=CAQSGwDaQooLok9zP9zz-sCGA2wcbIFqkESHrOg6zRgB;eps=CIhhEAEYXzIDioIBOg6AwICAgIAIgMCAgICgKEi9_cE6WNOf6_W7qIcD;met=1;ecn1=1;etm1=0;eid1=16;]]></Tracking><Tracking event=\"pause\"><![CDATA[https://ade.googlesyndication.com/ddm/activity/dc_oe=ChMI6tTy9buohwMV7gRoCB2uOQONEAAYACDS6K1oOhoI-evkngQQkLGCquwEGN2Kn-UDIP3srdzUEkITCJnH6_W7qIcDFfgLaAgdmtcOVkgAUDpYmHVg6KHzDWih4Yy-AYIBjAEKEwiZx-v1u6iHAxX4C2gIHZrXDlYSEwjGnvL1u6iHAxWTDmgIHcljCR0iGgjViM7rTxDisoWVAqgC-evkngSwAt2Kn-UDKIgnQAbgAQGAAgGYAgGgAv3srdzUEqgCBsACdpoDBDGRo7zQAwLiAx1lcy5zb2NpYWxwb2ludC5Nb25zdGVyTGVnZW5kcw;dc_rmcid=CAQSGwDaQooLok9zP9zz-sCGA2wcbIFqkESHrOg6zRgB;eps=CIhhEAEYXzIDioIBOg6AwICAgIAIgMCAgICgKEi9_cE6WNOf6_W7qIcD;met=1;ecn1=1;etm1=0;eid1=15;]]></Tracking><Tracking event=\"fullscreen\"><![CDATA[https://ade.googlesyndication.com/ddm/activity/dc_oe=ChMI6tTy9buohwMV7gRoCB2uOQONEAAYACDS6K1oOhoI-evkngQQkLGCquwEGN2Kn-UDIP3srdzUEkITCJnH6_W7qIcDFfgLaAgdmtcOVkgAUDpYmHVg6KHzDWih4Yy-AYIBjAEKEwiZx-v1u6iHAxX4C2gIHZrXDlYSEwjGnvL1u6iHAxWTDmgIHcljCR0iGgjViM7rTxDisoWVAqgC-evkngSwAt2Kn-UDKIgnQAbgAQGAAgGYAgGgAv3srdzUEqgCBsACdpoDBDGRo7zQAwLiAx1lcy5zb2NpYWxwb2ludC5Nb25zdGVyTGVnZW5kcw;dc_rmcid=CAQSGwDaQooLok9zP9zz-sCGA2wcbIFqkESHrOg6zRgB;eps=CIhhEAEYXzIDioIBOg6AwICAgIAIgMCAgICgKEi9_cE6WNOf6_W7qIcD;met=1;ecn1=1;etm1=0;eid1=19;]]></Tracking><Tracking event=\"firstQuartile\"><![CDATA[https://ade.googlesyndication.com/ddm/activity/dc_oe=ChMI6tTy9buohwMV7gRoCB2uOQONEAAYACDS6K1oOhoI-evkngQQkLGCquwEGN2Kn-UDIP3srdzUEkITCJnH6_W7qIcDFfgLaAgdmtcOVkgAUDpYmHVg6KHzDWih4Yy-AYIBjAEKEwiZx-v1u6iHAxX4C2gIHZrXDlYSEwjGnvL1u6iHAxWTDmgIHcljCR0iGgjViM7rTxDisoWVAqgC-evkngSwAt2Kn-UDKIgnQAbgAQGAAgGYAgGgAv3srdzUEqgCBsACdpoDBDGRo7zQAwLiAx1lcy5zb2NpYWxwb2ludC5Nb25zdGVyTGVnZW5kcw;dc_rmcid=CAQSGwDaQooLok9zP9zz-sCGA2wcbIFqkESHrOg6zRgB;eps=CIhhEAEYXzIDioIBOg6AwICAgIAIgMCAgICgKEi9_cE6WNOf6_W7qIcD;met=1;ecn1=1;etm1=0;eid1=960584;]]></Tracking><Tracking event=\"firstQuartile\"><![CDATA[https://t.appads.in/api/track?crid=580999522&pt_fp=0.01&apid=bf5d9c029400934802f4c4f119dabc0f&lt=0&pt_bp=1.5000000000000002&oid=34410&isrtb=1&ht=320&tstp=1721026660351&tid=9af5bda0-eef4-41cb-9142-4f11bbb07281&chid=7977&wopid=a3690642-2b90-4384-959a-a66bd9d97d51&eap=5.0&cntry=philippines&tkn=9ae68114238eb829026fd80cbefb75ed&exdi=PM-WJNU-0659&bundle=es.socialpoint.MonsterLegends&wot=4&wt=480&did=0fa94627-9b47-4a43-b99f-603c141b6a8d&ap=${AUCTION_PRICE}&aid=${AUCTION_ID}&event=1&]]></Tracking><Tracking event=\"firstQuartile\"><![CDATA[https://st.pubmatic.com/track?operId=7&p=160456&s=799454&a=6046966&wa=243&ts=1721026660&wc=23025&crId=580999522&ucrid=2706090604851211696&impid=4AB904AF-595C-4CDD-A401-57A5392C291F&advertiser_id=54516&ecpm=5.000000&mkid=19197&pbyId=51287&plmt=3&rwrd=1&instl=1&abzcid=0&wDlId=4470997&wDlMtId=382637&wDlChnlId=5&gcoid=178&ch=1&e=4&pfi=5&vps=3&sURL=es.socialpoint.MonsterLegends]]></Tracking><Tracking event=\"midpoint\"><![CDATA[https://st.pubmatic.com/track?operId=7&p=160456&s=799454&a=6046966&wa=243&ts=1721026660&wc=23025&crId=580999522&ucrid=2706090604851211696&impid=4AB904AF-595C-4CDD-A401-57A5392C291F&advertiser_id=54516&ecpm=5.000000&mkid=19197&pbyId=51287&plmt=3&rwrd=1&instl=1&abzcid=0&wDlId=4470997&wDlMtId=382637&wDlChnlId=5&gcoid=178&ch=1&e=3&pfi=5&vps=3&sURL=es.socialpoint.MonsterLegends]]></Tracking><Tracking event=\"midpoint\"><![CDATA[https://ade.googlesyndication.com/ddm/activity/dc_oe=ChMI6tTy9buohwMV7gRoCB2uOQONEAAYACDS6K1oOhoI-evkngQQkLGCquwEGN2Kn-UDIP3srdzUEkITCJnH6_W7qIcDFfgLaAgdmtcOVkgAUDpYmHVg6KHzDWih4Yy-AYIBjAEKEwiZx-v1u6iHAxX4C2gIHZrXDlYSEwjGnvL1u6iHAxWTDmgIHcljCR0iGgjViM7rTxDisoWVAqgC-evkngSwAt2Kn-UDKIgnQAbgAQGAAgGYAgGgAv3srdzUEqgCBsACdpoDBDGRo7zQAwLiAx1lcy5zb2NpYWxwb2ludC5Nb25zdGVyTGVnZW5kcw;dc_rmcid=CAQSGwDaQooLok9zP9zz-sCGA2wcbIFqkESHrOg6zRgB;eps=CIhhEAEYXzIDioIBOg6AwICAgIAIgMCAgICgKEi9_cE6WNOf6_W7qIcD;met=1;ecn1=1;etm1=0;eid1=18;]]></Tracking><Tracking event=\"midpoint\"><![CDATA[https://t.appads.in/api/track?crid=580999522&pt_fp=0.01&apid=bf5d9c029400934802f4c4f119dabc0f&lt=0&pt_bp=1.5000000000000002&oid=34410&isrtb=1&ht=320&tstp=1721026660351&tid=9af5bda0-eef4-41cb-9142-4f11bbb07281&chid=7977&wopid=a3690642-2b90-4384-959a-a66bd9d97d51&eap=5.0&cntry=philippines&tkn=9ae68114238eb829026fd80cbefb75ed&exdi=PM-WJNU-0659&bundle=es.socialpoint.MonsterLegends&wot=4&wt=480&did=0fa94627-9b47-4a43-b99f-603c141b6a8d&ap=${AUCTION_PRICE}&aid=${AUCTION_ID}&event=2&]]></Tracking><Tracking event=\"unmute\"><![CDATA[https://t.appads.in/api/track?crid=580999522&pt_fp=0.01&apid=bf5d9c029400934802f4c4f119dabc0f&lt=0&pt_bp=1.5000000000000002&oid=34410&isrtb=1&ht=320&tstp=1721026660351&tid=9af5bda0-eef4-41cb-9142-4f11bbb07281&chid=7977&wopid=a3690642-2b90-4384-959a-a66bd9d97d51&eap=5.0&cntry=philippines&tkn=9ae68114238eb829026fd80cbefb75ed&exdi=PM-WJNU-0659&bundle=es.socialpoint.MonsterLegends&wot=4&wt=480&did=0fa94627-9b47-4a43-b99f-603c141b6a8d&ap=${AUCTION_PRICE}&aid=${AUCTION_ID}&event=27&]]></Tracking><Tracking event=\"unmute\"><![CDATA[https://ade.googlesyndication.com/ddm/activity/dc_oe=ChMI6tTy9buohwMV7gRoCB2uOQONEAAYACDS6K1oOhoI-evkngQQkLGCquwEGN2Kn-UDIP3srdzUEkITCJnH6_W7qIcDFfgLaAgdmtcOVkgAUDpYmHVg6KHzDWih4Yy-AYIBjAEKEwiZx-v1u6iHAxX4C2gIHZrXDlYSEwjGnvL1u6iHAxWTDmgIHcljCR0iGgjViM7rTxDisoWVAqgC-evkngSwAt2Kn-UDKIgnQAbgAQGAAgGYAgGgAv3srdzUEqgCBsACdpoDBDGRo7zQAwLiAx1lcy5zb2NpYWxwb2ludC5Nb25zdGVyTGVnZW5kcw;dc_rmcid=CAQSGwDaQooLok9zP9zz-sCGA2wcbIFqkESHrOg6zRgB;eps=CIhhEAEYXzIDioIBOg6AwICAgIAIgMCAgICgKEi9_cE6WNOf6_W7qIcD;met=1;ecn1=1;etm1=0;eid1=149645;]]></Tracking><Tracking event=\"complete\"><![CDATA[https://t.appads.in/api/track?crid=580999522&pt_fp=0.01&apid=bf5d9c029400934802f4c4f119dabc0f&lt=0&pt_bp=1.5000000000000002&oid=34410&isrtb=1&ht=320&tstp=1721026660351&tid=9af5bda0-eef4-41cb-9142-4f11bbb07281&chid=7977&wopid=a3690642-2b90-4384-959a-a66bd9d97d51&eap=5.0&cntry=philippines&tkn=9ae68114238eb829026fd80cbefb75ed&exdi=PM-WJNU-0659&bundle=es.socialpoint.MonsterLegends&wot=4&wt=480&did=0fa94627-9b47-4a43-b99f-603c141b6a8d&ap=${AUCTION_PRICE}&aid=${AUCTION_ID}&event=4&]]></Tracking><Tracking event=\"complete\"><![CDATA[https://st.pubmatic.com/track?operId=7&p=160456&s=799454&a=6046966&wa=243&ts=1721026660&wc=23025&crId=580999522&ucrid=2706090604851211696&impid=4AB904AF-595C-4CDD-A401-57A5392C291F&advertiser_id=54516&ecpm=5.000000&mkid=19197&pbyId=51287&plmt=3&rwrd=1&instl=1&abzcid=0&wDlId=4470997&wDlMtId=382637&wDlChnlId=5&gcoid=178&ch=1&e=6&pfi=5&vps=3&sURL=es.socialpoint.MonsterLegends]]></Tracking><Tracking event=\"complete\"><![CDATA[https://ade.googlesyndication.com/ddm/activity/dc_oe=ChMI6tTy9buohwMV7gRoCB2uOQONEAAYACDS6K1oOhoI-evkngQQkLGCquwEGN2Kn-UDIP3srdzUEkITCJnH6_W7qIcDFfgLaAgdmtcOVkgAUDpYmHVg6KHzDWih4Yy-AYIBjAEKEwiZx-v1u6iHAxX4C2gIHZrXDlYSEwjGnvL1u6iHAxWTDmgIHcljCR0iGgjViM7rTxDisoWVAqgC-evkngSwAt2Kn-UDKIgnQAbgAQGAAgGYAgGgAv3srdzUEqgCBsACdpoDBDGRo7zQAwLiAx1lcy5zb2NpYWxwb2ludC5Nb25zdGVyTGVnZW5kcw;dc_rmcid=CAQSGwDaQooLok9zP9zz-sCGA2wcbIFqkESHrOg6zRgB;eps=CIhhEAEYXzIDioIBOg6AwICAgIAIgMCAgICgKEi9_cE6WNOf6_W7qIcD;met=1;ecn1=1;etm1=0;eid1=13;]]></Tracking><Tracking event=\"close\"><![CDATA[https://t.appads.in/api/track?crid=580999522&pt_fp=0.01&apid=bf5d9c029400934802f4c4f119dabc0f&lt=0&pt_bp=1.5000000000000002&oid=34410&isrtb=1&ht=320&tstp=1721026660351&tid=9af5bda0-eef4-41cb-9142-4f11bbb07281&chid=7977&wopid=a3690642-2b90-4384-959a-a66bd9d97d51&eap=5.0&cntry=philippines&tkn=9ae68114238eb829026fd80cbefb75ed&exdi=PM-WJNU-0659&bundle=es.socialpoint.MonsterLegends&wot=4&wt=480&did=0fa94627-9b47-4a43-b99f-603c141b6a8d&ap=${AUCTION_PRICE}&aid=${AUCTION_ID}&event=5&]]></Tracking><Tracking event=\"close\"><![CDATA[https://ade.googlesyndication.com/ddm/activity/dc_oe=ChMI6tTy9buohwMV7gRoCB2uOQONEAAYACDS6K1oOhoI-evkngQQkLGCquwEGN2Kn-UDIP3srdzUEkITCJnH6_W7qIcDFfgLaAgdmtcOVkgAUDpYmHVg6KHzDWih4Yy-AYIBjAEKEwiZx-v1u6iHAxX4C2gIHZrXDlYSEwjGnvL1u6iHAxWTDmgIHcljCR0iGgjViM7rTxDisoWVAqgC-evkngSwAt2Kn-UDKIgnQAbgAQGAAgGYAgGgAv3srdzUEqgCBsACdpoDBDGRo7zQAwLiAx1lcy5zb2NpYWxwb2ludC5Nb25zdGVyTGVnZW5kcw;dc_rmcid=CAQSGwDaQooLok9zP9zz-sCGA2wcbIFqkESHrOg6zRgB;eps=CIhhEAEYXzIDioIBOg6AwICAgIAIgMCAgICgKEi9_cE6WNOf6_W7qIcD;met=1;ecn1=1;etm1=0;eid1=8;]]></Tracking><Tracking event=\"closeLinear\"><![CDATA[https://t.appads.in/api/track?crid=580999522&pt_fp=0.01&apid=bf5d9c029400934802f4c4f119dabc0f&lt=0&pt_bp=1.5000000000000002&oid=34410&isrtb=1&ht=320&tstp=1721026660351&tid=9af5bda0-eef4-41cb-9142-4f11bbb07281&chid=7977&wopid=a3690642-2b90-4384-959a-a66bd9d97d51&eap=5.0&cntry=philippines&tkn=9ae68114238eb829026fd80cbefb75ed&exdi=PM-WJNU-0659&bundle=es.socialpoint.MonsterLegends&wot=4&wt=480&did=0fa94627-9b47-4a43-b99f-603c141b6a8d&ap=${AUCTION_PRICE}&aid=${AUCTION_ID}&event=5&]]></Tracking></TrackingEvents><VideoClicks><ClickThrough><![CDATA[https://adclick.g.doubleclick.net/pcs/click?xai=AKAOjsuDanj7pmtfMBg3cB6ryCToPgJM3iptEKWs32s-rkYiXDKiWhQbfMzfeGbI2ja42A-C529IblTTFv_5jQJdUhkk9auOQpuuaBu6Wjgp1PaSwjr8jLK3Ng9McKdERRZFH-qa-_qNnsSUrMdkubW-gA1v47gT3SVJVuCfPwO3UPtCX5cuNjeWNL-pNj92O0MK-SffZCGxrQ5Q92kQmWGe2TzcssMSVqqYfl-h5qoT9um0afaG5mEn-jsCjXWGq_b7DDMCWNDZ47ynVmdMRY-ImNwFAsHoDKdJz8A-9XPms0wpVxDG8ab5PNFxl3ajelOsYCrRgbqnd5aaFhUdYmQPdYeEYFyDUhU4lm0-bx8KsV3fWKj63h_xU1kS6DlEfrCWlU5QPyeSlzUToDHj-IFOhWozkGCdsNRPS8jn_KFLnz8_aDXBM4gY1woGXV02uvHu7Ze9LV0WIEKuEDrTamFhej0s_CvHeRpQGONFQ0UEtKrOo0voy02PwqdLQdj9_VXtKSrtUmwH1bkUnkU1qRcz4IMQ6VHbgsZudge7N7fhrY1VnemTHMs_kwV0aCqrZ0Wld6C5BMfNm41PztxRytCF03NB-9G_wczDAqC4G0jp6Mjp71ENtEHBJ-WL3L4joZfmy2zNcwFxYXFGlE8twuH_2qjMJevDqwHPpVYi2157GHsyBnqD208OkrCcqeN83JbH_eNxThcR-IIuRxTNLkrEmC1LRYLmj-DeCTDRnyeXopzKKaKYM0KhiTA-OiiWgAV_k8o7-U7p7EmQ1eOW2PWcF2q1_De07NILta67XDaXV_WfJoM7luvCT4Kr4EfLjmPEWA1C0Yh_fde4MLhqUVAYCK6WmfolOX8YarZeqLJ1INZQjIo9D7imyXkh4dA4mcpl3RfK2dtN9_Q0Ti9KksoooGRtRLtUpsBvnvmqyjMZjtZ2n89dBmaO8A5GHwRm3m9RvK2i8S-m8OJfNG6mf3QMyQUNHqQUOJNF40lpa1CTv-ntpTPvkWjsVpg3YJfAyKMeW7HUT3CSOZ_fnpcskPs4-zqcAQZgd74Yavq4x16N2MmsOpMQhnj9gNGurTMVAc8VObV_tk4CO5v4LQjmDpvpYVcU0we-J-rBkUExQmvTSGhPOWh850eDiOhjn-evTZIxjrWTNgMDTV_q_YHNG8YLyyjIzf-m63MDlPEFfbc9-uxV-NauohF9EZxKvqhU_nT2djNHu-aJZUS5wAJD2wigMgkV-PCb-rKi7oTXAYMzh0T1sBWAyHv0sy7pB0iz3z-3RrxY6e_oQXuqCe2vp3kK6zndkwK0v-z3E5Q7NiUUoxsPHqMmeAc6fXH07WrNCYrH2ZrN1lcVXmjaL3rmDlMch2uMQefirdIRwBB4aMnMYuJ-1wvupcIAJt7tQz8fsI8hS_J3N70GrJ_-0zFGEIc6ulOKtvLKS_CuPGiYv4ZiMx9iT-sZc1TQzg0h7HCJUjk2RD0gPrDEyMzKyYsELm7kvffqoU8BELcVblLzqaYERuob4LMoDy5b_Am9jwtpDnAD4W0qrv_swItd2Xg_4yie20qI_6tx79yzaTAU8r7qpHmRsfTaQzCvbWiq71U35-a9vMnZqeNapyzUWfe03X9o6GaUAKgUJTGEyUM3MK79NDFEZhHqdstxkqRj_RcDK6UKvznFSvG01ti6VubO&sai=AMfl-YT2dOTlVaIPvOIC94rNTEajncNa2j17Fx7m-sS-5QF7nL74jp_oUNYXFj9IC-0YmxVuI6oo2sMDp0q05jMCwRvJITSmjnDFBAcFEuDBgv7YoT5Lgw0AIzJ8oa9wx-IMLRmcBN77dw_QH-QkeqqI9Yw5FAoa8Hf7Z4rVEx_MXeLOLIaaYB26kvJIVkAV6Lh5jQyq&sig=Cg0ArKJSzBQ6aOiXzi61EAE&pr=6:5.000000&fbs_aeid=%5Bgw_fbsaeid%5D&urlfix=1&adurl=https://bhpz.adj.st/%3Ffoodpanda:///c%3Dph%26s%3Dl%26adj_t%3Dzoo12og_r0d0uti%26adj_campaign%3Ddis_bra_mix_eat_aut_aa_ph_video_MealForOne%26adj_adgroup%3DAnymind%26adj_creative%3DBurger%26adj_deeplink%3Dfoodpanda%253A%252F%252F%253Ffoodpanda%253A%252F%252F%252Fc%253Dph%2526s%253Dl%26adj_redirect%3Dhttps%253A%252F%252Fwww.foodpanda.ph%253Futm_campaign%253Ddis_bra_web_eat_aut_aa_ph_video_MealForOne%2526utm_source%253DAnymind%2526utm_medium%253Ddisplay]]></ClickThrough><ClickTracking><![CDATA[https://st.pubmatic.com/track?operId=7&p=160456&s=799454&a=6046966&wa=243&ts=1721026660&wc=23025&crId=580999522&ucrid=2706090604851211696&impid=4AB904AF-595C-4CDD-A401-57A5392C291F&advertiser_id=54516&ecpm=5.000000&mkid=19197&pbyId=51287&plmt=3&rwrd=1&instl=1&abzcid=0&wDlId=4470997&wDlMtId=382637&wDlChnlId=5&gcoid=178&ch=1&e=99]]></ClickTracking><ClickTracking><![CDATA[https://t.appads.in/api/track?crid=580999522&pt_fp=PT_FP&apid=bf5d9c029400934802f4c4f119dabc0f&lt=0&pt_bp=PT_BP&oid=34410&isrtb=1&ht=320&tstp=1721026660351&tid=9af5bda0-eef4-41cb-9142-4f11bbb07281&chid=7977&wopid=a3690642-2b90-4384-959a-a66bd9d97d51&eap=PT_EAP&cntry=philippines&tkn=9ae68114238eb829026fd80cbefb75ed&exdi=PM-WJNU-0659&bundle=es.socialpoint.MonsterLegends&wot=4&wt=480&did=0fa94627-9b47-4a43-b99f-603c141b6a8d&ap=${AUCTION_PRICE}&aid=${AUCTION_ID}&event=9&]]></ClickTracking></VideoClicks><MediaFiles><MediaFile id=\"882059949-18\" delivery=\"progressive\" type=\"video/mp4\" bitrate=\"383\" width=\"640\" height=\"360\" scalable=\"true\" maintainAspectRatio=\"true\"><![CDATA[https://gcdn.2mdn.net/videoplayback/id/38ee71b9f62992ac/itag/18/source/web_video_ads/xpc/EgVovf3BOg%3D%3D/ctier/L/acao/yes/ip/0.0.0.0/ipbits/0/expire/1752562660/sparams/ip,ipbits,expire,id,itag,source,xpc,ctier,acao/signature/0619F6C1925471F861B9A60AF5C57155A397674C.3090B7D0AEB8A9EE29152D3460ABB9A504A6851D/key/ck2/file/file.mp4]]></MediaFile><MediaFile id=\"882059949-22\" delivery=\"progressive\" type=\"video/mp4\" bitrate=\"1892\" width=\"1280\" height=\"720\" scalable=\"true\" maintainAspectRatio=\"true\"><![CDATA[https://gcdn.2mdn.net/videoplayback/id/38ee71b9f62992ac/itag/22/source/web_video_ads/xpc/EgVovf3BOg%3D%3D/ctier/L/acao/yes/ip/0.0.0.0/ipbits/0/expire/1752562660/sparams/ip,ipbits,expire,id,itag,source,xpc,ctier,acao/signature/A19DB2C8949343FD69ABC0B2ACDC2BE0B1CCF727.72AA3063B7205C117FED0B689F3C9E1FECCA5EB2/key/ck2/file/file.mp4]]></MediaFile><MediaFile id=\"882059949-37\" delivery=\"progressive\" type=\"video/mp4\" bitrate=\"3867\" width=\"1920\" height=\"1080\" scalable=\"true\" maintainAspectRatio=\"true\"><![CDATA[https://gcdn.2mdn.net/videoplayback/id/38ee71b9f62992ac/itag/37/source/web_video_ads/xpc/EgVovf3BOg%3D%3D/ctier/L/acao/yes/ip/0.0.0.0/ipbits/0/expire/1752562660/sparams/ip,ipbits,expire,id,itag,source,xpc,ctier,acao/signature/0BE2F719A74ACC0BEB8D767169896887ECD5E730.0F757258082A5CA301641FC1665CD5E1ACE3917D/key/ck2/file/file.mp4]]></MediaFile><MediaFile id=\"882059949-692\" delivery=\"progressive\" type=\"video/mp4\" bitrate=\"1140\" width=\"960\" height=\"540\" scalable=\"true\" maintainAspectRatio=\"true\"><![CDATA[https://gcdn.2mdn.net/videoplayback/id/38ee71b9f62992ac/itag/692/source/web_video_ads/xpc/EgVovf3BOg%3D%3D/ctier/L/acao/yes/ip/0.0.0.0/ipbits/0/expire/1752562660/sparams/ip,ipbits,expire,id,itag,source,xpc,ctier,acao/signature/0B776A7052937122154E4F0A3D4DFA901A28EA1F.6CEF9F91A1F9D61C1D4CC62AAE5B294BC108299F/key/ck2/file/file.mp4]]></MediaFile><MediaFile id=\"882059949-59\" delivery=\"progressive\" type=\"video/mp4\" bitrate=\"676\" width=\"854\" height=\"480\" scalable=\"true\" maintainAspectRatio=\"true\"><![CDATA[https://gcdn.2mdn.net/videoplayback/id/38ee71b9f62992ac/itag/59/source/web_video_ads/xpc/EgVovf3BOg%3D%3D/ctier/L/acao/yes/ip/0.0.0.0/ipbits/0/expire/1752562660/sparams/ip,ipbits,expire,id,itag,source,xpc,ctier,acao/signature/76D3CB401F05A9C04B5C80F0065C85CD6D665F.730B268DE9FC515893EF8814BF99B9BD1D6DDDC9/key/ck2/file/file.mp4]]></MediaFile><MediaFile id=\"882059949-342\" delivery=\"progressive\" type=\"video/mp4\" bitrate=\"379\" width=\"480\" height=\"270\" scalable=\"true\" maintainAspectRatio=\"true\"><![CDATA[https://gcdn.2mdn.net/videoplayback/id/38ee71b9f62992ac/itag/342/source/web_video_ads/xpc/EgVovf3BOg%3D%3D/ctier/L/acao/yes/ip/0.0.0.0/ipbits/0/expire/1752562660/sparams/ip,ipbits,expire,id,itag,source,xpc,ctier,acao/signature/8B14BB111DEDE5FAFED216CE100605E523D91210.A384A94DF1B256CC693701EFC7AF3C77C925E47E/key/ck2/file/file.mp4]]></MediaFile><MediaFile id=\"882059949-343\" delivery=\"progressive\" type=\"video/mp4\" bitrate=\"851\" width=\"640\" height=\"360\" scalable=\"true\" maintainAspectRatio=\"true\"><![CDATA[https://gcdn.2mdn.net/videoplayback/id/38ee71b9f62992ac/itag/343/source/web_video_ads/xpc/EgVovf3BOg%3D%3D/ctier/L/acao/yes/ip/0.0.0.0/ipbits/0/expire/1752562660/sparams/ip,ipbits,expire,id,itag,source,xpc,ctier,acao/signature/139A3DD7611943ADEF6817E1121EADE356280540.8939D177CB0609C493050DAF85C86E19A4D48C1C/key/ck2/file/file.mp4]]></MediaFile><MediaFile id=\"882059949-344\" delivery=\"progressive\" type=\"video/mp4\" bitrate=\"1197\" width=\"640\" height=\"360\" scalable=\"true\" maintainAspectRatio=\"true\"><![CDATA[https://gcdn.2mdn.net/videoplayback/id/38ee71b9f62992ac/itag/344/source/web_video_ads/xpc/EgVovf3BOg%3D%3D/ctier/L/acao/yes/ip/0.0.0.0/ipbits/0/expire/1752562660/sparams/ip,ipbits,expire,id,itag,source,xpc,ctier,acao/signature/07E8588D4110EDA542E0AE7E1BAC069B07858590.7FD3C029CF7DA49529D03DEF6846658EE49E7BA2/key/ck2/file/file.mp4]]></MediaFile><MediaFile id=\"882059949-345\" delivery=\"progressive\" type=\"video/mp4\" bitrate=\"299\" width=\"640\" height=\"360\" scalable=\"true\" maintainAspectRatio=\"true\"><![CDATA[https://gcdn.2mdn.net/videoplayback/id/38ee71b9f62992ac/itag/345/source/web_video_ads/xpc/EgVovf3BOg%3D%3D/ctier/L/acao/yes/ip/0.0.0.0/ipbits/0/expire/1752562660/sparams/ip,ipbits,expire,id,itag,source,xpc,ctier,acao/signature/34239CFAEF25C4CCF57CDE6A7690BF89F4B6F5.79D9E30D630BE6E5D09727CCFFDEB2829DFC0C75/key/ck2/file/file.mp4]]></MediaFile><MediaFile id=\"882059949-346\" delivery=\"progressive\" type=\"video/mp4\" bitrate=\"486\" width=\"720\" height=\"406\" scalable=\"true\" maintainAspectRatio=\"true\"><![CDATA[https://gcdn.2mdn.net/videoplayback/id/38ee71b9f62992ac/itag/346/source/web_video_ads/xpc/EgVovf3BOg%3D%3D/ctier/L/acao/yes/ip/0.0.0.0/ipbits/0/expire/1752562660/sparams/ip,ipbits,expire,id,itag,source,xpc,ctier,acao/signature/78885A3F1457758A5A5135EFF676B9454DFC76C5.6E7F7FEA2581FC53B31FEB25638FCBB25FA91E89/key/ck2/file/file.mp4]]></MediaFile><MediaFile id=\"882059949-347\" delivery=\"progressive\" type=\"video/mp4\" bitrate=\"1732\" width=\"1024\" height=\"576\" scalable=\"true\" maintainAspectRatio=\"true\"><![CDATA[https://gcdn.2mdn.net/videoplayback/id/38ee71b9f62992ac/itag/347/source/web_video_ads/xpc/EgVovf3BOg%3D%3D/ctier/L/acao/yes/ip/0.0.0.0/ipbits/0/expire/1752562660/sparams/ip,ipbits,expire,id,itag,source,xpc,ctier,acao/signature/3CC3D1E2593FCB8A91F27ED97C86A8240867E2E4.99F9EAD1FE079982825634289B504C979D965FEC/key/ck2/file/file.mp4]]></MediaFile></MediaFiles></Linear></Creative></Creatives><Extensions><Extension type=\"geo\"><Country xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">US</Country><Bandwidth xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">0</Bandwidth></Extension><Extension type=\"dart\"><AdServingData xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"><DeliveryData><GeoData><![CDATA[ct=US&st=DC&city=13278&dma=13&zp=&bw=0]]></GeoData></DeliveryData></AdServingData></Extension><Extension type=\"GDBM\"><UniversalAdId xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"><Id>580999522-1</Id><InCreativeAdId>Yes</InCreativeAdId></UniversalAdId></Extension><Extension><Meta><![CDATA[name=pm-forcepixel;ver=1.0]]></Meta><Pixel loc=\"0\"><Code type=\"1\"><![CDATA[https://ads.pubmatic.com/AdServer/js/showad.js#PIX&ptask=DSP&SPug=1&fp=1&mpc=10&u=&p=160456&s=799454&d=2&cp=0&sc=1&rs=0&os=1&gdpr=0&gdpr_consent=1&gpp=&gpp_sid=]]></Code></Pixel></Extension><Extension type=\"AdVerifications\"><AdVerifications><Verification vendor=\"doubleclickbygoogle.com-omid-video\"><JavaScriptResource apiFramework=\"omid\" browserOptional=\"true\"><![CDATA[https://www.googletagservices.com/activeview/js/current/rx_omid_video.js]]></JavaScriptResource><VerificationParameters><![CDATA[{\"activeview_flags\":\"WyJ4JTI3ODQ0MCc5ZWZvdG0oJjc1MzM3NCUyYmVqdmYvJTI3ODQ0Pic5d3V2YiQmNTY1MzM+IT18dnFjKSEyNzM3OTQmPHFxdmIvJTwxNzM1MDIwIT1uZWh1YC8hMzY0PTUwNTEhOWFia3thKCQxNjAyMTA6MyY8Y2JvdGYrKjAxNTAwMzQ6JTJiZWp2Zi8lNzI7MTc2MTMhPWVmZHdhKic3NjQ2MzsyMSQ/ZWJrcGIkJjAzNjY3MTc+Kj5iZ2lwZishMz03MTIzNjMlOWFpaHdjKSE3MjAyPDIxNyc5ZWZvdG0oJjIwMDYxOzQ4Jj5gZG9wYi8lPDE3MDcyMDAhPTgoJjIwMDU1NzU/Jj5gZG9wYi8lPDE3MDY0Mj8hPXx2cWMpITcyMDE7PTUwJzl3dXZiJCYwMzY0MTY1NCo+YmdpcGYrITM9NzMxMTAzJTlhaWh3YykhNzIwMD8wNzMnOWVmb3RtKCYyMDA0PzUxOyY+YGRvcGIvJTwxNz40NzQ+IT1uZWh1YC8hMzY0MDY0MTIhOWFia3thKCQxNjc3NDU7PSY8Y2JvdGYrKjAxMjU0MTMzJTJwdnNgLyEzNjM4MzYyNCE5YWJre2EoJDE2NzU3ND43JjxxcXZiLyU8MTA0PTQ2MCE9bmVodWAvITM2Mzs0Mj43ITlhYmt7YSgkMTY1NjszPzwmPGNib3RmeiJd\",\"activeview_metadata\":\"la=0&sloi=1&mm=v&\",\"tracking_configuration\":{\"custom_metric_configurations\":[{\"criteria\":[\"visible=100,audible=1,time=10000ms,timeType=tos\"],\"id\":200104,\"name\":\"custom_metric_viewable_for_engaged_view_1721026660328\"}],\"tracking_events\":{\"acceptinvitation\":[\"https://ade.googlesyndication.com/ddm/activity/dc_oe=ChMI6tTy9buohwMV7gRoCB2uOQONEAAYACDS6K1oOhoI-evkngQQkLGCquwEGN2Kn-UDIP3srdzUEkITCJnH6_W7qIcDFfgLaAgdmtcOVkgAUDpYmHVg6KHzDWih4Yy-AYIBjAEKEwiZx-v1u6iHAxX4C2gIHZrXDlYSEwjGnvL1u6iHAxWTDmgIHcljCR0iGgjViM7rTxDisoWVAqgC-evkngSwAt2Kn-UDKIgnQAbgAQGAAgGYAgGgAv3srdzUEqgCBsACdpoDBDGRo7zQAwLiAx1lcy5zb2NpYWxwb2ludC5Nb25zdGVyTGVnZW5kcw;dc_rmcid=CAQSGwDaQooLok9zP9zz-sCGA2wcbIFqkESHrOg6zRgB;eps=CIhhEAEYXzIDioIBOg6AwICAgIAIgMCAgICgKEi9_cE6WNOf6_W7qIcD;met=1;acvw=%5BVIEWABILITY%5D;gv=%5BGOOGLE_VIEWABILITY%5D;ecn1=1;etm1=0;eid1=210011;\"],\"close\":[\"https://ade.googlesyndication.com/ddm/activity/dc_oe=ChMI6tTy9buohwMV7gRoCB2uOQONEAAYACDS6K1oOhoI-evkngQQkLGCquwEGN2Kn-UDIP3srdzUEkITCJnH6_W7qIcDFfgLaAgdmtcOVkgAUDpYmHVg6KHzDWih4Yy-AYIBjAEKEwiZx-v1u6iHAxX4C2gIHZrXDlYSEwjGnvL1u6iHAxWTDmgIHcljCR0iGgjViM7rTxDisoWVAqgC-evkngSwAt2Kn-UDKIgnQAbgAQGAAgGYAgGgAv3srdzUEqgCBsACdpoDBDGRo7zQAwLiAx1lcy5zb2NpYWxwb2ludC5Nb25zdGVyTGVnZW5kcw;dc_rmcid=CAQSGwDaQooLok9zP9zz-sCGA2wcbIFqkESHrOg6zRgB;eps=CIhhEAEYXzIDioIBOg6AwICAgIAIgMCAgICgKEi9_cE6WNOf6_W7qIcD;met=1;acvw=%5BVIEWABILITY%5D;gv=%5BGOOGLE_VIEWABILITY%5D;ecn1=1;etm1=0;eid1=210010;\"],\"complete\":[\"https://ade.googlesyndication.com/ddm/activity/dc_oe=ChMI6tTy9buohwMV7gRoCB2uOQONEAAYACDS6K1oOhoI-evkngQQkLGCquwEGN2Kn-UDIP3srdzUEkITCJnH6_W7qIcDFfgLaAgdmtcOVkgAUDpYmHVg6KHzDWih4Yy-AYIBjAEKEwiZx-v1u6iHAxX4C2gIHZrXDlYSEwjGnvL1u6iHAxWTDmgIHcljCR0iGgjViM7rTxDisoWVAqgC-evkngSwAt2Kn-UDKIgnQAbgAQGAAgGYAgGgAv3srdzUEqgCBsACdpoDBDGRo7zQAwLiAx1lcy5zb2NpYWxwb2ludC5Nb25zdGVyTGVnZW5kcw;dc_rmcid=CAQSGwDaQooLok9zP9zz-sCGA2wcbIFqkESHrOg6zRgB;eps=CIhhEAEYXzIDioIBOg6AwICAgIAIgMCAgICgKEi9_cE6WNOf6_W7qIcD;met=1;acvw=%5BVIEWABILITY%5D;gv=%5BGOOGLE_VIEWABILITY%5D;ecn1=1;etm1=0;eid1=210005;\"],\"custom_metric_viewable_for_engaged_view_1721026660328\":[\"https://ade.googlesyndication.com/ddm/activity/dc_oe=ChMI6tTy9buohwMV7gRoCB2uOQONEAAYACDS6K1oOhoI-evkngQQkLGCquwEGN2Kn-UDIP3srdzUEkITCJnH6_W7qIcDFfgLaAgdmtcOVkgAUDpYmHVg6KHzDWih4Yy-AYIBjAEKEwiZx-v1u6iHAxX4C2gIHZrXDlYSEwjGnvL1u6iHAxWTDmgIHcljCR0iGgjViM7rTxDisoWVAqgC-evkngSwAt2Kn-UDKIgnQAbgAQGAAgGYAgGgAv3srdzUEqgCBsACdpoDBDGRo7zQAwLiAx1lcy5zb2NpYWxwb2ludC5Nb25zdGVyTGVnZW5kcw;dc_rmcid=CAQSGwDaQooLok9zP9zz-sCGA2wcbIFqkESHrOg6zRgB;eps=CIhhEAEYXzIDioIBOg6AwICAgIAIgMCAgICgKEi9_cE6WNOf6_W7qIcD;met=1;acvw=%5BVIEWABILITY%5D;gv=%5BGOOGLE_VIEWABILITY%5D;ecn1=1;etm1=0;eid1=200104;\"],\"firstquartile\":[\"https://ade.googlesyndication.com/ddm/activity/dc_oe=ChMI6tTy9buohwMV7gRoCB2uOQONEAAYACDS6K1oOhoI-evkngQQkLGCquwEGN2Kn-UDIP3srdzUEkITCJnH6_W7qIcDFfgLaAgdmtcOVkgAUDpYmHVg6KHzDWih4Yy-AYIBjAEKEwiZx-v1u6iHAxX4C2gIHZrXDlYSEwjGnvL1u6iHAxWTDmgIHcljCR0iGgjViM7rTxDisoWVAqgC-evkngSwAt2Kn-UDKIgnQAbgAQGAAgGYAgGgAv3srdzUEqgCBsACdpoDBDGRo7zQAwLiAx1lcy5zb2NpYWxwb2ludC5Nb25zdGVyTGVnZW5kcw;dc_rmcid=CAQSGwDaQooLok9zP9zz-sCGA2wcbIFqkESHrOg6zRgB;eps=CIhhEAEYXzIDioIBOg6AwICAgIAIgMCAgICgKEi9_cE6WNOf6_W7qIcD;met=1;acvw=%5BVIEWABILITY%5D;gv=%5BGOOGLE_VIEWABILITY%5D;ecn1=1;etm1=0;eid1=210002;\"],\"fullscreen\":[\"https://ade.googlesyndication.com/ddm/activity/dc_oe=ChMI6tTy9buohwMV7gRoCB2uOQONEAAYACDS6K1oOhoI-evkngQQkLGCquwEGN2Kn-UDIP3srdzUEkITCJnH6_W7qIcDFfgLaAgdmtcOVkgAUDpYmHVg6KHzDWih4Yy-AYIBjAEKEwiZx-v1u6iHAxX4C2gIHZrXDlYSEwjGnvL1u6iHAxWTDmgIHcljCR0iGgjViM7rTxDisoWVAqgC-evkngSwAt2Kn-UDKIgnQAbgAQGAAgGYAgGgAv3srdzUEqgCBsACdpoDBDGRo7zQAwLiAx1lcy5zb2NpYWxwb2ludC5Nb25zdGVyTGVnZW5kcw;dc_rmcid=CAQSGwDaQooLok9zP9zz-sCGA2wcbIFqkESHrOg6zRgB;eps=CIhhEAEYXzIDioIBOg6AwICAgIAIgMCAgICgKEi9_cE6WNOf6_W7qIcD;met=1;acvw=%5BVIEWABILITY%5D;gv=%5BGOOGLE_VIEWABILITY%5D;ecn1=1;etm1=0;eid1=210009;\"],\"fully_viewable_audible_half_duration_impression\":[\"https://pagead2.googlesyndication.com/pcs/activeview?xai=AKAOjssCMtX29umXPiy3caoFLO81jSNy-7Gn_Esl8x8M1_u4ptbXz6g2ZyEby2MefANBWvm9608p9rFd7bxcVdMLRUE_1qw8f5IpLzeh067UksN-2CHlfnndbee0O-R9469ogLQz8mEjAAEknxzM-jS74qxtBg&sig=Cg0ArKJSzJ75V-AsqNn3EAE&id=lidarv&acvw=%5BVIEWABILITY%5D&gv=%5BGOOGLE_VIEWABILITY%5D\"],\"measurable_impression\":[\"https://pagead2.googlesyndication.com/pcs/activeview?xai=AKAOjssCMtX29umXPiy3caoFLO81jSNy-7Gn_Esl8x8M1_u4ptbXz6g2ZyEby2MefANBWvm9608p9rFd7bxcVdMLRUE_1qw8f5IpLzeh067UksN-2CHlfnndbee0O-R9469ogLQz8mEjAAEknxzM-jS74qxtBg&sig=Cg0ArKJSzJ75V-AsqNn3EAE&id=lidarv&acvw=%5BVIEWABILITY%5D&gv=%5BGOOGLE_VIEWABILITY%5D&avm=1\"],\"midpoint\":[\"https://ade.googlesyndication.com/ddm/activity/dc_oe=ChMI6tTy9buohwMV7gRoCB2uOQONEAAYACDS6K1oOhoI-evkngQQkLGCquwEGN2Kn-UDIP3srdzUEkITCJnH6_W7qIcDFfgLaAgdmtcOVkgAUDpYmHVg6KHzDWih4Yy-AYIBjAEKEwiZx-v1u6iHAxX4C2gIHZrXDlYSEwjGnvL1u6iHAxWTDmgIHcljCR0iGgjViM7rTxDisoWVAqgC-evkngSwAt2Kn-UDKIgnQAbgAQGAAgGYAgGgAv3srdzUEqgCBsACdpoDBDGRo7zQAwLiAx1lcy5zb2NpYWxwb2ludC5Nb25zdGVyTGVnZW5kcw;dc_rmcid=CAQSGwDaQooLok9zP9zz-sCGA2wcbIFqkESHrOg6zRgB;eps=CIhhEAEYXzIDioIBOg6AwICAgIAIgMCAgICgKEi9_cE6WNOf6_W7qIcD;met=1;acvw=%5BVIEWABILITY%5D;gv=%5BGOOGLE_VIEWABILITY%5D;ecn1=1;etm1=0;eid1=210003;\"],\"mute\":[\"https://ade.googlesyndication.com/ddm/activity/dc_oe=ChMI6tTy9buohwMV7gRoCB2uOQONEAAYACDS6K1oOhoI-evkngQQkLGCquwEGN2Kn-UDIP3srdzUEkITCJnH6_W7qIcDFfgLaAgdmtcOVkgAUDpYmHVg6KHzDWih4Yy-AYIBjAEKEwiZx-v1u6iHAxX4C2gIHZrXDlYSEwjGnvL1u6iHAxWTDmgIHcljCR0iGgjViM7rTxDisoWVAqgC-evkngSwAt2Kn-UDKIgnQAbgAQGAAgGYAgGgAv3srdzUEqgCBsACdpoDBDGRo7zQAwLiAx1lcy5zb2NpYWxwb2ludC5Nb25zdGVyTGVnZW5kcw;dc_rmcid=CAQSGwDaQooLok9zP9zz-sCGA2wcbIFqkESHrOg6zRgB;eps=CIhhEAEYXzIDioIBOg6AwICAgIAIgMCAgICgKEi9_cE6WNOf6_W7qIcD;met=1;acvw=%5BVIEWABILITY%5D;gv=%5BGOOGLE_VIEWABILITY%5D;ecn1=1;etm1=0;eid1=210006;\"],\"pause\":[\"https://ade.googlesyndication.com/ddm/activity/dc_oe=ChMI6tTy9buohwMV7gRoCB2uOQONEAAYACDS6K1oOhoI-evkngQQkLGCquwEGN2Kn-UDIP3srdzUEkITCJnH6_W7qIcDFfgLaAgdmtcOVkgAUDpYmHVg6KHzDWih4Yy-AYIBjAEKEwiZx-v1u6iHAxX4C2gIHZrXDlYSEwjGnvL1u6iHAxWTDmgIHcljCR0iGgjViM7rTxDisoWVAqgC-evkngSwAt2Kn-UDKIgnQAbgAQGAAgGYAgGgAv3srdzUEqgCBsACdpoDBDGRo7zQAwLiAx1lcy5zb2NpYWxwb2ludC5Nb25zdGVyTGVnZW5kcw;dc_rmcid=CAQSGwDaQooLok9zP9zz-sCGA2wcbIFqkESHrOg6zRgB;eps=CIhhEAEYXzIDioIBOg6AwICAgIAIgMCAgICgKEi9_cE6WNOf6_W7qIcD;met=1;acvw=%5BVIEWABILITY%5D;gv=%5BGOOGLE_VIEWABILITY%5D;ecn1=1;etm1=0;eid1=210008;\"],\"start\":[\"https://ade.googlesyndication.com/ddm/activity/dc_oe=ChMI6tTy9buohwMV7gRoCB2uOQONEAAYACDS6K1oOhoI-evkngQQkLGCquwEGN2Kn-UDIP3srdzUEkITCJnH6_W7qIcDFfgLaAgdmtcOVkgAUDpYmHVg6KHzDWih4Yy-AYIBjAEKEwiZx-v1u6iHAxX4C2gIHZrXDlYSEwjGnvL1u6iHAxWTDmgIHcljCR0iGgjViM7rTxDisoWVAqgC-evkngSwAt2Kn-UDKIgnQAbgAQGAAgGYAgGgAv3srdzUEqgCBsACdpoDBDGRo7zQAwLiAx1lcy5zb2NpYWxwb2ludC5Nb25zdGVyTGVnZW5kcw;dc_rmcid=CAQSGwDaQooLok9zP9zz-sCGA2wcbIFqkESHrOg6zRgB;eps=CIhhEAEYXzIDioIBOg6AwICAgIAIgMCAgICgKEi9_cE6WNOf6_W7qIcD;met=1;acvw=%5BVIEWABILITY%5D;gv=%5BGOOGLE_VIEWABILITY%5D;dc_rfl=%5BURL_SIGNALS%5D;ecn1=1;etm1=0;eid1=210001;\"],\"thirdquartile\":[\"https://ade.googlesyndication.com/ddm/activity/dc_oe=ChMI6tTy9buohwMV7gRoCB2uOQONEAAYACDS6K1oOhoI-evkngQQkLGCquwEGN2Kn-UDIP3srdzUEkITCJnH6_W7qIcDFfgLaAgdmtcOVkgAUDpYmHVg6KHzDWih4Yy-AYIBjAEKEwiZx-v1u6iHAxX4C2gIHZrXDlYSEwjGnvL1u6iHAxWTDmgIHcljCR0iGgjViM7rTxDisoWVAqgC-evkngSwAt2Kn-UDKIgnQAbgAQGAAgGYAgGgAv3srdzUEqgCBsACdpoDBDGRo7zQAwLiAx1lcy5zb2NpYWxwb2ludC5Nb25zdGVyTGVnZW5kcw;dc_rmcid=CAQSGwDaQooLok9zP9zz-sCGA2wcbIFqkESHrOg6zRgB;eps=CIhhEAEYXzIDioIBOg6AwICAgIAIgMCAgICgKEi9_cE6WNOf6_W7qIcD;met=1;acvw=%5BVIEWABILITY%5D;gv=%5BGOOGLE_VIEWABILITY%5D;ecn1=1;etm1=0;eid1=210004;\"],\"unmute\":[\"https://ade.googlesyndication.com/ddm/activity/dc_oe=ChMI6tTy9buohwMV7gRoCB2uOQONEAAYACDS6K1oOhoI-evkngQQkLGCquwEGN2Kn-UDIP3srdzUEkITCJnH6_W7qIcDFfgLaAgdmtcOVkgAUDpYmHVg6KHzDWih4Yy-AYIBjAEKEwiZx-v1u6iHAxX4C2gIHZrXDlYSEwjGnvL1u6iHAxWTDmgIHcljCR0iGgjViM7rTxDisoWVAqgC-evkngSwAt2Kn-UDKIgnQAbgAQGAAgGYAgGgAv3srdzUEqgCBsACdpoDBDGRo7zQAwLiAx1lcy5zb2NpYWxwb2ludC5Nb25zdGVyTGVnZW5kcw;dc_rmcid=CAQSGwDaQooLok9zP9zz-sCGA2wcbIFqkESHrOg6zRgB;eps=CIhhEAEYXzIDioIBOg6AwICAgIAIgMCAgICgKEi9_cE6WNOf6_W7qIcD;met=1;acvw=%5BVIEWABILITY%5D;gv=%5BGOOGLE_VIEWABILITY%5D;ecn1=1;etm1=0;eid1=210007;\"],\"viewable_impression\":[\"https://pagead2.googlesyndication.com/pcs/activeview?xai=AKAOjssCMtX29umXPiy3caoFLO81jSNy-7Gn_Esl8x8M1_u4ptbXz6g2ZyEby2MefANBWvm9608p9rFd7bxcVdMLRUE_1qw8f5IpLzeh067UksN-2CHlfnndbee0O-R9469ogLQz8mEjAAEknxzM-jS74qxtBg&sig=Cg0ArKJSzJ75V-AsqNn3EAE&id=lidarv&acvw=%5BVIEWABILITY%5D&gv=%5BGOOGLE_VIEWABILITY%5D\"]}},\"ufs_integrator_metadata\":\"CgIYAA\"}]]></VerificationParameters><TrackingEvents><Tracking event=\"verificationNotExecuted\"><![CDATA[https://ade.googlesyndication.com/ddm/activity/dc_oe=ChMI6tTy9buohwMV7gRoCB2uOQONEAAYACDS6K1oOhoI-evkngQQkLGCquwEGN2Kn-UDIP3srdzUEkITCJnH6_W7qIcDFfgLaAgdmtcOVkgAUDpYmHVg6KHzDWih4Yy-AYIBjAEKEwiZx-v1u6iHAxX4C2gIHZrXDlYSEwjGnvL1u6iHAxWTDmgIHcljCR0iGgjViM7rTxDisoWVAqgC-evkngSwAt2Kn-UDKIgnQAbgAQGAAgGYAgGgAv3srdzUEqgCBsACdpoDBDGRo7zQAwLiAx1lcy5zb2NpYWxwb2ludC5Nb25zdGVyTGVnZW5kcw;dc_rmcid=CAQSGwDaQooLok9zP9zz-sCGA2wcbIFqkESHrOg6zRgB;eps=CIhhEAEYXzIDioIBOg6AwICAgIAIgMCAgICgKEi9_cE6WNOf6_W7qIcD;met=1;ecn1=1;etm1=0;eid1=210014;errorcode=%5BREASON%5D]]></Tracking></TrackingEvents></Verification><Verification vendor=\"Moat\"><ViewableImpression id=\"0\"><![CDATA[https://px.moatads.com/pixel.gif?moatPartnerId=0&moatPartnerKey=0&moatNode=true]]></ViewableImpression></Verification></AdVerifications></Extension></Extensions></InLine></Ad></VAST>",
                    "adomain": [
                        "foodpanda.ph"
                    ],
                    "iurl": "",
                    "cid": "0",
                    "crid": "34410_580999522",
                    "attr": [
                        15,
                        16
                    ],
                    "w": 640,
                    "h": 360,
                    "burl": "https://t.appads.in/api/track?crid=580999522&pt_fp=0.01&apid=bf5d9c029400934802f4c4f119dabc0f&lt=0&pt_bp=1.5000000000000002&oid=34410&isrtb=1&ht=320&tstp=1721026660363&tid=9af5bda0-eef4-41cb-9142-4f11bbb07281&chid=7977&wopid=a3690642-2b90-4384-959a-a66bd9d97d51&eap=5.0&cntry=philippines&tkn=d33d0a27a22ec98386807873ad0595ce&exdi=PM-WJNU-0659&bundle=es.socialpoint.MonsterLegends&wot=4&wt=480&did=0fa94627-9b47-4a43-b99f-603c141b6a8d&ap=${AUCTION_PRICE}&aid=${AUCTION_ID}&event=104&",
                    "lurl": "https://tl.appads.in/api/bidloss?crid=580999522&pt_fp=0.01&apid=bf5d9c029400934802f4c4f119dabc0f&lt=0&pt_bp=1.5000000000000002&oid=34410&isrtb=1&ht=320&tstp=1721026660363&tid=9af5bda0-eef4-41cb-9142-4f11bbb07281&chid=7977&wopid=a3690642-2b90-4384-959a-a66bd9d97d51&eap=5.0&cntry=philippines&tkn=d33d0a27a22ec98386807873ad0595ce&exdi=PM-WJNU-0659&bundle=es.socialpoint.MonsterLegends&wot=4&wt=480&did=0fa94627-9b47-4a43-b99f-603c141b6a8d&ap=${AUCTION_PRICE}&aid=${AUCTION_ID}&event=4013&blr=${AUCTION_LOSS}&mbtw=${MIN_BID_TO_WIN}&",
                    "dur": 15,
                    "mtype": 2,
                    "ext": {}
                }
            ],
            "seat": "603"
        }
    ],
    "bidid": "9af5bda0-eef4-41cb-9142-4f121rwsagf7281",
    "cur": "USD",
    "customdata": ""
}
```

***

### Banner/Interstitial RTB Request

```json
{
   "app": {
      "bundle": "302000101",
      "cat": [
         "IAB1"
      ],
      "domain": "itunes.apple.com",
      "id": "130000001",
      "name": "Demo_Adspace_Placement_320x50",
      "publisher": {
         "id": "1001000001",
         "name": "Demo"
      }
   },
   "at": 2,
   "bcat": [
      "IAB17-18",
      "IAB7-42",
      "IAB23",
      "IAB7-28",
      "IAB26",
      "IAB25",
      "IAB9-9",
      "IAB24"
   ],
   "device": {
      "connectiontype": 0,
      "devicetype": 1,
      "dnt": 0,
      "ifa": "F585B1EF-D543-4F9C-A39F-A204BD9C1E33",
      "didsha1": "03791cf87e352da6434e4d964f54f0f64db933aa",
      "didmd5": "68b329da9893e34099c7d8ad5cb9c940",
      "dpisha1": "bfc523f83fa54a19e7b2d8bdf8acd687a09fba09",
      "dpimd5": "223632c428784fecaaa3e2a6aaaf6d8e",
      "geo": {
         "city": "Shenzhen",
         "country": "HKG",
         "lat": 22.319147,
         "lon": 114.22968,
         "metro": "0",
         "region": "30",
         "type": 3,
         "zip": "518019"
      },
      "ip": "210.6.191.180",
      "js": 1,
      "make": "Apple",
      "model": "iPhone",
      "os": "iOS",
      "osv": "7.1",
      "ua": "Mozilla\/5.0 (iPhone; CPU iPhone OS 7_1_2 like Mac OS X) AppleWebKit\/537.51.2
      (KHTML, like Gecko) Mobile\/11D257"
   },
   "id": "BqzFJc1Ze7",
   "imp": [
      {
         "banner": {
            "api": [
               3,
               5
            ],
            "h": 50,
            "mimes": [
               "application\/javascript",
               "text\/javascript"
            ],
            "btype": [
               1,
               2
            ],
            "pos": 0,
            "w": 300
         },
         "displaymanager": "SOMA",
         "displaymanagerver": "adtag2210s",
         "id": "1",
         "instl": 1,
         "secure": 0
      }
   ],
   "regs": {
      "coppa": 0
   },
   "user": {
      "id": "0088ba87-b96f-483d-85e3-36723ad6c60d"
   }
}
```

***

### Banner/Interstitial RTB Response

```json
{
   "id": "BqzFJc1Ze7",
   "seatbid": [
      {
         "bid": [
            {
               "id": "c2bb9fd2-fa7e-4c11-88d4-642b8d28bf69",
               "impid": "1",
               "price": 1,
               "adid": “7709",
               "nurl": "https://sg-vdo.pokkt.com/api/redirect?
country=hong+kong&app_version=&device_model=iPhone&categoryIab=IAB1&city=central+dist
rict&app_bundle_name=Demo_Adspace_Placement_320x50&latitude=22.319147&screen=&ski
p=0&language=&device_type=&creative_id=11398&mac_address=&appId=&sdk_version=&adv
_id=473&state=&carrier_name=Hong+Kong+Broadband+Network+Ltd&brand=Apple&campaign
_id=6062&opt_userid=0088ba87-
b96f-483d-85e3-36723ad6c60d×tamp=1480580919768&longitude=114.22968&device_id=
&connection_type=UNKNOWN&is_rtb=1&appName=swaraj+test+app&ip=210.6.191.180&os_ve
rsion=7.1&advertisingID=F585B1EF-D543-4F9C-A39FA204BD9C1E33&
vc=0.0&offer_id=7709&ad_id=7709&user_id=0&track_id=19710fd1-ff16-4795-
b37f-40e03d2136c4&marketing_name=iPhone&device=ios&&event=41&auction_price=$
{AUCTION_PRICE}",
"adm": "\n <span class="hljs-doctype"><!DOCTYPE html></span>\r\n<span class="hljs-tag"><<span class="hljs-title">html</span> <span class="hljs-attribute">lang</span>=<span class="hljs-value">\"en\"</span>></span>\r\n \t<span class="hljs-tag"><<span class="hljs-title">head</span>></span>\r\n\t <span class="hljs-tag"><<span class="hljs-title">meta</span>
<span class="hljs-attribute">charset</span>=<span class="hljs-value">\"utf-8\"</span>></span>\r\n\t <span class="hljs-tag"><<span class="hljs-title">meta</span> <span class="hljs-attribute">http-equiv</span>=<span class="hljs-value">\"X-UA-Compatible\"</span> <span class="hljs-attribute">content</span>=<span class="hljs-value">\"IE=edge\"</span>></span>\r\n\t
<span class="hljs-tag"><<span class="hljs-title">meta</span> <span class="hljs-attribute">name</span>=<span class="hljs-value">\"viewport\"</span> <span class="hljs-attribute">content</span>=<span class="hljs-value">\"width=device-width,</span> <span class="hljs-attribute">initial-scale</span>=<span class="hljs-value">1.0\"</span>></span>\r\n\t
<span class="hljs-tag"><<span class="hljs-title">title</span>></span>Rexona<span class="hljs-tag"></<span class="hljs-title">title</span>></span>\r\n\t <span class="hljs-tag"><<span class="hljs-title">link</span> <span class="hljs-attribute">href</span>=<span class="hljs-value">\"https:</span>//<span class="hljs-attribute">pokktvideos.s3.amazonaws.com</span>/<span class="hljs-attribute">survey</span>/<span class="hljs-attribute">css</span>/
<span class="hljs-attribute">rexona_normalize.css</span>\" <span class="hljs-attribute">rel</span>=<span class="hljs-value">\"stylesheet\"</span>></span>\r\n\t <span class="hljs-tag"><<span class="hljs-title">link</span> <span class="hljs-attribute">href</span>=<span class="hljs-value">\"https:</span>//
<span class="hljs-attribute">pokktvideos.s3.amazonaws.com</span>/<span class="hljs-attribute">survey</span>/<span class="hljs-attribute">css</span>/<span class="hljs-attribute">rexona_style.css</span>\" <span class="hljs-attribute">rel</span>=<span class="hljs-value">\"stylesheet\"</span>></span>\r\n\t <span class="hljs-tag"><<span class="hljs-title">script</span>
<span class="hljs-attribute">src</span>=<span class="hljs-value">\"https:</span>//<span class="hljs-attribute">pokktvideos.s3.amazonaws.com</span>/<span class="hljs-attribute">survey</span>/<span class="hljs-attribute">js</span>/<span class="hljs-attribute">rexona_jquery-1.11.2.min.js</span>\"></span><span class="handlebars"><span class="xml"><span class="hljs-tag"></
<span class="hljs-attribute">script</span>></span>\r\n\t <span class="hljs-tag"><<span class="hljs-title">script</span> <span class="hljs-attribute">src</span>=<span class="hljs-value">\"https:</span>//<span class="hljs-attribute">pokktvideos.s3.amazonaws.com</span>/<span class="hljs-attribute">survey</span>/<span class="hljs-attribute">js</span>/<span class="hljs-attribute">rexona_jquerymigrate-</span>
<span class="hljs-attribute">1.2.1.min.js</span>\"></span><span class="undefined"></span></span></span><span class="hljs-tag"></<span class="hljs-title">script</span>></span>\r\n\t <span class="hljs-tag"><<span class="hljs-title">script</span> <span class="hljs-attribute">src</span>=<span class="hljs-value">\"https:</span>//<span class="hljs-attribute">cdnjs.cloudflare.com</span>/<span class="hljs-attribute">ajax</span>/<span class="hljs-attribute">libs</span>/<span class="hljs-attribute">gsap</span>/
<span class="hljs-attribute">1.18.0</span>/<span class="hljs-attribute">plugins</span>/<span class="hljs-attribute">CSSPlugin.min.js</span>\"></span><span class="undefined"></span><span class="hljs-tag"></<span class="hljs-title">script</span>></span>\r\n\t\t<span class="hljs-tag"><<span class="hljs-title">script</span> <span class="hljs-attribute">src</span>=<span class="hljs-value">\"https:</span>//<span class="hljs-attribute">cdnjs.cloudflare.com</span>/<span class="hljs-attribute">ajax</span>/
<span class="hljs-attribute">libs</span>/<span class="hljs-attribute">gsap</span>/<span class="hljs-attribute">1.18.0</span>/<span class="hljs-attribute">easing</span>/<span class="hljs-attribute">EasePack.min.js</span>\"></span><span class="undefined"></span><span class="hljs-tag"></<span class="hljs-title">script</span>></span>\r\n\t\t<span class="hljs-tag"><<span class="hljs-title">script</span> <span class="hljs-attribute">src</span>=<span class="hljs-value">\"https:</span>//
<span class="hljs-attribute">cdnjs.cloudflare.com</span>/<span class="hljs-attribute">ajax</span>/<span class="hljs-attribute">libs</span>/<span class="hljs-attribute">gsap</span>/<span class="hljs-attribute">1.18.0</span>/<span class="hljs-attribute">TweenLite.min.js</span>\"></span><span class="undefined"></span><span class="hljs-tag"></<span class="hljs-title">script</span>></span>\r\n\t\t<span class="hljs-tag"><<span class="hljs-title">script</span> <span class="hljs-attribute">src</span>=<span class="hljs-value">\"https:</span>//
<span class="hljs-attribute">cdnjs.cloudflare.com</span>/<span class="hljs-attribute">ajax</span>/<span class="hljs-attribute">libs</span>/<span class="hljs-attribute">gsap</span>/<span class="hljs-attribute">1.18.0</span>/<span class="hljs-attribute">TweenMax.min.js</span>\"></span><span class="undefined"></span><span class="hljs-tag"></<span class="hljs-title">script</span>></span>\r\n\t\t<span class="hljs-tag"><<span class="hljs-title">script</span>
<span class="hljs-attribute">src</span>=<span class="hljs-value">\"https:</span>//<span class="hljs-attribute">pokktvideos.s3.amazonaws.com</span>/<span class="hljs-attribute">survey</span>/<span class="hljs-attribute">js</span>/<span class="hljs-attribute">rexona_functions.js</span>\"></span><span class="handlebars"><span class="xml"><span class="hljs-tag"></
<span class="hljs-attribute">script</span>></span>\r\n\t\t<span class="hljs-tag"><<span class="hljs-title">script</span> <span class="hljs-attribute">type</span>=<span class="hljs-value">\"text</span>/<span class="hljs-attribute">javascript</span>\"></span><span class="undefined">\r\n\t\t\tvar timestamp = new Date().getTime();
\r\n\t\t\tvar clickTag = 'https://bs.serving-sys.com/BurstingPipe/adServer.bs?
cn=tf&c=20&mc=click&pli=19069556&PluID=0&ord='+ timestamp;\r\n\t\t</span></span></span><span class="hljs-tag"></<span class="hljs-title">script</span>></span>\r\n \t<span class="hljs-tag"></
<span class="hljs-attribute">head</span>></span>\r\n \t<span class="hljs-tag"><<span class="hljs-title">body</span>></span>\r\n \t\t\r\n \t\t<span class="hljs-tag"><<span class="hljs-title">div</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">\"scene\"</span> <span class="hljs-attribute">id</span>=<span class="hljs-value">\"scene-1\"</span>></span>\r\n \t\t\t<span class="hljs-tag"><<span class="hljs-title">div</span>
<span class="hljs-attribute">class</span>=<span class="hljs-value">\"scene-1-top\"</span> <span class="hljs-attribute">id</span>=<span class="hljs-value">\"scene-1-top\"</span>></span>\r\n \t\t\t\t<span class="hljs-tag"><<span class="hljs-title">div</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">\"table\"</span>></span>\r\n \t\t\t\t\t<span class="hljs-tag"><<span class="hljs-title">div</span>
<span class="hljs-attribute">class</span>=<span class="hljs-value">\"table-row\"</span>></span>\r\n \t\t\t\t\t\t<span class="hljs-tag"><<span class="hljs-title">div</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">\"table-cell\"</span>></span>\r\n \t\t\t\t\t\t\t<span class="hljs-tag"><<span class="hljs-title">img</span> <span class="hljs-attribute">id</span>=<span class="hljs-value">\"main-copy-1\"</span>
<span class="hljs-attribute">src</span>=<span class="hljs-value">\"https:</span>//<span class="hljs-attribute">pokktvideos.s3.amazonaws.com</span>/<span class="hljs-attribute">survey</span>/<span class="hljs-attribute">img</span>/<span class="hljs-attribute">rexona_main-copy.png</span>\" /></span>\r\n
\t\t\t\t\t\t\t<span class="hljs-comment"><!-- <a href=\"\" id=\"btn-main\"><img src=\"https://pokktvideos.s3.amazonaws.com/
survey/img/rexona_btn-main.png\" /></a> --></span>\r\n \t\t\t\t\t\t<span class="hljs-tag"></<span class="hljs-title">div</span>></span>\r\n \t\t\t\t\t<span class="hljs-tag"></<span class="hljs-title">div</span>></span>\r\n \t\t\t\t<span class="hljs-tag"></
<span class="hljs-attribute">div</span>></span>\r\n \t\t\t<span class="hljs-tag"></<span class="hljs-title">div</span>></span>\r\n \t\t\t<span class="hljs-tag"><<span class="hljs-title">div</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">\"scene-1-bottom\"</span> <span class="hljs-attribute">id</span>=<span class="hljs-value">\"scene-1-bottom\"</span>></span>\r\n \t\t\t\t<span class="hljs-tag"><<span class="hljs-title">img</span>
<span class="hljs-attribute">id</span>=<span class="hljs-value">\"rexona-bottle\"</span> <span class="hljs-attribute">src</span>=<span class="hljs-value">\"https:</span>//<span class="hljs-attribute">pokktvideos.s3.amazonaws.com</span>/<span class="hljs-attribute">survey</span>/<span class="hljs-attribute">img</span>/<span class="hljs-attribute">rexonabottle.</span>
<span class="hljs-attribute">png</span>\" /></span>\r\n \t\t\t\t<span class="hljs-tag"><<span class="hljs-title">img</span> <span class="hljs-attribute">id</span>=<span class="hljs-value">\"main-copy-2\"</span> <span class="hljs-attribute">src</span>=<span class="hljs-value">\"https:</span>//<span class="hljs-attribute">pokktvideos.s3.amazonaws.com</span>/
<span class="hljs-attribute">survey</span>/<span class="hljs-attribute">img</span>/<span class="hljs-attribute">rexona_main-copy-2.png</span>\" /></span>\r\n \t\t\t<span class="hljs-tag"></<span class="hljs-title">div</span>></span>\r\n \t\t<span class="hljs-tag"></<span class="hljs-title">div</span>></span> <span class="hljs-comment"><!--#scene-1--></span>\r\n\r\n
\t\t<span class="hljs-tag"><<span class="hljs-title">div</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">\"scene\"</span> <span class="hljs-attribute">id</span>=<span class="hljs-value">\"scene-2\"</span> <span class="hljs-attribute">style</span>=<span class="hljs-value">\"display:none\"</span>></span>\r\n \t\t\t<span class="hljs-tag"><<span class="hljs-title">div</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">\"time-barbox\"</span>></span>\
r\n \t\t\t\t<span class="hljs-tag"><<span class="hljs-title">div</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">\"time-bar-body\"</span>></span>\r\n\t \t\t\t\t<span class="hljs-tag"><<span class="hljs-title">div</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">\"time-bar\"</span>></span><span class="hljs-tag"><<span class="hljs-title">img</span>
<span class="hljs-attribute">src</span>=<span class="hljs-value">\"https:</span>//<span class="hljs-attribute">pokktvideos.s3.amazonaws.com</span>/<span class="hljs-attribute">survey</span>/<span class="hljs-attribute">img</span>/<span class="hljs-attribute">rexona_time-text.png</span>\"></span><span class="hljs-tag"></<span class="hljs-title">div</span>></span>\r\n\t
\t\t\t\t<span class="hljs-tag"><<span class="hljs-title">div</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">\"time-clock\"</span>></span>\r\n\t \t\t\t\t\t<span class="hljs-tag"><<span class="hljs-title">img</span> <span class="hljs-attribute">src</span>=<span class="hljs-value">\"https:</span>//<span class="hljs-attribute">pokktvideos.s3.amazonaws.com</span>/
<span class="hljs-attribute">survey</span>/<span class="hljs-attribute">img</span>/<span class="hljs-attribute">rexona_clock.png</span>\"></span>\r\n\t \t\t\t\t\t<span class="hljs-tag"><<span class="hljs-title">span</span> <span class="hljs-attribute">id</span>=<span class="hljs-value">\"time-number\"</span>></span>9.99<span class="hljs-tag"></<span class="hljs-title">span</span>></span>\r\n\t \t\t\t\t<span class="hljs-tag"></
<span class="hljs-attribute">div</span>></span>\r\n \t\t\t\t<span class="hljs-tag"></<span class="hljs-title">div</span>></span>\r\n \t\t\t<span class="hljs-tag"></<span class="hljs-title">div</span>></span>\r\n \t\t\t<span class="hljs-tag"><<span class="hljs-title">img</span> <span class="hljs-attribute">id</span>=<span class="hljs-value">\"rexona-bottle-2\"</span> <span class="hljs-attribute">src</span>=<span class="hljs-value">\"https:</span>//
<span class="hljs-attribute">pokktvideos.s3.amazonaws.com</span>/<span class="hljs-attribute">survey</span>/<span class="hljs-attribute">img</span>/<span class="hljs-attribute">rexona-bottle-2.png</span>\" /></span>\r\n \t\t\t<span class="hljs-tag"><<span class="hljs-title">div</span>
<span class="hljs-attribute">class</span>=<span class="hljs-value">\"progress-bar\"</span> <span class="hljs-attribute">style</span>=<span class="hljs-value">\"display:none\"</span>></span>\r\n \t\t\t\t<span class="hljs-tag"><<span class="hljs-title">div</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">\"progress-bar-box\"</span>></span>\r\n
\t\t\t\t\t<span class="hljs-tag"><<span class="hljs-title">div</span> <span class="hljs-attribute">id</span>=<span class="hljs-value">\"progress-bar-img\"</span>></span><span class="hljs-tag"></<span class="hljs-title">div</span>></span>\r\n \t\t\t\t<span class="hljs-tag"></<span class="hljs-title">div</span>></span>\r\n \t\t\t<span class="hljs-tag"></<span class="hljs-title">div</span>></span>\r\n\r\n \t\t\t<span class="hljs-tag"><<span class="hljs-title">div</span>
<span class="hljs-attribute">id</span>=<span class="hljs-value">\"bacteria-box\"</span>></span>\r\n\t \t\t\t<span class="hljs-tag"><<span class="hljs-title">img</span> <span class="hljs-attribute">id</span>=<span class="hljs-value">\"bacteria-1\"</span> <span class="hljs-attribute">rel</span>=<span class="hljs-value">\"1\"</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">\"bacteria\"</span> <span class="hljs-attribute">src</span>=<span class="hljs-value">\"https:</span>//
<span class="hljs-attribute">pokktvideos.s3.amazonaws.com</span>/<span class="hljs-attribute">survey</span>/<span class="hljs-attribute">img</span>/<span class="hljs-attribute">rexona_bacteria-1.png</span>\"></span>\r\n\t \t\t\t<span class="hljs-tag"><<span class="hljs-title">img</span>
<span class="hljs-attribute">id</span>=<span class="hljs-value">\"bacteria-2\"</span> <span class="hljs-attribute">rel</span>=<span class="hljs-value">\"2\"</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">\"bacteria\"</span> <span class="hljs-attribute">src</span>=<span class="hljs-value">\"https:</span>//<span class="hljs-attribute">pokktvideos.s3.amazonaws.com</span>/<span class="hljs-attribute">survey</span>/
<span class="hljs-attribute">img</span>/<span class="hljs-attribute">rexona_bacteria-2.png</span>\"></span>\r\n\t \t\t\t<span class="hljs-tag"><<span class="hljs-title">img</span> <span class="hljs-attribute">id</span>=<span class="hljs-value">\"bacteria-3\"</span> <span class="hljs-attribute">rel</span>=<span class="hljs-value">\"3\"</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">\"bacteria\"</span>
<span class="hljs-attribute">src</span>=<span class="hljs-value">\"https:</span>//<span class="hljs-attribute">pokktvideos.s3.amazonaws.com</span>/<span class="hljs-attribute">survey</span>/<span class="hljs-attribute">img</span>/<span class="hljs-attribute">rexona_bacteria-3.png</span>\"></span>\r\n\t \t\t\t<span class="hljs-tag"><<span class="hljs-title">img</span>
<span class="hljs-attribute">id</span>=<span class="hljs-value">\"bacteria-4\"</span> <span class="hljs-attribute">rel</span>=<span class="hljs-value">\"4\"</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">\"bacteria\"</span> <span class="hljs-attribute">src</span>=<span class="hljs-value">\"https:</span>//<span class="hljs-attribute">pokktvideos.s3.amazonaws.com</span>/<span class="hljs-attribute">survey</span>/
<span class="hljs-attribute">img</span>/<span class="hljs-attribute">rexona_bacteria-4.png</span>\"></span>\r\n\t \t\t\t<span class="hljs-tag"><<span class="hljs-title">img</span> <span class="hljs-attribute">id</span>=<span class="hljs-value">\"bacteria-5\"</span> <span class="hljs-attribute">rel</span>=<span class="hljs-value">\"5\"</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">\"bacteria\"</span>
<span class="hljs-attribute">src</span>=<span class="hljs-value">\"https:</span>//<span class="hljs-attribute">pokktvideos.s3.amazonaws.com</span>/<span class="hljs-attribute">survey</span>/<span class="hljs-attribute">img</span>/<span class="hljs-attribute">rexona_bacteria-5.png</span>\"></span>\r\n\t \t\t\t<span class="hljs-tag"><<span class="hljs-title">img</span>
<span class="hljs-attribute">id</span>=<span class="hljs-value">\"bacteria-6\"</span> <span class="hljs-attribute">rel</span>=<span class="hljs-value">\"6\"</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">\"bacteria\"</span> <span class="hljs-attribute">src</span>=<span class="hljs-value">\"https:</span>//<span class="hljs-attribute">pokktvideos.s3.amazonaws.com</span>/<span class="hljs-attribute">survey</span>/
<span class="hljs-attribute">img</span>/<span class="hljs-attribute">rexona_bacteria-6.png</span>\"></span>\r\n\t \t\t\t<span class="hljs-tag"><<span class="hljs-title">img</span> <span class="hljs-attribute">id</span>=<span class="hljs-value">\"bacteria-7\"</span> <span class="hljs-attribute">rel</span>=<span class="hljs-value">\"7\"</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">\"bacteria\"</span>
<span class="hljs-attribute">src</span>=<span class="hljs-value">\"https:</span>//<span class="hljs-attribute">pokktvideos.s3.amazonaws.com</span>/<span class="hljs-attribute">survey</span>/<span class="hljs-attribute">img</span>/<span class="hljs-attribute">rexona_bacteria-7.png</span>\"></span>\r\n\t \t\t\t<span class="hljs-tag"><<span class="hljs-title">img</span>
<span class="hljs-attribute">id</span>=<span class="hljs-value">\"bacteria-8\"</span> <span class="hljs-attribute">rel</span>=<span class="hljs-value">\"8\"</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">\"bacteria\"</span> <span class="hljs-attribute">src</span>=<span class="hljs-value">\"https:</span>//<span class="hljs-attribute">pokktvideos.s3.amazonaws.com</span>/<span class="hljs-attribute">survey</span>/
<span class="hljs-attribute">img</span>/<span class="hljs-attribute">rexona_bacteria-8.png</span>\"></span>\r\n\t \t\t\t<span class="hljs-tag"><<span class="hljs-title">img</span> <span class="hljs-attribute">id</span>=<span class="hljs-value">\"bacteria-9\"</span> <span class="hljs-attribute">rel</span>=<span class="hljs-value">\"9\"</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">\"bacteria\"</span>
<span class="hljs-attribute">src</span>=<span class="hljs-value">\"https:</span>//<span class="hljs-attribute">pokktvideos.s3.amazonaws.com</span>/<span class="hljs-attribute">survey</span>/<span class="hljs-attribute">img</span>/<span class="hljs-attribute">rexona_bacteria-9.png</span>\"></span>\r\n\t \t\t\t<span class="hljs-tag"><<span class="hljs-title">img</span>
<span class="hljs-attribute">id</span>=<span class="hljs-value">\"bacteria-10\"</span> <span class="hljs-attribute">rel</span>=<span class="hljs-value">\"10\"</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">\"bacteria\"</span> <span class="hljs-attribute">src</span>=<span class="hljs-value">\"https:</span>//<span class="hljs-attribute">pokktvideos.s3.amazonaws.com</span>/
<span class="hljs-attribute">survey</span>/<span class="hljs-attribute">img</span>/<span class="hljs-attribute">rexona_bacteria-10.png</span>\"></span>\r\n \t\t\t<span class="hljs-tag"></<span class="hljs-title">div</span>></span>\r\n\r\n \t\t\t<span class="hljs-tag"><<span class="hljs-title">div</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">\"spray\"</span>
<span class="hljs-attribute">id</span>=<span class="hljs-value">\"spray\"</span>></span>\r\n \t\t\t\t<span class="hljs-tag"><<span class="hljs-title">img</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">\"rexona-bottle-3\"</span> <span class="hljs-attribute">src</span>=<span class="hljs-value">\"https:</span>//
<span class="hljs-attribute">pokktvideos.s3.amazonaws.com</span>/<span class="hljs-attribute">survey</span>/<span class="hljs-attribute">img</span>/<span class="hljs-attribute">rexona-bottle-3.png</span>\"></span>\r\n \t\t\t\t<span class="hljs-tag"><<span class="hljs-title">img</span> <span class="hljs-attribute">id</span>=<span class="hljs-value">\"sprayanim\"</span>
<span class="hljs-attribute">class</span>=<span class="hljs-value">\"spray-anim\"</span> <span class="hljs-attribute">src</span>=<span class="hljs-value">\"https:</span>//<span class="hljs-attribute">pokktvideos.s3.amazonaws.com</span>/<span class="hljs-attribute">survey</span>/<span class="hljs-attribute">img</span>/
<span class="hljs-attribute">rexona_spray-1.png</span>\"></span>\r\n \t\t\t<span class="hljs-tag"></<span class="hljs-title">div</span>></span>\r\n\r\n \t\t\t<span class="hljs-tag"><<span class="hljs-title">div</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">\"how-to-play\"</span> <span class="hljs-attribute">id</span>=<span class="hljs-value">\"how-to-play\"</span>></span>\r\n
\t\t\t\t<span class="hljs-tag"><<span class="hljs-title">div</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">\"how-to-play-body\"</span>></span>\r\n\t \t\t\t\t<span class="hljs-tag"><<span class="hljs-title">img</span> <span class="hljs-attribute">src</span>=<span class="hljs-value">\"https:</span>//
<span class="hljs-attribute">pokktvideos.s3.amazonaws.com</span>/<span class="hljs-attribute">survey</span>/<span class="hljs-attribute">img</span>/<span class="hljs-attribute">rexona_how-to-play.png</span>\"></span>\r\n\t \t\t\t\t<span class="hljs-tag"><<span class="hljs-title">div</span>
<span class="hljs-attribute">class</span>=<span class="hljs-value">\"close-how-to-play\"</span>></span>\r\n\t \t\t\t\t\t<span class="hljs-tag"><<span class="hljs-title">a</span> <span class="hljs-attribute">href</span>=<span class="hljs-value">\"#\"</span> <span class="hljs-attribute">onclick</span>=<span class="hljs-value">\"sendevent(8);</span> <span class="hljs-attribute">return</span>
<span class="hljs-attribute">closeHowToPlay</span>()\"></span><span class="hljs-tag"><<span class="hljs-title">img</span> <span class="hljs-attribute">src</span>=<span class="hljs-value">\"https:</span>//<span class="hljs-attribute">pokktvideos.s3.amazonaws.com</span>/<span class="hljs-attribute">survey</span>/<span class="hljs-attribute">img</span>/<span class="hljs-attribute">rexona_btnmain.</span>
<span class="hljs-attribute">png</span>\"></span><span class="hljs-tag"></<span class="hljs-title">a</span>></span>\r\n\t \t\t\t\t<span class="hljs-tag"></<span class="hljs-title">div</span>></span>\r\n \t\t\t\t<span class="hljs-tag"></<span class="hljs-title">div</span>></span>\r\n \t\t\t<span class="hljs-tag"></<span class="hljs-title">div</span>></span>\r\n\r\n \t\t<span class="hljs-tag"></<span class="hljs-title">div</span>></span> <span class="hljs-comment"><!-- /#scene-2 --
>\r\n\r\n \t\t<div id=\"scene-2-replay\">\r\n \t\t\t<div class=\"btn-replay-box\">\r\n \t\t\t\t<a
href=\"#\" id=\"btn-replay\" onclick=\"sendevent(8)\"><img src=\"https://
pokktvideos.s3.amazonaws.com/survey/img/rexona_btn-replay.png\" /></a>\r\n \t\t\t</div>\r\n
\t\t</div>\r\n\r\n \t\t<div class=\"scene\" id=\"scene-3\" style=\"display:none\">\r\n \t\t\t<img
class=\"bottle-4\" src=\"https://pokktvideos.s3.amazonaws.com/survey/img/rexona-
bottle-4.png\" />\r\n \t\t\t<div class=\"spray-2\" id=\"spray3\">\r\n \t\t\t\t<img id=\"spray-2\"
src=\"https://pokktvideos.s3.amazonaws.com/survey/img/rexona_spray-2.png\" />\r\n \t\t\t</
div>\r\n \t\t\t<div class=\"scene3-copy\" id=\"scene3-copy\">\r\n \t\t\t\t<img src=\"https://
pokktvideos.s3.amazonaws.com/survey/img/rexona_copy-3.png\" />\r\n \t\t\t</div>\r\n \t\t\t<div
class=\"scene3-time\" id=\"scene3-time\">4.35</div>\r\n \t\t\t<div class=\"scene3-copy-2\"
id=\"scene3-copy-2\">\r\n \t\t\t\t<img src=\"https://pokktvideos.s3.amazonaws.com/survey/img/
rexona_copy-3-2.png\" />\r\n \t\t\t</div>\r\n \t\t</div>\r\n\r\n \t\t<div class=\"scene\" id=\"scene-4\"
style=\"visibility:hidden\">\r\n \t\t<!-- <div class=\"scene\" id=\"scene-4\"> --></span>\r\n \t\t\t<span class="hljs-tag"><<span class="hljs-title">div</span>
<span class="hljs-attribute">class</span>=<span class="hljs-value">\"scene-1-top\"</span> <span class="hljs-attribute">id</span>=<span class="hljs-value">\"scene-4-top\"</span>></span>\r\n \t\t\t\t<span class="hljs-tag"><<span class="hljs-title">div</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">\"table\"</span>></span>\r\n \t\t\t\t\t<span class="hljs-tag"><<span class="hljs-title">div</span>
<span class="hljs-attribute">class</span>=<span class="hljs-value">\"table-row\"</span>></span>\r\n \t\t\t\t\t\t<span class="hljs-tag"><<span class="hljs-title">div</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">\"table-cell\"</span>></span>\r\n \t\t\t\t\t\t\t<span class="hljs-tag"><<span class="hljs-title">img</span> <span class="hljs-attribute">id</span>=<span class="hljs-value">\"copy-4\"</span>
<span class="hljs-attribute">src</span>=<span class="hljs-value">\"https:</span>//<span class="hljs-attribute">pokktvideos.s3.amazonaws.com</span>/<span class="hljs-attribute">survey</span>/<span class="hljs-attribute">img</span>/<span class="hljs-attribute">rexona_copy-4.png</span>\" /></span>\r\n \t\t\t\t\t\t<span class="hljs-tag"></
<span class="hljs-attribute">div</span>></span>\r\n \t\t\t\t\t<span class="hljs-tag"></<span class="hljs-title">div</span>></span>\r\n \t\t\t\t<span class="hljs-tag"></<span class="hljs-title">div</span>></span>\r\n \t\t\t<span class="hljs-tag"></<span class="hljs-title">div</span>></span>\r\n \t\t\t<span class="hljs-tag"><<span class="hljs-title">div</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">\"scene-1-bottom\"</span>
<span class="hljs-attribute">id</span>=<span class="hljs-value">\"scene-4-bottom\"</span>></span>\r\n \t\t\t\t<span class="hljs-tag"><<span class="hljs-title">div</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">\"rexona-bottle-5\"</span>></span>\r\n \t\t\t\t\t<span class="hljs-tag"><<span class="hljs-title">img</span> <span class="hljs-attribute">id</span>=<span class="hljs-value">\"rexonabottle-</span>
<span class="hljs-attribute">5</span>\" <span class="hljs-attribute">src</span>=<span class="hljs-value">\"https:</span>//<span class="hljs-attribute">pokktvideos.s3.amazonaws.com</span>/<span class="hljs-attribute">survey</span>/<span class="hljs-attribute">img</span>/<span class="hljs-attribute">rexona-bottle-5.png</span>\" /></span>\r\n
\t\t\t\t<span class="hljs-tag"></<span class="hljs-title">div</span>></span>\r\n \t\t\t\t<span class="hljs-tag"><<span class="hljs-title">div</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">\"scene4-button\"</span>></span>\r\n \t\t\t\t\t<span class="hljs-tag"><<span class="hljs-title">a</span> <span class="hljs-attribute">href</span>=<span class="hljs-value">\"javascript:void(0);\"</span>
<span class="hljs-attribute">onclick</span>=<span class="hljs-value">\"sendevent(8);</span> <span class="hljs-attribute">window.open</span>(<span class="hljs-attribute">clickTag</span>);\" <span class="hljs-attribute">class</span>=<span class="hljs-value">\"btn-more-detail\"</span>
<span class="hljs-attribute">target</span>=<span class="hljs-value">\"_blank\"</span>></span><span class="hljs-tag"><<span class="hljs-title">img</span> <span class="hljs-attribute">src</span>=<span class="hljs-value">\"https:</span>//<span class="hljs-attribute">pokktvideos.s3.amazonaws.com</span>/<span class="hljs-attribute">survey</span>/<span class="hljs-attribute">img</span>/
<span class="hljs-attribute">rexona_btn-4.png</span>\" /></span><span class="hljs-tag"></<span class="hljs-title">a</span>></span>\r\n \t\t\t\t<span class="hljs-tag"></<span class="hljs-title">div</span>></span>\r\n \t\t\t\t<span class="hljs-tag"><<span class="hljs-title">div</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">\"scene4-button\"</span>></span>\r\n \t\t\t\t\t<span class="hljs-tag"><<span class="hljs-title">a</span>
<span class="hljs-attribute">href</span>=<span class="hljs-value">\"#\"</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">\"btn-more-detail\"</span> <span class="hljs-attribute">onclick</span>=<span class="hljs-value">\"sendevent(8);</span> <span class="hljs-attribute">return</span> <span class="hljs-attribute">playAgain</span>()\"></span><span class="hljs-tag"><<span class="hljs-title">img</span>
<span class="hljs-attribute">src</span>=<span class="hljs-value">\"https:</span>//<span class="hljs-attribute">pokktvideos.s3.amazonaws.com</span>/<span class="hljs-attribute">survey</span>/<span class="hljs-attribute">img</span>/<span class="hljs-attribute">rexona_btn-replay-2.png</span>\" /></span><span class="hljs-tag"></<span class="hljs-title">a</span>></span>\r\n
\t\t\t\t<span class="hljs-tag"></<span class="hljs-title">div</span>></span>\r\n \t\t\t<span class="hljs-tag"></<span class="hljs-title">div</span>></span>\r\n \t\t<span class="hljs-tag"></<span class="hljs-title">div</span>></span> <span class="hljs-comment"><!--#scene-4--></span>\r\n\r\n \t\t<span class="hljs-tag"><<span class="hljs-title">img</span> <span class="hljs-attribute">src</span>=<span class="hljs-value">\"https:</span>//<span class="hljs-attribute">bs.servingsys.</span>
<span class="hljs-attribute">com</span>/<span class="hljs-attribute">BurstingPipe</span>/<span class="hljs-attribute">adServer.bs</span>?
<span class="hljs-attribute">cn</span>=<span class="hljs-value">tf&c=19&mc=imp&pli=19069556&PluID=0&ord=123456&rtu=-1\"</span> <span class="hljs-attribute">style</span>=<span class="hljs-value">\"width:1px;height:</span>
<span class="hljs-attribute">1px</span>;\" /></span>\r\n\t\t\r\n\t\t<span class="hljs-tag"><<span class="hljs-title">script</span> <span class="hljs-attribute">type</span>=<span class="hljs-value">\"text</span>/<span class="hljs-attribute">javascript</span>\"></span><span class="handlebars"><span class="xml">\r\n\t\tfunction sendevent(event_id)
{ \r\n\t\t\tvar url = \"https://vdo.pokkt.com/api/VideoEventTracker?offer_id=</span><span class="hljs-expression">{{<span class="hljs-variable">offer</span>_<span class="hljs-variable">id</span>}}</span><span class="xml">
&appId=</span><span class="hljs-expression">{{<span class="hljs-variable">appId</span>}}</span><span class="xml">&app_bundle_name=</span><span class="hljs-expression">{{<span class="hljs-variable">app</span>_<span class="hljs-variable">bundle</span>_<span class="hljs-variable">name</span>}}</span><span class="xml">&sdk_version=</span><span class="hljs-expression">{{<span class="hljs-variable">sdk</span>_<span class="hljs-variable">version</span>}}</span><span class="xml">
&app_version=</span><span class="hljs-expression">{{<span class="hljs-variable">app</span>_<span class="hljs-variable">version</span>}}</span><span class="xml">&device_id=&device_model=</span><span class="hljs-expression">{{<span class="hljs-variable">device</span>_<span class="hljs-variable">model</span>}}</span><span class="xml">
&language=</span><span class="hljs-expression">{{<span class="hljs-variable">language</span>}}</span><span class="xml">&device_type=</span><span class="hljs-expression">{{<span class="hljs-variable">device</span>_<span class="hljs-variable">type</span>}}</span><span class="xml">&connection_type=</span><span class="hljs-expression">{{<span class="hljs-variable">connection</span>_<span class="hljs-variable">type</span>}}</span><span class="xml">
&track_id=</span><span class="hljs-expression">{{<span class="hljs-variable">track</span>_<span class="hljs-variable">id</span>}}</span><span class="xml">&event=\"+event_id;\r\n\t\t\tvar xhttp = new XMLHttpRequest();
\r\n\t\t\txhttp.open(\"GET\", url, true);\r\n\t\t\txhttp.send();\r\n\t\t}\r\n</span></span><span class="hljs-tag"></<span class="hljs-title">script</span>></span>\r\n \t<span class="hljs-tag"></<span class="hljs-title">body</span>></span>\r\n <span class="hljs-tag"></
<span class="hljs-attribute">html</span>></span>\n \n <span class="hljs-tag"><<span class="hljs-title">img</span> <span class="hljs-attribute">height</span>=<span class="hljs-value">\"1\"</span> <span class="hljs-attribute">width</span>=<span class="hljs-value">\"1\"</span> <span class="hljs-attribute">src</span>=<span class="hljs-value">'https://sg-vdo.pokkt.com/api/
VideoEventTracker?
country=hong+kong&app_version=&device_model=iPhone&categoryIab=IAB1&city=central+dist
rict&app_bundle_name=Demo_Adspace_Placement_320x50&latitude=22.319147&screen=&ski
p=0&language=&device_type=&creative_id=9700&mac_address=&appId=&sdk_version=&adv_i
d=473&state=&carrier_name=Hong+Kong+Broadband+Network+Ltd&brand=Apple&campaign_i
d=6062&opt_userid=0088ba87-
b96f-483d-85e3-36723ad6c60d×tamp=1478850463185&longitude=114.22968&device_id=
&connection_type=UNKNOWN&is_rtb=1&appName=swaraj+test+app&ip=210.6.191.180&os_ve
rsion=7.1&advertisingID=F585B1EF-D543-4F9C-A39FA204BD9C1E33&
vc=0.0&offer_id=7709&ad_id=&user_id=0&track_id=c2bb9fd2-
fa7e-4c11-88d4-642b8d28bf69&marketing_name=iPhone&device=ios&event=6'</span> <span class="hljs-attribute">style</span>=<span class="hljs-value">\"display:</span>
<span class="hljs-attribute">none</span>\" /></span>\n \n <span class="hljs-tag"><<span class="hljs-title">img</span> <span class="hljs-attribute">height</span>=<span class="hljs-value">\"1\"</span> <span class="hljs-attribute">width</span>=<span class="hljs-value">\"1\"</span> <span class="hljs-attribute">src</span>=<span class="hljs-value">''</span> <span class="hljs-attribute">style</span>=<span class="hljs-value">\"display:</span> <span class="hljs-attribute">none</span>\" /></span>\n \n\n
<span class="hljs-tag"><<span class="hljs-title">script</span> <span class="hljs-attribute">src</span>=<span class="hljs-value">\"https:</span>//<span class="hljs-attribute">s3-ap-southeast-1.amazonaws.com</span>/<span class="hljs-attribute">webassetz</span>/<span class="hljs-attribute">theme</span>/<span class="hljs-attribute">metro_new</span>/<span class="hljs-attribute">assets</span>/
<span class="hljs-attribute">global</span>/<span class="hljs-attribute">plugins</span>/<span class="hljs-attribute">jquery.min.js</span>\"></span><span class="undefined"></span><span class="hljs-tag"></<span class="hljs-title">script</span>></span>\n <span class="hljs-tag"><<span class="hljs-title">script</span>></span><span class="undefined">\n function fireTracker(url) {\n $.ajax({\n
url: url\n });\n }\n document.addEventListener(\"click\",function(){\n fireTracker(\"https://
sg-vdo.pokkt.com/api/redirect?
country=hong+kong&app_version=&device_model=iPhone&categoryIab=IAB1&city=central+dist
rict&app_bundle_name=Demo_Adspace_Placement_320x50&latitude=22.319147&screen=&ski
p=0&language=&device_type=&creative_id=9700&mac_address=&appId=&sdk_version=&adv_i
d=473&state=&carrier_name=Hong+Kong+Broadband+Network+Ltd&brand=Apple&campaign_i
d=6062&opt_userid=0088ba87-
b96f-483d-85e3-36723ad6c60d×tamp=1478850463190&longitude=114.22968&device_id=
&connection_type=UNKNOWN&is_rtb=1&appName=swaraj+test+app&ip=210.6.191.180&os_ve
rsion=7.1&advertisingID=F585B1EF-D543-4F9C-A39FA204BD9C1E33&
vc=0.0&offer_id=7709&ad_id=&user_id=0&track_id=c2bb9fd2-
fa7e-4c11-88d4-642b8d28bf69&marketing_name=iPhone&device=ios&&CTH=&CT=http%3A%2
F%2Fsgvdo.
pokkt.com%2Fapi%2FVideoEventTracker%3Fcountry%3Dhong%2Bkong%26app_version%
3D%26device_model%3DiPhone%26categoryIab%3DIAB1%26city%3Dcentral%2Bdistrict%26a
pp_bundle_name%3DDemo_Adspace_Placement_320x50%26latitude%3D22.319147%26scree
n%3D%26skip%3D0%26language%3D%26device_type%3D%26creative_id%3D9700%26mac_
address%3D%26appId%3D%26sdk_version%3D%26adv_id%3D473%26state%3D%26carrier_
name%3DHong%2BKong%2BBroadband%2BNetwork%2BLtd%26brand%3DApple%26campai
gn_id%3D6062%26opt_userid%3D0088ba87-
b96f-483d-85e3-36723ad6c60d%26timestamp%3D1478850463185%26longitude%3D114.2296
8%26device_id%3D%26connection_type%3DUNKNOWN%26is_rtb%3D1%26appName%3Dsw
araj%2Btest%2Bapp%26ip%3D210.6.191.180%26os_version%3D7.1%26advertisingID%3DF58
5B1EF-D543-4F9C-A39FA204BD9C1E33%
26vc%3D0.0%26offer_id%3D7709%26ad_id%3D%26user_id%3D0%26track
_id%3Dc2bb9fd2-
fa7e-4c11-88d4-642b8d28bf69%26marketing_name%3DiPhone%26device%3Dios%26event%3
D9&CT=\");\n });\n setTimeout(function () {\n fireTracker(\"https://sg-vdo.pokkt.com/api/
VideoEventTracker?
country=hong+kong&app_version=&device_model=iPhone&categoryIab=IAB1&city=central+dist
rict&app_bundle_name=Demo_Adspace_Placement_320x50&latitude=22.319147&screen=&ski
p=0&language=&device_type=&creative_id=9700&mac_address=&appId=&sdk_version=&adv_i
d=473&state=&carrier_name=Hong+Kong+Broadband+Network+Ltd&brand=Apple&campaign_i
d=6062&opt_userid=0088ba87-
b96f-483d-85e3-36723ad6c60d×tamp=1478850463190&longitude=114.22968&device_id=
&connection_type=UNKNOWN&is_rtb=1&appName=swaraj+test+app&ip=210.6.191.180&os_ve
rsion=7.1&advertisingID=F585B1EF-D543-4F9C-A39FA204BD9C1E33&
vc=0.0&offer_id=7709&ad_id=&user_id=0&track_id=c2bb9fd2-
fa7e-4c11-88d4-642b8d28bf69&marketing_name=iPhone&device=ios&event=40\");\n },
1000)\n</span><span class="hljs-tag"></<span class="hljs-title">script</span>></span>",
            "cid": "6062",
            "crid": "9700"
            }
         ]
      }
   ],
   "bidid": "c2bb9fd2-fa7e-4c11-88d4-642b8d28bf69",
   "cur": "USD",
   "customdata": ""
}
```


# AppAds DSP

Last Update: September 9th, 2024

## Content

Overview

1. [Overview](#overview)
2. [Bid Request Specification](#bid-request-specification)
3. [Bid Response Specification](#bid-response-specification)
4. [Sample Bid Request & Response](#sample-request-and-response)
   1. [Video RTB Request](#video-rtb-request)
   2. [Video RTB Response](#video-rtb-response)
   3. [Banner/Interstitial RTB Request](#banner-interstitial-rtb-request)
   4. [Banner/Interstitial RTB Response](#banner-interstitial-rtb-response)

***

## Overview

* AppAds supports the following OpenRTB versions:
  * [2.5](https://www.iab.com/wp-content/uploads/2016/03/OpenRTB-API-Specification-Version-2-5-FINAL.pdf)
  * [2.6](https://iabtechlab.com/wp-content/uploads/2022/04/OpenRTB-2-6_FINAL.pdf)
* AppAds does not support every field in the OpenRTB specification, and nuances can apply. Sections of this document contain information and recommendations specific to the AppAds implementation. Some fields are not supported, but are still parsed. These fields must be formatted correctly but will not affect the bidding outcome.
* All OpenRTB POST requests should be directed to the following endpoint based on your region:

  * **Global \[Recommended]:** <https://req.appads.in/api/rtb/>\<yourappid>
  * **APAC Region:** <https://s-req.appads.in/api/rtb/>\<yourappid>
  * **US Region:** <https://u-req.appads.in/api/rtb/>\<yourappid>

  Note: Please reach out to your account manager for App ID details.

***

## Bid request specification <a href="#bid-request-specification" id="bid-request-specification"></a>

* A bid request is an HTTP Post request with a content type of `application/json` and a body of a bid request object.
* The corresponding response is either an HTTP 204 with no body for a no-bid, or an HTTP 200 with a json body of a bid response.
* All OpenRTB calls to AppAds DSP will have “x-openrtb-version”header mentioning protocol version as per OpenRTB specifications.
* AppAds DSP supports Video/Banner/interstitial ads through the API.
* All request to AppAds DSP can currently have only one impression object as we do not support multiple impressions object per request as of now.
* VPAID is not supported
* The bid request objects are recommended and affects the bidding,
  * Supply Chain and nodes
  * User
  * Device
* The following bid request objects are not supported by AppAds,
  * Audio
  * Native
  * Deal
  * PMP

***

## **Bid response specification**

* In all bid responses across ad types, AppAds DSP will provide the following parameters: id, adid, cid, adm, price, and crid, optionally.
* For video ads, the bid response will follow the VAST 2.0 format within the adm attribute.&#x20;
* For banner and interstitial ads, the adm attribute will contain the creative in HTML format.
* Additionally, the bid win URL will be included in the response, incorporating the ${AUCTION\_PRICE} macro. Please note that we currently do not support encoding for this macro.

***

## Sample Request & Response

Bid request & response sample is provided below for reference,

***

### Video RTB Request&#x20;

```json
{
  "id": "810839a6-5eaf-4b34-8110-c29810faad3f-9582-bDnt5nwfF",
  "imp": [{
    "id": "1",
    "video": {
      "mimes": ["video/mp4"],
      "linearity": 1,
      "minduration": 5,
      "maxduration": 120,
      "w": 480,
      "h": 320,
      "sequence": 1,
      "battr": [1, 3, 5, 8, 9, 13],
      "pos": 7,
      "companionad": [{
        "w": 480,
        "h": 320,
        "battr": [1, 3, 5, 6, 8, 9],
        "api": [5, 6, 7],
        "vcm": true
      }],
      "api": [7],
      "companiontype": [1, 2],
      "protocols": [2, 3, 5, 6],
      "skip": false,
      "placement": 5,
      "plcmt": 3
    },
    "displaymanager": "unity sdk",
    "displaymanagerver": "41000",
    "instl": true,
    "tagid": "es.socialpoint.MonsterLegends-vast",
    "bidfloor": 0.01,
    "secure": true,
    "rwdd": true
  }],
  "app": {
    "id": "18259",
    "name": "Monster Legends",
    "bundle": "es.socialpoint.MonsterLegends",
    "publisher": {
      "id": "13184",
      "name": "Social Point"
    },
    "storeurl": "https://play.google.com/store/apps/details?id\u003des.socialpoint.MonsterLegends"
  },
  "device": {
    "ua": "Mozilla/5.0 (Linux; Android 10; RMX2020 Build/QP1A.190711.020; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/126.0.2478.134 Mobile Safari/537.36",
    "ip": "49.145.253.188",
    "geo": {
      "lat": 10.3099,
      "lon": 123.893,
      "country": "PHL",
      "region": "07",
      "city": "Cebu City",
      "zip": "6000",
      "type": 2,
      "utcoffset": 480
    },
    "carrier": "51566",
    "language": "en",
    "make": "realme",
    "model": "RMX2020",
    "os": "android",
    "osv": "10.0",
    "connectiontype": 2,
    "devicetype": 4,
    "ifa": "0fa94627-9b47-ss9f-603c8d",
    "hwv": "realme RMX2020",
    "w": 1456,
    "h": 720,
    "pxratio": 2.0
  },
  "at": 1,
  "tmax": 1500,
  "bcat": ["IAB11-2", "IAB11-1", "IAB11-4", "IAB11", "IAB9-7", "IAB23-9", "IAB23", "IAB23-4", "IAB23-3", "IAB23-10", "IAB23-2", "IAB23-8", "IAB23-7", "IAB23-6", "IAB23-1", "IAB23-5", "IAB8-5", "IAB9-9", "IAB8-18", "IAB14-1", "IAB14-7", "IAB14-4"],
  "regs": {
  },
  "source": {
    "fd": true,
    "pchain": "96cabafsss37a7:13184",
    "source": {
      "schain": {
        "complete": true,
        "ver": "1.0",
        "nodes": [{
          "asi": "unity.com",
          "sid": "13184",
          "rid": "810839a6-5eaf-4b34-8110-c29810faad3f-9582-bAjEi9wfF",
          "hp": true
        }]
      },
      "omidpn": "Unity3d",
      "omidpv": "1.3.0"
    }
  }
}
```

***

### Video RTB Response

```json
{
    "id": "810839a6-5eaf-4b34-8110-c29810faad3f-9582-esfsgEi9wfF",
    "seatbid": [
        {
            "bid": [
                {
                    "id": "9af5bda0-eef4-41cb-9142-4f81",
                    "impid": "1",
                    "price": 1.5,
                    "adid": "34410",
                    "nurl": "https://t.appads.in/api/winbid?crid=58099952421242&pt_fp=0.01&apid=bf5d9c029400934802f4c4f119dabc0f&lt=0&pt_bp=1.5000000000000002&oid=34410&isrtb=1&ht=320&tstp=1721026660363&tid=9af5bda0-eef4-41cb-9142-4f11bbb07281&chid=7977&wopid=a3690642-2b90-4384-959a-a66bd9d97d51&eap=5.0&cntry=philippines&tkn=d33d0a27a22ec98386807873ad0595ce&exdi=PM-WJNU-0659&bundle=es.socialpoint.MonsterLegends&wot=4&wt=480&did=0fa94627-9b47-4a43-b99f-603c141b6a8d&ap=${AUCTION_PRICE}&aid=${AUCTION_ID}&event=41&",
                    "adm": "<?xml version=\"1.0\" ?><VAST version=\"3.0\"><Ad id=\"590583710\"><InLine><AdSystem>DBM</AdSystem><AdTitle>In-Stream Video</AdTitle><Error><![CDATA[https://pagead2.googlesyndication.com/pagead/gen_204?id=notify&exchange=pubmatic&creative_id=580999522&creative_type=118&usl_id=93481632261&errorcode=[ERRORCODE]&asseturi=[ASSETURI]&ord=[CACHEBUSTING]&offset=[CONTENTPLAYHEAD]&d=APEucNXnHrKwFg4xRcXT-65SuDPGtmG5vB_dv_hcwRXyd9cn8uC_Bx3c_p7d94d8ptQPS8xvv-MgrLGKk-JnvWlCygvd44OkIw]]></Error><Impression><![CDATA[https://googleads4.g.doubleclick.net/pcs/view?xai=AKAOjstcfzL6z-hjG7ZCNTOBDVpNbfjHSxW4S_DcFxvOhmfn43nGeMY_5lRA_pIwPEA7q51yf98OKp6U9pFDSzt8XpoB0qplf6PL5c9bXTghZaiuzl36-j2eTWeaepr6G1_cUuh2tThZ_NU98qhGw0_XJEK0sWzNjc_Abk4s-ZLvkPDJtgMKoej1XzeOX-j3vp9eIoq-8c8J6MErfFXdWns6ms0Z2Y-eAadGhF2Xcp3K1P52LvalPnrKKfEEsgvkqV_V0M76DwMksp_x8OzGIsKdylGo8cBzOqMXL8k4EwMnFNPvqEyXFOsew9kN2xmzJjH9HKHevxM4UeLXC1vHQ726kjEamGuM3XFCVksAO35tt-_SezcTve9GGHCkmBR6nYYbt503YHWo5zkz_pTQVaApoxL5dtPZZRdgIBWNVOsvnxgz5-TUF1qQb3fhq1WiO427KXuFIN1fsxHodUO3cgoCENWWtTcS0v9arrpLueTWXQC0s8X9P2QeY7o6u-tpzaSu9GvfquCO4EeOBNOPb81P9as_H7NmklHI_FqfWsQx3WoK_o1UNXZSCWeYDNHTwrPvsL-4oovwnOhrEymJnlzdndxFqIhz4dzZ936l57Z3iaHqpSU2j1E9pUvCKQGYwkd8aF6X3lGm_h65aRBL8eYOwDEJkgC_zMaW5tjXLuYWwXPjr5byGl_9ed1dLBhR60fXmfwkPfEZ1GPI-bnpuqIxBWxEl6ouNIWNd-iG0jELQxi6xj0WLwoTiuFLhe0l0Kb5V6CSoC_D3-sbnf-Yi3am7EWRmB-IsmLDVGRQ2Yman1s_dQ9PKth9FqCAVhxDMZXVPhyBT9Aq-2RmV1QEgHu9qUcuPO5rgAJG5XAkJ_I9OMiCCiL4-gb6hF4gtPNDI_9qyeL7UHKwYyEGsv_wGZ4KEYKdhPrqZlZMlo6EO7_ZZ0hD7cbimdGFNw4Dp8wxzH6L4CcWZdkLHFbKV4IHfjb7stNx128Ey0oGp8AK6NJXBxH9WCQC7dkwYF--ZIealTT-uOmQ5wUO_1cxtkKMaDpVmY3eymWWVR0vrSD66A0NnrV-LP33lmZCNRio7K81bIszgeqIj8fHjAezH96lONwcyrnEmGvZIzZ915g_D5jKaiowKdq2YLqcr8a0BGjVnkFVwahCc1CzvrBUr2JcKpBZ3sPcrvso4eoJ-PAZS9wRjRsGwUmNtcJ4g72y-XulBjGhgoHKv2GI0Ix37mNGx83H0Os0nK0Cg5q3SMsg0BxRwjg4165ZvxX57Lb_B8iTbABf8TjuWli9NO5XYGZ3nmr-iCthO5wIYaN9qCIyMqNn9btmsn7P1fyPh9M-2JhcdUF6fOkxeUFob-6FnkHIa4BeWYNbN5BaacNgyzCfR_K-y8_mqlmtDLvi4EMZmZQRJp2BRRrya6mR_6jPPLyt8tKtXlp-1hwypjNgpSlvL-nZD1aV7kIjT_MpzO2daB6LyuvG5jeLMQE93uVP6ah4JcOJT42mzU3kypcT_jMu2zr_09M2riXlh3Pes-xvcaJ66CzEoQlVDaX9vWc8&sai=AMfl-YTLKG1xw_QNcfQEHC8FfPgOGXvtRw17W5qDg5LszBDlDxjeba4FtHyXuum1_BA-1fMUefIq9mQWpMUl93nm2U2C2trN-YXK5Kerr2kh8bHLvz2CbbiaoRAD5coShyyHWNx3fF8jA14BNiAnEHESYkaudjo_rAeVBmDESvGuIy1njYZgi8I&sig=Cg0ArKJSzHtuVjO8-ritEAE&uach_m=%5BUACH%5D&pr=6:5.000000&fbs_aeid=%5Bgw_fbsaeid%5D&urlfix=1&adurl=]]></Impression><Impression><![CDATA[https://googleads.g.doubleclick.net/xbbe/pixel?d=CLTtg5IEEPnr5J4EGOKyhZUCIAEwAQ&v=APEucNX6UNConQA2vEivENYhwWq4o4lfZrtUkBFsL28dG8sTde6GoZgMvocHF4FLep87UcyKoKU-poDub3PPOyGld5rR0kyb2byvc1rkyqf7fbZekQU-3lQ]]></Impression><Impression id=\"45b95df9-e001-45d8-9237-b25dee10de25\"></Impression><Impression id=\"89e124b4-10ec-4d17-b31d-1740f7d5f6b4\"><![CDATA[https://st.pubmatic.com/AdServer/AdDisplayTrackerServlet?operId=1&pubId=160456&siteId=799454&adId=6046966&imprId=4AB904AF-595C-4CDD-A401-57A5392C291F&cksum=5FAED0E6FB690989&adType=13&adServerId=243&kefact=5&kaxefact=5&kadNetFrequecy=0&kadwidth=0&kadheight=0&kadsizeid=97&kltstamp=1721026660&indirectAdId=0&adServerOptimizerId=2&ranreq=0.1&kpbmtpfact=5&tldId=0&passback=0&ekefact=ZMiUZmSGBAD2cbyLPnMZdVVHpkK1dfo6Na_6n2wMT7pSMGcr&ekaxefact=ZMiUZmSGBAD2cbyLPnMZdVVHpkK1dfo6Na_6n2wMT7pSMGcr&ekpbmtpfact=ZMiUZqGGBAA093NehP3hjrIG45wOok0WLgTMki8EY92y8jkv&svr=BIDVA20108&adsver=_2479453136&adsabzcid=0&cls=BID&i0=0x2100101112100110&i1=0x3111&enpp=ZMiUZoWGBAD-34Jr89PjFTpzsZNhe8oXVPKjgXSuF4ePYLlC&pmr_m=ZMiUZruGBAAGAxjq4nO5hwjqR24RTefEHOkVllhBH8Vnz9nL&mdsp=ZMiUZtSGBAAw-h_2eYyF-UA6EwbNhvh7qnMsDtAlZNtRSOUS&pfi=5&domId=858021007506040847&dc=VA1&pubBuyId=51287&crID=580999522&lpu=foodpanda.ph&ucrid=2706090604851211696&wAdType=13&campaignId=23025&creativeId=0&pctr=0.000000&wDSPByrId=1111553716&wDspId=80&wbId=0&wrId=4470997&wAdvID=54516&wDspCampId=21432075349&isRTB=1&rtbId=B6C68004-FF89-42E4-9F14-2E3F6F24C3AFV&wDlId=4470997&wDlMtId=382637&wDlChnlId=5&dOwn=1&ver=21&dateHr=2024071506&usrgen=0&usryob=0&layeringebl=1&usrip=49.145.163.188&gctry=ph&greg=ceb&uid=0&mid=1&vph=320&wccookied=0&qpsladszid=97&oid=4AB904AF-595C-4CDD-A401-57A5392C291F&mobflag=1&ismobileapp=1&modelid=19767&osid=313&udidtype=1&country=PH&cntryId=178&sec=1&pAuSt=2&wops=0&sURL=es.socialpoint.MonsterLegends&BrID=5&oiabdvt=4&tpb=0]]></Impression><Impression id=\"73f8f8ea-2f17-4fc1-88c3-aa58d9aa0141\"><![CDATA[https://image8.pubmatic.com/AdServer/ImgSync?&fp=1&mpc=10&p=160456&gdpr=0&gdpr_consent=1&pmc=-1&gpp=&gpp_sid=&gpmc=-1&pu=https%3A%2F%2Fimage4.pubmatic.com%2FAdServer%2FSPug%3Fpmc%3D-1%26gpmc%3D-1%26partnerID%3D160456%26partnerUID%3D%28null%29]]></Impression><Impression id=\"45b95df9-e001-45d8-9237-b25dee10de25\"></Impression><Impression id=\"89e124b4-10ec-4d17-b31d-1740f7d5f6b4\"><![CDATA[https://st.pubmatic.com/AdServer/AdDisplayTrackerServlet?operId=1&pubId=160456&siteId=799454&adId=6046966&imprId=4AB904AF-595C-4CDD-A401-57A5392C291F&cksum=5FAED0E6FB690989&adType=13&adServerId=243&kefact=5&kaxefact=5&kadNetFrequecy=0&kadwidth=0&kadheight=0&kadsizeid=97&kltstamp=1721026660&indirectAdId=0&adServerOptimizerId=2&ranreq=0.1&kpbmtpfact=5&tldId=0&passback=0&ekefact=ZMiUZmSGBAD2cbyLPnMZdVVHpkK1dfo6Na_6n2wMT7pSMGcr&ekaxefact=ZMiUZmSGBAD2cbyLPnMZdVVHpkK1dfo6Na_6n2wMT7pSMGcr&ekpbmtpfact=ZMiUZqGGBAA093NehP3hjrIG45wOok0WLgTMki8EY92y8jkv&svr=BIDVA20108&adsver=_2479453136&adsabzcid=0&cls=BID&i0=0x2100101112100110&i1=0x3111&enpp=ZMiUZoWGBAD-34Jr89PjFTpzsZNhe8oXVPKjgXSuF4ePYLlC&pmr_m=ZMiUZruGBAAGAxjq4nO5hwjqR24RTefEHOkVllhBH8Vnz9nL&mdsp=ZMiUZtSGBAAw-h_2eYyF-UA6EwbNhvh7qnMsDtAlZNtRSOUS&pfi=5&domId=858021007506040847&dc=VA1&pubBuyId=51287&crID=580999522&lpu=foodpanda.ph&ucrid=2706090604851211696&wAdType=13&campaignId=23025&creativeId=0&pctr=0.000000&wDSPByrId=1111553716&wDspId=80&wbId=0&wrId=4470997&wAdvID=54516&wDspCampId=21432075349&isRTB=1&rtbId=B6C68004-FF89-42E4-9F14-2E3F6F24C3AFV&wDlId=4470997&wDlMtId=382637&wDlChnlId=5&dOwn=1&ver=21&dateHr=2024071506&usrgen=0&usryob=0&layeringebl=1&usrip=49.145.163.188&gctry=ph&greg=ceb&uid=0&mid=1&vph=320&wccookied=0&qpsladszid=97&oid=4AB904AF-595C-4CDD-A401-57A5392C291F&mobflag=1&ismobileapp=1&modelid=19767&osid=313&udidtype=1&country=PH&cntryId=178&sec=1&pAuSt=2&wops=0&sURL=es.socialpoint.MonsterLegends&BrID=5&oiabdvt=4&tpb=0]]></Impression><Impression id=\"73f8f8ea-2f17-4fc1-88c3-aa58d9aa0141\"><![CDATA[https://image8.pubmatic.com/AdServer/ImgSync?&fp=1&mpc=10&p=160456&gdpr=0&gdpr_consent=1&pmc=-1&gpp=&gpp_sid=&gpmc=-1&pu=https%3A%2F%2Fimage4.pubmatic.com%2FAdServer%2FSPug%3Fpmc%3D-1%26gpmc%3D-1%26partnerID%3D160456%26partnerUID%3D%28null%29]]></Impression><Impression id=\"appads_impression_1\"><![CDATA[https://s.fst.pokkt.com/2/535734/analytics.gif?dt=5357341718311704875000&pd=avt&ui=0fa94627-9b47-4a43-b99f-603c141b6a8d&ap=es.socialpoint.MonsterLegends&sr=unity.com&pp=6246&ti=9af5bda0-eef4-41cb-9142-4f11bbb07281&to=4&pv=a3690642-2b90-4384-959a-a66bd9d97d51&md=2&de=4&dm=480x320&pi=34410&gt=ph&ac=0&pc1004350&cr=580999522]]></Impression><Impression id=\"appads_impression\"><![CDATA[https://t.appads.in/api/track?crid=580999522&pt_fp=0.01&apid=bf5d9c029400934802f4c4f119dabc0f&lt=0&pt_bp=1.5000000000000002&oid=34410&isrtb=1&ht=320&tstp=1721026660351&tid=9af5bda0-eef4-41cb-9142-4f11bbb07281&chid=7977&wopid=a3690642-2b90-4384-959a-a66bd9d97d51&eap=5.0&cntry=philippines&tkn=9ae68114238eb829026fd80cbefb75ed&exdi=PM-WJNU-0659&bundle=es.socialpoint.MonsterLegends&wot=4&wt=480&did=0fa94627-9b47-4a43-b99f-603c141b6a8d&ap=${AUCTION_PRICE}&aid=${AUCTION_ID}&event=6&]]></Impression><Impression><![CDATA[https://googleads.g.doubleclick.net/xbbe/pixel?d=CLTtg5IEEPnr5J4EGOKyhZUCIAEwAQ&v=APEucNX6UNConQA2vEivENYhwWq4o4lfZrtUkBFsL28dG8sTde6GoZgMvocHF4FLep87UcyKoKU-poDub3PPOyGld5rR0kyb2byvc1rkyqf7fbZekQU-3lQ]]></Impression><Impression><![CDATA[https://googleads4.g.doubleclick.net/pcs/view?xai=AKAOjstcfzL6z-hjG7ZCNTOBDVpNbfjHSxW4S_DcFxvOhmfn43nGeMY_5lRA_pIwPEA7q51yf98OKp6U9pFDSzt8XpoB0qplf6PL5c9bXTghZaiuzl36-j2eTWeaepr6G1_cUuh2tThZ_NU98qhGw0_XJEK0sWzNjc_Abk4s-ZLvkPDJtgMKoej1XzeOX-j3vp9eIoq-8c8J6MErfFXdWns6ms0Z2Y-eAadGhF2Xcp3K1P52LvalPnrKKfEEsgvkqV_V0M76DwMksp_x8OzGIsKdylGo8cBzOqMXL8k4EwMnFNPvqEyXFOsew9kN2xmzJjH9HKHevxM4UeLXC1vHQ726kjEamGuM3XFCVksAO35tt-_SezcTve9GGHCkmBR6nYYbt503YHWo5zkz_pTQVaApoxL5dtPZZRdgIBWNVOsvnxgz5-TUF1qQb3fhq1WiO427KXuFIN1fsxHodUO3cgoCENWWtTcS0v9arrpLueTWXQC0s8X9P2QeY7o6u-tpzaSu9GvfquCO4EeOBNOPb81P9as_H7NmklHI_FqfWsQx3WoK_o1UNXZSCWeYDNHTwrPvsL-4oovwnOhrEymJnlzdndxFqIhz4dzZ936l57Z3iaHqpSU2j1E9pUvCKQGYwkd8aF6X3lGm_h65aRBL8eYOwDEJkgC_zMaW5tjXLuYWwXPjr5byGl_9ed1dLBhR60fXmfwkPfEZ1GPI-bnpuqIxBWxEl6ouNIWNd-iG0jELQxi6xj0WLwoTiuFLhe0l0Kb5V6CSoC_D3-sbnf-Yi3am7EWRmB-IsmLDVGRQ2Yman1s_dQ9PKth9FqCAVhxDMZXVPhyBT9Aq-2RmV1QEgHu9qUcuPO5rgAJG5XAkJ_I9OMiCCiL4-gb6hF4gtPNDI_9qyeL7UHKwYyEGsv_wGZ4KEYKdhPrqZlZMlo6EO7_ZZ0hD7cbimdGFNw4Dp8wxzH6L4CcWZdkLHFbKV4IHfjb7stNx128Ey0oGp8AK6NJXBxH9WCQC7dkwYF--ZIealTT-uOmQ5wUO_1cxtkKMaDpVmY3eymWWVR0vrSD66A0NnrV-LP33lmZCNRio7K81bIszgeqIj8fHjAezH96lONwcyrnEmGvZIzZ915g_D5jKaiowKdq2YLqcr8a0BGjVnkFVwahCc1CzvrBUr2JcKpBZ3sPcrvso4eoJ-PAZS9wRjRsGwUmNtcJ4g72y-XulBjGhgoHKv2GI0Ix37mNGx83H0Os0nK0Cg5q3SMsg0BxRwjg4165ZvxX57Lb_B8iTbABf8TjuWli9NO5XYGZ3nmr-iCthO5wIYaN9qCIyMqNn9btmsn7P1fyPh9M-2JhcdUF6fOkxeUFob-6FnkHIa4BeWYNbN5BaacNgyzCfR_K-y8_mqlmtDLvi4EMZmZQRJp2BRRrya6mR_6jPPLyt8tKtXlp-1hwypjNgpSlvL-nZD1aV7kIjT_MpzO2daB6LyuvG5jeLMQE93uVP6ah4JcOJT42mzU3kypcT_jMu2zr_09M2riXlh3Pes-xvcaJ66CzEoQlVDaX9vWc8&sai=AMfl-YTLKG1xw_QNcfQEHC8FfPgOGXvtRw17W5qDg5LszBDlDxjeba4FtHyXuum1_BA-1fMUefIq9mQWpMUl93nm2U2C2trN-YXK5Kerr2kh8bHLvz2CbbiaoRAD5coShyyHWNx3fF8jA14BNiAnEHESYkaudjo_rAeVBmDESvGuIy1njYZgi8I&sig=Cg0ArKJSzHtuVjO8-ritEAE&uach_m=%5BUACH%5D&pr=6:5.000000&fbs_aeid=%5Bgw_fbsaeid%5D&urlfix=1&adurl=]]></Impression><Creatives><Creative id=\"218854482\" sequence=\"1\" AdID=\"580999522-1\"><Linear><Icons></Icons><Duration>00:00:15</Duration><TrackingEvents><Tracking event=\"acceptInvitation\"><![CDATA[https://ade.googlesyndication.com/ddm/activity/dc_oe=ChMI6tTy9buohwMV7gRoCB2uOQONEAAYACDS6K1oOhoI-evkngQQkLGCquwEGN2Kn-UDIP3srdzUEkITCJnH6_W7qIcDFfgLaAgdmtcOVkgAUDpYmHVg6KHzDWih4Yy-AYIBjAEKEwiZx-v1u6iHAxX4C2gIHZrXDlYSEwjGnvL1u6iHAxWTDmgIHcljCR0iGgjViM7rTxDisoWVAqgC-evkngSwAt2Kn-UDKIgnQAbgAQGAAgGYAgGgAv3srdzUEqgCBsACdpoDBDGRo7zQAwLiAx1lcy5zb2NpYWxwb2ludC5Nb25zdGVyTGVnZW5kcw;dc_rmcid=CAQSGwDaQooLok9zP9zz-sCGA2wcbIFqkESHrOg6zRgB;eps=CIhhEAEYXzIDioIBOg6AwICAgIAIgMCAgICgKEi9_cE6WNOf6_W7qIcD;met=1;ecn1=1;etm1=0;eid1=10;]]></Tracking><Tracking event=\"thirdQuartile\"><![CDATA[https://ade.googlesyndication.com/ddm/activity/dc_oe=ChMI6tTy9buohwMV7gRoCB2uOQONEAAYACDS6K1oOhoI-evkngQQkLGCquwEGN2Kn-UDIP3srdzUEkITCJnH6_W7qIcDFfgLaAgdmtcOVkgAUDpYmHVg6KHzDWih4Yy-AYIBjAEKEwiZx-v1u6iHAxX4C2gIHZrXDlYSEwjGnvL1u6iHAxWTDmgIHcljCR0iGgjViM7rTxDisoWVAqgC-evkngSwAt2Kn-UDKIgnQAbgAQGAAgGYAgGgAv3srdzUEqgCBsACdpoDBDGRo7zQAwLiAx1lcy5zb2NpYWxwb2ludC5Nb25zdGVyTGVnZW5kcw;dc_rmcid=CAQSGwDaQooLok9zP9zz-sCGA2wcbIFqkESHrOg6zRgB;eps=CIhhEAEYXzIDioIBOg6AwICAgIAIgMCAgICgKEi9_cE6WNOf6_W7qIcD;met=1;ecn1=1;etm1=0;eid1=960585;]]></Tracking><Tracking event=\"thirdQuartile\"><![CDATA[https://st.pubmatic.com/track?operId=7&p=160456&s=799454&a=6046966&wa=243&ts=1721026660&wc=23025&crId=580999522&ucrid=2706090604851211696&impid=4AB904AF-595C-4CDD-A401-57A5392C291F&advertiser_id=54516&ecpm=5.000000&mkid=19197&pbyId=51287&plmt=3&rwrd=1&instl=1&abzcid=0&wDlId=4470997&wDlMtId=382637&wDlChnlId=5&gcoid=178&ch=1&e=5&pfi=5&vps=3&sURL=es.socialpoint.MonsterLegends]]></Tracking><Tracking event=\"thirdQuartile\"><![CDATA[https://t.appads.in/api/track?crid=580999522&pt_fp=0.01&apid=bf5d9c029400934802f4c4f119dabc0f&lt=0&pt_bp=1.5000000000000002&oid=34410&isrtb=1&ht=320&tstp=1721026660351&tid=9af5bda0-eef4-41cb-9142-4f11bbb07281&chid=7977&wopid=a3690642-2b90-4384-959a-a66bd9d97d51&eap=5.0&cntry=philippines&tkn=9ae68114238eb829026fd80cbefb75ed&exdi=PM-WJNU-0659&bundle=es.socialpoint.MonsterLegends&wot=4&wt=480&did=0fa94627-9b47-4a43-b99f-603c141b6a8d&ap=${AUCTION_PRICE}&aid=${AUCTION_ID}&event=3&]]></Tracking><Tracking event=\"start\"><![CDATA[https://t.appads.in/api/track?crid=580999522&pt_fp=0.01&apid=bf5d9c029400934802f4c4f119dabc0f&lt=0&pt_bp=1.5000000000000002&oid=34410&isrtb=1&ht=320&tstp=1721026660351&tid=9af5bda0-eef4-41cb-9142-4f11bbb07281&chid=7977&wopid=a3690642-2b90-4384-959a-a66bd9d97d51&eap=5.0&cntry=philippines&tkn=9ae68114238eb829026fd80cbefb75ed&exdi=PM-WJNU-0659&bundle=es.socialpoint.MonsterLegends&wot=4&wt=480&did=0fa94627-9b47-4a43-b99f-603c141b6a8d&ap=${AUCTION_PRICE}&aid=${AUCTION_ID}&event=7&]]></Tracking><Tracking event=\"start\"><![CDATA[https://ade.googlesyndication.com/ddm/activity/dc_oe=ChMI6tTy9buohwMV7gRoCB2uOQONEAAYACDS6K1oOhoI-evkngQQkLGCquwEGN2Kn-UDIP3srdzUEkITCJnH6_W7qIcDFfgLaAgdmtcOVkgAUDpYmHVg6KHzDWih4Yy-AYIBjAEKEwiZx-v1u6iHAxX4C2gIHZrXDlYSEwjGnvL1u6iHAxWTDmgIHcljCR0iGgjViM7rTxDisoWVAqgC-evkngSwAt2Kn-UDKIgnQAbgAQGAAgGYAgGgAv3srdzUEqgCBsACdpoDBDGRo7zQAwLiAx1lcy5zb2NpYWxwb2ludC5Nb25zdGVyTGVnZW5kcw;dc_rmcid=CAQSGwDaQooLok9zP9zz-sCGA2wcbIFqkESHrOg6zRgB;eps=CIhhEAEYXzIDioIBOg6AwICAgIAIgMCAgICgKEi9_cE6WNOf6_W7qIcD;met=1;ecn1=1;etm1=0;eid1=11;]]></Tracking><Tracking event=\"start\"><![CDATA[https://st.pubmatic.com/track?operId=7&p=160456&s=799454&a=6046966&wa=243&ts=1721026660&wc=23025&crId=580999522&ucrid=2706090604851211696&impid=4AB904AF-595C-4CDD-A401-57A5392C291F&advertiser_id=54516&ecpm=5.000000&mkid=19197&pbyId=51287&plmt=3&rwrd=1&instl=1&abzcid=0&wDlId=4470997&wDlMtId=382637&wDlChnlId=5&gcoid=178&ch=1&e=2&pfi=5&vps=3&it=2&vadFmt=6&vapi=7&sURL=es.socialpoint.MonsterLegends]]></Tracking><Tracking event=\"creativeView\"><![CDATA[https://st.pubmatic.com/track?operId=7&p=160456&s=799454&a=6046966&wa=243&ts=1721026660&wc=23025&crId=580999522&ucrid=2706090604851211696&impid=4AB904AF-595C-4CDD-A401-57A5392C291F&advertiser_id=54516&ecpm=5.000000&mkid=19197&pbyId=51287&plmt=3&rwrd=1&instl=1&abzcid=0&wDlId=4470997&wDlMtId=382637&wDlChnlId=5&gcoid=178&ch=1&e=1]]></Tracking><Tracking event=\"creativeView\"><![CDATA[https://t.appads.in/api/track?crid=580999522&pt_fp=0.01&apid=bf5d9c029400934802f4c4f119dabc0f&lt=0&pt_bp=1.5000000000000002&oid=34410&isrtb=1&ht=320&tstp=1721026660351&tid=9af5bda0-eef4-41cb-9142-4f11bbb07281&chid=7977&wopid=a3690642-2b90-4384-959a-a66bd9d97d51&eap=5.0&cntry=philippines&tkn=9ae68114238eb829026fd80cbefb75ed&exdi=PM-WJNU-0659&bundle=es.socialpoint.MonsterLegends&wot=4&wt=480&did=0fa94627-9b47-4a43-b99f-603c141b6a8d&ap=${AUCTION_PRICE}&aid=${AUCTION_ID}&event=31&]]></Tracking><Tracking event=\"skip\"><![CDATA[https://t.appads.in/api/track?crid=580999522&pt_fp=0.01&apid=bf5d9c029400934802f4c4f119dabc0f&lt=0&pt_bp=1.5000000000000002&oid=34410&isrtb=1&ht=320&tstp=1721026660351&tid=9af5bda0-eef4-41cb-9142-4f11bbb07281&chid=7977&wopid=a3690642-2b90-4384-959a-a66bd9d97d51&eap=5.0&cntry=philippines&tkn=9ae68114238eb829026fd80cbefb75ed&exdi=PM-WJNU-0659&bundle=es.socialpoint.MonsterLegends&wot=4&wt=480&did=0fa94627-9b47-4a43-b99f-603c141b6a8d&ap=${AUCTION_PRICE}&aid=${AUCTION_ID}&event=14&]]></Tracking><Tracking event=\"mute\"><![CDATA[https://t.appads.in/api/track?crid=580999522&pt_fp=0.01&apid=bf5d9c029400934802f4c4f119dabc0f&lt=0&pt_bp=1.5000000000000002&oid=34410&isrtb=1&ht=320&tstp=1721026660351&tid=9af5bda0-eef4-41cb-9142-4f11bbb07281&chid=7977&wopid=a3690642-2b90-4384-959a-a66bd9d97d51&eap=5.0&cntry=philippines&tkn=9ae68114238eb829026fd80cbefb75ed&exdi=PM-WJNU-0659&bundle=es.socialpoint.MonsterLegends&wot=4&wt=480&did=0fa94627-9b47-4a43-b99f-603c141b6a8d&ap=${AUCTION_PRICE}&aid=${AUCTION_ID}&event=26&]]></Tracking><Tracking event=\"mute\"><![CDATA[https://ade.googlesyndication.com/ddm/activity/dc_oe=ChMI6tTy9buohwMV7gRoCB2uOQONEAAYACDS6K1oOhoI-evkngQQkLGCquwEGN2Kn-UDIP3srdzUEkITCJnH6_W7qIcDFfgLaAgdmtcOVkgAUDpYmHVg6KHzDWih4Yy-AYIBjAEKEwiZx-v1u6iHAxX4C2gIHZrXDlYSEwjGnvL1u6iHAxWTDmgIHcljCR0iGgjViM7rTxDisoWVAqgC-evkngSwAt2Kn-UDKIgnQAbgAQGAAgGYAgGgAv3srdzUEqgCBsACdpoDBDGRo7zQAwLiAx1lcy5zb2NpYWxwb2ludC5Nb25zdGVyTGVnZW5kcw;dc_rmcid=CAQSGwDaQooLok9zP9zz-sCGA2wcbIFqkESHrOg6zRgB;eps=CIhhEAEYXzIDioIBOg6AwICAgIAIgMCAgICgKEi9_cE6WNOf6_W7qIcD;met=1;ecn1=1;etm1=0;eid1=16;]]></Tracking><Tracking event=\"pause\"><![CDATA[https://ade.googlesyndication.com/ddm/activity/dc_oe=ChMI6tTy9buohwMV7gRoCB2uOQONEAAYACDS6K1oOhoI-evkngQQkLGCquwEGN2Kn-UDIP3srdzUEkITCJnH6_W7qIcDFfgLaAgdmtcOVkgAUDpYmHVg6KHzDWih4Yy-AYIBjAEKEwiZx-v1u6iHAxX4C2gIHZrXDlYSEwjGnvL1u6iHAxWTDmgIHcljCR0iGgjViM7rTxDisoWVAqgC-evkngSwAt2Kn-UDKIgnQAbgAQGAAgGYAgGgAv3srdzUEqgCBsACdpoDBDGRo7zQAwLiAx1lcy5zb2NpYWxwb2ludC5Nb25zdGVyTGVnZW5kcw;dc_rmcid=CAQSGwDaQooLok9zP9zz-sCGA2wcbIFqkESHrOg6zRgB;eps=CIhhEAEYXzIDioIBOg6AwICAgIAIgMCAgICgKEi9_cE6WNOf6_W7qIcD;met=1;ecn1=1;etm1=0;eid1=15;]]></Tracking><Tracking event=\"fullscreen\"><![CDATA[https://ade.googlesyndication.com/ddm/activity/dc_oe=ChMI6tTy9buohwMV7gRoCB2uOQONEAAYACDS6K1oOhoI-evkngQQkLGCquwEGN2Kn-UDIP3srdzUEkITCJnH6_W7qIcDFfgLaAgdmtcOVkgAUDpYmHVg6KHzDWih4Yy-AYIBjAEKEwiZx-v1u6iHAxX4C2gIHZrXDlYSEwjGnvL1u6iHAxWTDmgIHcljCR0iGgjViM7rTxDisoWVAqgC-evkngSwAt2Kn-UDKIgnQAbgAQGAAgGYAgGgAv3srdzUEqgCBsACdpoDBDGRo7zQAwLiAx1lcy5zb2NpYWxwb2ludC5Nb25zdGVyTGVnZW5kcw;dc_rmcid=CAQSGwDaQooLok9zP9zz-sCGA2wcbIFqkESHrOg6zRgB;eps=CIhhEAEYXzIDioIBOg6AwICAgIAIgMCAgICgKEi9_cE6WNOf6_W7qIcD;met=1;ecn1=1;etm1=0;eid1=19;]]></Tracking><Tracking event=\"firstQuartile\"><![CDATA[https://ade.googlesyndication.com/ddm/activity/dc_oe=ChMI6tTy9buohwMV7gRoCB2uOQONEAAYACDS6K1oOhoI-evkngQQkLGCquwEGN2Kn-UDIP3srdzUEkITCJnH6_W7qIcDFfgLaAgdmtcOVkgAUDpYmHVg6KHzDWih4Yy-AYIBjAEKEwiZx-v1u6iHAxX4C2gIHZrXDlYSEwjGnvL1u6iHAxWTDmgIHcljCR0iGgjViM7rTxDisoWVAqgC-evkngSwAt2Kn-UDKIgnQAbgAQGAAgGYAgGgAv3srdzUEqgCBsACdpoDBDGRo7zQAwLiAx1lcy5zb2NpYWxwb2ludC5Nb25zdGVyTGVnZW5kcw;dc_rmcid=CAQSGwDaQooLok9zP9zz-sCGA2wcbIFqkESHrOg6zRgB;eps=CIhhEAEYXzIDioIBOg6AwICAgIAIgMCAgICgKEi9_cE6WNOf6_W7qIcD;met=1;ecn1=1;etm1=0;eid1=960584;]]></Tracking><Tracking event=\"firstQuartile\"><![CDATA[https://t.appads.in/api/track?crid=580999522&pt_fp=0.01&apid=bf5d9c029400934802f4c4f119dabc0f&lt=0&pt_bp=1.5000000000000002&oid=34410&isrtb=1&ht=320&tstp=1721026660351&tid=9af5bda0-eef4-41cb-9142-4f11bbb07281&chid=7977&wopid=a3690642-2b90-4384-959a-a66bd9d97d51&eap=5.0&cntry=philippines&tkn=9ae68114238eb829026fd80cbefb75ed&exdi=PM-WJNU-0659&bundle=es.socialpoint.MonsterLegends&wot=4&wt=480&did=0fa94627-9b47-4a43-b99f-603c141b6a8d&ap=${AUCTION_PRICE}&aid=${AUCTION_ID}&event=1&]]></Tracking><Tracking event=\"firstQuartile\"><![CDATA[https://st.pubmatic.com/track?operId=7&p=160456&s=799454&a=6046966&wa=243&ts=1721026660&wc=23025&crId=580999522&ucrid=2706090604851211696&impid=4AB904AF-595C-4CDD-A401-57A5392C291F&advertiser_id=54516&ecpm=5.000000&mkid=19197&pbyId=51287&plmt=3&rwrd=1&instl=1&abzcid=0&wDlId=4470997&wDlMtId=382637&wDlChnlId=5&gcoid=178&ch=1&e=4&pfi=5&vps=3&sURL=es.socialpoint.MonsterLegends]]></Tracking><Tracking event=\"midpoint\"><![CDATA[https://st.pubmatic.com/track?operId=7&p=160456&s=799454&a=6046966&wa=243&ts=1721026660&wc=23025&crId=580999522&ucrid=2706090604851211696&impid=4AB904AF-595C-4CDD-A401-57A5392C291F&advertiser_id=54516&ecpm=5.000000&mkid=19197&pbyId=51287&plmt=3&rwrd=1&instl=1&abzcid=0&wDlId=4470997&wDlMtId=382637&wDlChnlId=5&gcoid=178&ch=1&e=3&pfi=5&vps=3&sURL=es.socialpoint.MonsterLegends]]></Tracking><Tracking event=\"midpoint\"><![CDATA[https://ade.googlesyndication.com/ddm/activity/dc_oe=ChMI6tTy9buohwMV7gRoCB2uOQONEAAYACDS6K1oOhoI-evkngQQkLGCquwEGN2Kn-UDIP3srdzUEkITCJnH6_W7qIcDFfgLaAgdmtcOVkgAUDpYmHVg6KHzDWih4Yy-AYIBjAEKEwiZx-v1u6iHAxX4C2gIHZrXDlYSEwjGnvL1u6iHAxWTDmgIHcljCR0iGgjViM7rTxDisoWVAqgC-evkngSwAt2Kn-UDKIgnQAbgAQGAAgGYAgGgAv3srdzUEqgCBsACdpoDBDGRo7zQAwLiAx1lcy5zb2NpYWxwb2ludC5Nb25zdGVyTGVnZW5kcw;dc_rmcid=CAQSGwDaQooLok9zP9zz-sCGA2wcbIFqkESHrOg6zRgB;eps=CIhhEAEYXzIDioIBOg6AwICAgIAIgMCAgICgKEi9_cE6WNOf6_W7qIcD;met=1;ecn1=1;etm1=0;eid1=18;]]></Tracking><Tracking event=\"midpoint\"><![CDATA[https://t.appads.in/api/track?crid=580999522&pt_fp=0.01&apid=bf5d9c029400934802f4c4f119dabc0f&lt=0&pt_bp=1.5000000000000002&oid=34410&isrtb=1&ht=320&tstp=1721026660351&tid=9af5bda0-eef4-41cb-9142-4f11bbb07281&chid=7977&wopid=a3690642-2b90-4384-959a-a66bd9d97d51&eap=5.0&cntry=philippines&tkn=9ae68114238eb829026fd80cbefb75ed&exdi=PM-WJNU-0659&bundle=es.socialpoint.MonsterLegends&wot=4&wt=480&did=0fa94627-9b47-4a43-b99f-603c141b6a8d&ap=${AUCTION_PRICE}&aid=${AUCTION_ID}&event=2&]]></Tracking><Tracking event=\"unmute\"><![CDATA[https://t.appads.in/api/track?crid=580999522&pt_fp=0.01&apid=bf5d9c029400934802f4c4f119dabc0f&lt=0&pt_bp=1.5000000000000002&oid=34410&isrtb=1&ht=320&tstp=1721026660351&tid=9af5bda0-eef4-41cb-9142-4f11bbb07281&chid=7977&wopid=a3690642-2b90-4384-959a-a66bd9d97d51&eap=5.0&cntry=philippines&tkn=9ae68114238eb829026fd80cbefb75ed&exdi=PM-WJNU-0659&bundle=es.socialpoint.MonsterLegends&wot=4&wt=480&did=0fa94627-9b47-4a43-b99f-603c141b6a8d&ap=${AUCTION_PRICE}&aid=${AUCTION_ID}&event=27&]]></Tracking><Tracking event=\"unmute\"><![CDATA[https://ade.googlesyndication.com/ddm/activity/dc_oe=ChMI6tTy9buohwMV7gRoCB2uOQONEAAYACDS6K1oOhoI-evkngQQkLGCquwEGN2Kn-UDIP3srdzUEkITCJnH6_W7qIcDFfgLaAgdmtcOVkgAUDpYmHVg6KHzDWih4Yy-AYIBjAEKEwiZx-v1u6iHAxX4C2gIHZrXDlYSEwjGnvL1u6iHAxWTDmgIHcljCR0iGgjViM7rTxDisoWVAqgC-evkngSwAt2Kn-UDKIgnQAbgAQGAAgGYAgGgAv3srdzUEqgCBsACdpoDBDGRo7zQAwLiAx1lcy5zb2NpYWxwb2ludC5Nb25zdGVyTGVnZW5kcw;dc_rmcid=CAQSGwDaQooLok9zP9zz-sCGA2wcbIFqkESHrOg6zRgB;eps=CIhhEAEYXzIDioIBOg6AwICAgIAIgMCAgICgKEi9_cE6WNOf6_W7qIcD;met=1;ecn1=1;etm1=0;eid1=149645;]]></Tracking><Tracking event=\"complete\"><![CDATA[https://t.appads.in/api/track?crid=580999522&pt_fp=0.01&apid=bf5d9c029400934802f4c4f119dabc0f&lt=0&pt_bp=1.5000000000000002&oid=34410&isrtb=1&ht=320&tstp=1721026660351&tid=9af5bda0-eef4-41cb-9142-4f11bbb07281&chid=7977&wopid=a3690642-2b90-4384-959a-a66bd9d97d51&eap=5.0&cntry=philippines&tkn=9ae68114238eb829026fd80cbefb75ed&exdi=PM-WJNU-0659&bundle=es.socialpoint.MonsterLegends&wot=4&wt=480&did=0fa94627-9b47-4a43-b99f-603c141b6a8d&ap=${AUCTION_PRICE}&aid=${AUCTION_ID}&event=4&]]></Tracking><Tracking event=\"complete\"><![CDATA[https://st.pubmatic.com/track?operId=7&p=160456&s=799454&a=6046966&wa=243&ts=1721026660&wc=23025&crId=580999522&ucrid=2706090604851211696&impid=4AB904AF-595C-4CDD-A401-57A5392C291F&advertiser_id=54516&ecpm=5.000000&mkid=19197&pbyId=51287&plmt=3&rwrd=1&instl=1&abzcid=0&wDlId=4470997&wDlMtId=382637&wDlChnlId=5&gcoid=178&ch=1&e=6&pfi=5&vps=3&sURL=es.socialpoint.MonsterLegends]]></Tracking><Tracking event=\"complete\"><![CDATA[https://ade.googlesyndication.com/ddm/activity/dc_oe=ChMI6tTy9buohwMV7gRoCB2uOQONEAAYACDS6K1oOhoI-evkngQQkLGCquwEGN2Kn-UDIP3srdzUEkITCJnH6_W7qIcDFfgLaAgdmtcOVkgAUDpYmHVg6KHzDWih4Yy-AYIBjAEKEwiZx-v1u6iHAxX4C2gIHZrXDlYSEwjGnvL1u6iHAxWTDmgIHcljCR0iGgjViM7rTxDisoWVAqgC-evkngSwAt2Kn-UDKIgnQAbgAQGAAgGYAgGgAv3srdzUEqgCBsACdpoDBDGRo7zQAwLiAx1lcy5zb2NpYWxwb2ludC5Nb25zdGVyTGVnZW5kcw;dc_rmcid=CAQSGwDaQooLok9zP9zz-sCGA2wcbIFqkESHrOg6zRgB;eps=CIhhEAEYXzIDioIBOg6AwICAgIAIgMCAgICgKEi9_cE6WNOf6_W7qIcD;met=1;ecn1=1;etm1=0;eid1=13;]]></Tracking><Tracking event=\"close\"><![CDATA[https://t.appads.in/api/track?crid=580999522&pt_fp=0.01&apid=bf5d9c029400934802f4c4f119dabc0f&lt=0&pt_bp=1.5000000000000002&oid=34410&isrtb=1&ht=320&tstp=1721026660351&tid=9af5bda0-eef4-41cb-9142-4f11bbb07281&chid=7977&wopid=a3690642-2b90-4384-959a-a66bd9d97d51&eap=5.0&cntry=philippines&tkn=9ae68114238eb829026fd80cbefb75ed&exdi=PM-WJNU-0659&bundle=es.socialpoint.MonsterLegends&wot=4&wt=480&did=0fa94627-9b47-4a43-b99f-603c141b6a8d&ap=${AUCTION_PRICE}&aid=${AUCTION_ID}&event=5&]]></Tracking><Tracking event=\"close\"><![CDATA[https://ade.googlesyndication.com/ddm/activity/dc_oe=ChMI6tTy9buohwMV7gRoCB2uOQONEAAYACDS6K1oOhoI-evkngQQkLGCquwEGN2Kn-UDIP3srdzUEkITCJnH6_W7qIcDFfgLaAgdmtcOVkgAUDpYmHVg6KHzDWih4Yy-AYIBjAEKEwiZx-v1u6iHAxX4C2gIHZrXDlYSEwjGnvL1u6iHAxWTDmgIHcljCR0iGgjViM7rTxDisoWVAqgC-evkngSwAt2Kn-UDKIgnQAbgAQGAAgGYAgGgAv3srdzUEqgCBsACdpoDBDGRo7zQAwLiAx1lcy5zb2NpYWxwb2ludC5Nb25zdGVyTGVnZW5kcw;dc_rmcid=CAQSGwDaQooLok9zP9zz-sCGA2wcbIFqkESHrOg6zRgB;eps=CIhhEAEYXzIDioIBOg6AwICAgIAIgMCAgICgKEi9_cE6WNOf6_W7qIcD;met=1;ecn1=1;etm1=0;eid1=8;]]></Tracking><Tracking event=\"closeLinear\"><![CDATA[https://t.appads.in/api/track?crid=580999522&pt_fp=0.01&apid=bf5d9c029400934802f4c4f119dabc0f&lt=0&pt_bp=1.5000000000000002&oid=34410&isrtb=1&ht=320&tstp=1721026660351&tid=9af5bda0-eef4-41cb-9142-4f11bbb07281&chid=7977&wopid=a3690642-2b90-4384-959a-a66bd9d97d51&eap=5.0&cntry=philippines&tkn=9ae68114238eb829026fd80cbefb75ed&exdi=PM-WJNU-0659&bundle=es.socialpoint.MonsterLegends&wot=4&wt=480&did=0fa94627-9b47-4a43-b99f-603c141b6a8d&ap=${AUCTION_PRICE}&aid=${AUCTION_ID}&event=5&]]></Tracking></TrackingEvents><VideoClicks><ClickThrough><![CDATA[https://adclick.g.doubleclick.net/pcs/click?xai=AKAOjsuDanj7pmtfMBg3cB6ryCToPgJM3iptEKWs32s-rkYiXDKiWhQbfMzfeGbI2ja42A-C529IblTTFv_5jQJdUhkk9auOQpuuaBu6Wjgp1PaSwjr8jLK3Ng9McKdERRZFH-qa-_qNnsSUrMdkubW-gA1v47gT3SVJVuCfPwO3UPtCX5cuNjeWNL-pNj92O0MK-SffZCGxrQ5Q92kQmWGe2TzcssMSVqqYfl-h5qoT9um0afaG5mEn-jsCjXWGq_b7DDMCWNDZ47ynVmdMRY-ImNwFAsHoDKdJz8A-9XPms0wpVxDG8ab5PNFxl3ajelOsYCrRgbqnd5aaFhUdYmQPdYeEYFyDUhU4lm0-bx8KsV3fWKj63h_xU1kS6DlEfrCWlU5QPyeSlzUToDHj-IFOhWozkGCdsNRPS8jn_KFLnz8_aDXBM4gY1woGXV02uvHu7Ze9LV0WIEKuEDrTamFhej0s_CvHeRpQGONFQ0UEtKrOo0voy02PwqdLQdj9_VXtKSrtUmwH1bkUnkU1qRcz4IMQ6VHbgsZudge7N7fhrY1VnemTHMs_kwV0aCqrZ0Wld6C5BMfNm41PztxRytCF03NB-9G_wczDAqC4G0jp6Mjp71ENtEHBJ-WL3L4joZfmy2zNcwFxYXFGlE8twuH_2qjMJevDqwHPpVYi2157GHsyBnqD208OkrCcqeN83JbH_eNxThcR-IIuRxTNLkrEmC1LRYLmj-DeCTDRnyeXopzKKaKYM0KhiTA-OiiWgAV_k8o7-U7p7EmQ1eOW2PWcF2q1_De07NILta67XDaXV_WfJoM7luvCT4Kr4EfLjmPEWA1C0Yh_fde4MLhqUVAYCK6WmfolOX8YarZeqLJ1INZQjIo9D7imyXkh4dA4mcpl3RfK2dtN9_Q0Ti9KksoooGRtRLtUpsBvnvmqyjMZjtZ2n89dBmaO8A5GHwRm3m9RvK2i8S-m8OJfNG6mf3QMyQUNHqQUOJNF40lpa1CTv-ntpTPvkWjsVpg3YJfAyKMeW7HUT3CSOZ_fnpcskPs4-zqcAQZgd74Yavq4x16N2MmsOpMQhnj9gNGurTMVAc8VObV_tk4CO5v4LQjmDpvpYVcU0we-J-rBkUExQmvTSGhPOWh850eDiOhjn-evTZIxjrWTNgMDTV_q_YHNG8YLyyjIzf-m63MDlPEFfbc9-uxV-NauohF9EZxKvqhU_nT2djNHu-aJZUS5wAJD2wigMgkV-PCb-rKi7oTXAYMzh0T1sBWAyHv0sy7pB0iz3z-3RrxY6e_oQXuqCe2vp3kK6zndkwK0v-z3E5Q7NiUUoxsPHqMmeAc6fXH07WrNCYrH2ZrN1lcVXmjaL3rmDlMch2uMQefirdIRwBB4aMnMYuJ-1wvupcIAJt7tQz8fsI8hS_J3N70GrJ_-0zFGEIc6ulOKtvLKS_CuPGiYv4ZiMx9iT-sZc1TQzg0h7HCJUjk2RD0gPrDEyMzKyYsELm7kvffqoU8BELcVblLzqaYERuob4LMoDy5b_Am9jwtpDnAD4W0qrv_swItd2Xg_4yie20qI_6tx79yzaTAU8r7qpHmRsfTaQzCvbWiq71U35-a9vMnZqeNapyzUWfe03X9o6GaUAKgUJTGEyUM3MK79NDFEZhHqdstxkqRj_RcDK6UKvznFSvG01ti6VubO&sai=AMfl-YT2dOTlVaIPvOIC94rNTEajncNa2j17Fx7m-sS-5QF7nL74jp_oUNYXFj9IC-0YmxVuI6oo2sMDp0q05jMCwRvJITSmjnDFBAcFEuDBgv7YoT5Lgw0AIzJ8oa9wx-IMLRmcBN77dw_QH-QkeqqI9Yw5FAoa8Hf7Z4rVEx_MXeLOLIaaYB26kvJIVkAV6Lh5jQyq&sig=Cg0ArKJSzBQ6aOiXzi61EAE&pr=6:5.000000&fbs_aeid=%5Bgw_fbsaeid%5D&urlfix=1&adurl=https://bhpz.adj.st/%3Ffoodpanda:///c%3Dph%26s%3Dl%26adj_t%3Dzoo12og_r0d0uti%26adj_campaign%3Ddis_bra_mix_eat_aut_aa_ph_video_MealForOne%26adj_adgroup%3DAnymind%26adj_creative%3DBurger%26adj_deeplink%3Dfoodpanda%253A%252F%252F%253Ffoodpanda%253A%252F%252F%252Fc%253Dph%2526s%253Dl%26adj_redirect%3Dhttps%253A%252F%252Fwww.foodpanda.ph%253Futm_campaign%253Ddis_bra_web_eat_aut_aa_ph_video_MealForOne%2526utm_source%253DAnymind%2526utm_medium%253Ddisplay]]></ClickThrough><ClickTracking><![CDATA[https://st.pubmatic.com/track?operId=7&p=160456&s=799454&a=6046966&wa=243&ts=1721026660&wc=23025&crId=580999522&ucrid=2706090604851211696&impid=4AB904AF-595C-4CDD-A401-57A5392C291F&advertiser_id=54516&ecpm=5.000000&mkid=19197&pbyId=51287&plmt=3&rwrd=1&instl=1&abzcid=0&wDlId=4470997&wDlMtId=382637&wDlChnlId=5&gcoid=178&ch=1&e=99]]></ClickTracking><ClickTracking><![CDATA[https://t.appads.in/api/track?crid=580999522&pt_fp=PT_FP&apid=bf5d9c029400934802f4c4f119dabc0f&lt=0&pt_bp=PT_BP&oid=34410&isrtb=1&ht=320&tstp=1721026660351&tid=9af5bda0-eef4-41cb-9142-4f11bbb07281&chid=7977&wopid=a3690642-2b90-4384-959a-a66bd9d97d51&eap=PT_EAP&cntry=philippines&tkn=9ae68114238eb829026fd80cbefb75ed&exdi=PM-WJNU-0659&bundle=es.socialpoint.MonsterLegends&wot=4&wt=480&did=0fa94627-9b47-4a43-b99f-603c141b6a8d&ap=${AUCTION_PRICE}&aid=${AUCTION_ID}&event=9&]]></ClickTracking></VideoClicks><MediaFiles><MediaFile id=\"882059949-18\" delivery=\"progressive\" type=\"video/mp4\" bitrate=\"383\" width=\"640\" height=\"360\" scalable=\"true\" maintainAspectRatio=\"true\"><![CDATA[https://gcdn.2mdn.net/videoplayback/id/38ee71b9f62992ac/itag/18/source/web_video_ads/xpc/EgVovf3BOg%3D%3D/ctier/L/acao/yes/ip/0.0.0.0/ipbits/0/expire/1752562660/sparams/ip,ipbits,expire,id,itag,source,xpc,ctier,acao/signature/0619F6C1925471F861B9A60AF5C57155A397674C.3090B7D0AEB8A9EE29152D3460ABB9A504A6851D/key/ck2/file/file.mp4]]></MediaFile><MediaFile id=\"882059949-22\" delivery=\"progressive\" type=\"video/mp4\" bitrate=\"1892\" width=\"1280\" height=\"720\" scalable=\"true\" maintainAspectRatio=\"true\"><![CDATA[https://gcdn.2mdn.net/videoplayback/id/38ee71b9f62992ac/itag/22/source/web_video_ads/xpc/EgVovf3BOg%3D%3D/ctier/L/acao/yes/ip/0.0.0.0/ipbits/0/expire/1752562660/sparams/ip,ipbits,expire,id,itag,source,xpc,ctier,acao/signature/A19DB2C8949343FD69ABC0B2ACDC2BE0B1CCF727.72AA3063B7205C117FED0B689F3C9E1FECCA5EB2/key/ck2/file/file.mp4]]></MediaFile><MediaFile id=\"882059949-37\" delivery=\"progressive\" type=\"video/mp4\" bitrate=\"3867\" width=\"1920\" height=\"1080\" scalable=\"true\" maintainAspectRatio=\"true\"><![CDATA[https://gcdn.2mdn.net/videoplayback/id/38ee71b9f62992ac/itag/37/source/web_video_ads/xpc/EgVovf3BOg%3D%3D/ctier/L/acao/yes/ip/0.0.0.0/ipbits/0/expire/1752562660/sparams/ip,ipbits,expire,id,itag,source,xpc,ctier,acao/signature/0BE2F719A74ACC0BEB8D767169896887ECD5E730.0F757258082A5CA301641FC1665CD5E1ACE3917D/key/ck2/file/file.mp4]]></MediaFile><MediaFile id=\"882059949-692\" delivery=\"progressive\" type=\"video/mp4\" bitrate=\"1140\" width=\"960\" height=\"540\" scalable=\"true\" maintainAspectRatio=\"true\"><![CDATA[https://gcdn.2mdn.net/videoplayback/id/38ee71b9f62992ac/itag/692/source/web_video_ads/xpc/EgVovf3BOg%3D%3D/ctier/L/acao/yes/ip/0.0.0.0/ipbits/0/expire/1752562660/sparams/ip,ipbits,expire,id,itag,source,xpc,ctier,acao/signature/0B776A7052937122154E4F0A3D4DFA901A28EA1F.6CEF9F91A1F9D61C1D4CC62AAE5B294BC108299F/key/ck2/file/file.mp4]]></MediaFile><MediaFile id=\"882059949-59\" delivery=\"progressive\" type=\"video/mp4\" bitrate=\"676\" width=\"854\" height=\"480\" scalable=\"true\" maintainAspectRatio=\"true\"><![CDATA[https://gcdn.2mdn.net/videoplayback/id/38ee71b9f62992ac/itag/59/source/web_video_ads/xpc/EgVovf3BOg%3D%3D/ctier/L/acao/yes/ip/0.0.0.0/ipbits/0/expire/1752562660/sparams/ip,ipbits,expire,id,itag,source,xpc,ctier,acao/signature/76D3CB401F05A9C04B5C80F0065C85CD6D665F.730B268DE9FC515893EF8814BF99B9BD1D6DDDC9/key/ck2/file/file.mp4]]></MediaFile><MediaFile id=\"882059949-342\" delivery=\"progressive\" type=\"video/mp4\" bitrate=\"379\" width=\"480\" height=\"270\" scalable=\"true\" maintainAspectRatio=\"true\"><![CDATA[https://gcdn.2mdn.net/videoplayback/id/38ee71b9f62992ac/itag/342/source/web_video_ads/xpc/EgVovf3BOg%3D%3D/ctier/L/acao/yes/ip/0.0.0.0/ipbits/0/expire/1752562660/sparams/ip,ipbits,expire,id,itag,source,xpc,ctier,acao/signature/8B14BB111DEDE5FAFED216CE100605E523D91210.A384A94DF1B256CC693701EFC7AF3C77C925E47E/key/ck2/file/file.mp4]]></MediaFile><MediaFile id=\"882059949-343\" delivery=\"progressive\" type=\"video/mp4\" bitrate=\"851\" width=\"640\" height=\"360\" scalable=\"true\" maintainAspectRatio=\"true\"><![CDATA[https://gcdn.2mdn.net/videoplayback/id/38ee71b9f62992ac/itag/343/source/web_video_ads/xpc/EgVovf3BOg%3D%3D/ctier/L/acao/yes/ip/0.0.0.0/ipbits/0/expire/1752562660/sparams/ip,ipbits,expire,id,itag,source,xpc,ctier,acao/signature/139A3DD7611943ADEF6817E1121EADE356280540.8939D177CB0609C493050DAF85C86E19A4D48C1C/key/ck2/file/file.mp4]]></MediaFile><MediaFile id=\"882059949-344\" delivery=\"progressive\" type=\"video/mp4\" bitrate=\"1197\" width=\"640\" height=\"360\" scalable=\"true\" maintainAspectRatio=\"true\"><![CDATA[https://gcdn.2mdn.net/videoplayback/id/38ee71b9f62992ac/itag/344/source/web_video_ads/xpc/EgVovf3BOg%3D%3D/ctier/L/acao/yes/ip/0.0.0.0/ipbits/0/expire/1752562660/sparams/ip,ipbits,expire,id,itag,source,xpc,ctier,acao/signature/07E8588D4110EDA542E0AE7E1BAC069B07858590.7FD3C029CF7DA49529D03DEF6846658EE49E7BA2/key/ck2/file/file.mp4]]></MediaFile><MediaFile id=\"882059949-345\" delivery=\"progressive\" type=\"video/mp4\" bitrate=\"299\" width=\"640\" height=\"360\" scalable=\"true\" maintainAspectRatio=\"true\"><![CDATA[https://gcdn.2mdn.net/videoplayback/id/38ee71b9f62992ac/itag/345/source/web_video_ads/xpc/EgVovf3BOg%3D%3D/ctier/L/acao/yes/ip/0.0.0.0/ipbits/0/expire/1752562660/sparams/ip,ipbits,expire,id,itag,source,xpc,ctier,acao/signature/34239CFAEF25C4CCF57CDE6A7690BF89F4B6F5.79D9E30D630BE6E5D09727CCFFDEB2829DFC0C75/key/ck2/file/file.mp4]]></MediaFile><MediaFile id=\"882059949-346\" delivery=\"progressive\" type=\"video/mp4\" bitrate=\"486\" width=\"720\" height=\"406\" scalable=\"true\" maintainAspectRatio=\"true\"><![CDATA[https://gcdn.2mdn.net/videoplayback/id/38ee71b9f62992ac/itag/346/source/web_video_ads/xpc/EgVovf3BOg%3D%3D/ctier/L/acao/yes/ip/0.0.0.0/ipbits/0/expire/1752562660/sparams/ip,ipbits,expire,id,itag,source,xpc,ctier,acao/signature/78885A3F1457758A5A5135EFF676B9454DFC76C5.6E7F7FEA2581FC53B31FEB25638FCBB25FA91E89/key/ck2/file/file.mp4]]></MediaFile><MediaFile id=\"882059949-347\" delivery=\"progressive\" type=\"video/mp4\" bitrate=\"1732\" width=\"1024\" height=\"576\" scalable=\"true\" maintainAspectRatio=\"true\"><![CDATA[https://gcdn.2mdn.net/videoplayback/id/38ee71b9f62992ac/itag/347/source/web_video_ads/xpc/EgVovf3BOg%3D%3D/ctier/L/acao/yes/ip/0.0.0.0/ipbits/0/expire/1752562660/sparams/ip,ipbits,expire,id,itag,source,xpc,ctier,acao/signature/3CC3D1E2593FCB8A91F27ED97C86A8240867E2E4.99F9EAD1FE079982825634289B504C979D965FEC/key/ck2/file/file.mp4]]></MediaFile></MediaFiles></Linear></Creative></Creatives><Extensions><Extension type=\"geo\"><Country xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">US</Country><Bandwidth xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">0</Bandwidth></Extension><Extension type=\"dart\"><AdServingData xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"><DeliveryData><GeoData><![CDATA[ct=US&st=DC&city=13278&dma=13&zp=&bw=0]]></GeoData></DeliveryData></AdServingData></Extension><Extension type=\"GDBM\"><UniversalAdId xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"><Id>580999522-1</Id><InCreativeAdId>Yes</InCreativeAdId></UniversalAdId></Extension><Extension><Meta><![CDATA[name=pm-forcepixel;ver=1.0]]></Meta><Pixel loc=\"0\"><Code type=\"1\"><![CDATA[https://ads.pubmatic.com/AdServer/js/showad.js#PIX&ptask=DSP&SPug=1&fp=1&mpc=10&u=&p=160456&s=799454&d=2&cp=0&sc=1&rs=0&os=1&gdpr=0&gdpr_consent=1&gpp=&gpp_sid=]]></Code></Pixel></Extension><Extension type=\"AdVerifications\"><AdVerifications><Verification vendor=\"doubleclickbygoogle.com-omid-video\"><JavaScriptResource apiFramework=\"omid\" browserOptional=\"true\"><![CDATA[https://www.googletagservices.com/activeview/js/current/rx_omid_video.js]]></JavaScriptResource><VerificationParameters><![CDATA[{\"activeview_flags\":\"WyJ4JTI3ODQ0MCc5ZWZvdG0oJjc1MzM3NCUyYmVqdmYvJTI3ODQ0Pic5d3V2YiQmNTY1MzM+IT18dnFjKSEyNzM3OTQmPHFxdmIvJTwxNzM1MDIwIT1uZWh1YC8hMzY0PTUwNTEhOWFia3thKCQxNjAyMTA6MyY8Y2JvdGYrKjAxNTAwMzQ6JTJiZWp2Zi8lNzI7MTc2MTMhPWVmZHdhKic3NjQ2MzsyMSQ/ZWJrcGIkJjAzNjY3MTc+Kj5iZ2lwZishMz03MTIzNjMlOWFpaHdjKSE3MjAyPDIxNyc5ZWZvdG0oJjIwMDYxOzQ4Jj5gZG9wYi8lPDE3MDcyMDAhPTgoJjIwMDU1NzU/Jj5gZG9wYi8lPDE3MDY0Mj8hPXx2cWMpITcyMDE7PTUwJzl3dXZiJCYwMzY0MTY1NCo+YmdpcGYrITM9NzMxMTAzJTlhaWh3YykhNzIwMD8wNzMnOWVmb3RtKCYyMDA0PzUxOyY+YGRvcGIvJTwxNz40NzQ+IT1uZWh1YC8hMzY0MDY0MTIhOWFia3thKCQxNjc3NDU7PSY8Y2JvdGYrKjAxMjU0MTMzJTJwdnNgLyEzNjM4MzYyNCE5YWJre2EoJDE2NzU3ND43JjxxcXZiLyU8MTA0PTQ2MCE9bmVodWAvITM2Mzs0Mj43ITlhYmt7YSgkMTY1NjszPzwmPGNib3RmeiJd\",\"activeview_metadata\":\"la=0&sloi=1&mm=v&\",\"tracking_configuration\":{\"custom_metric_configurations\":[{\"criteria\":[\"visible=100,audible=1,time=10000ms,timeType=tos\"],\"id\":200104,\"name\":\"custom_metric_viewable_for_engaged_view_1721026660328\"}],\"tracking_events\":{\"acceptinvitation\":[\"https://ade.googlesyndication.com/ddm/activity/dc_oe=ChMI6tTy9buohwMV7gRoCB2uOQONEAAYACDS6K1oOhoI-evkngQQkLGCquwEGN2Kn-UDIP3srdzUEkITCJnH6_W7qIcDFfgLaAgdmtcOVkgAUDpYmHVg6KHzDWih4Yy-AYIBjAEKEwiZx-v1u6iHAxX4C2gIHZrXDlYSEwjGnvL1u6iHAxWTDmgIHcljCR0iGgjViM7rTxDisoWVAqgC-evkngSwAt2Kn-UDKIgnQAbgAQGAAgGYAgGgAv3srdzUEqgCBsACdpoDBDGRo7zQAwLiAx1lcy5zb2NpYWxwb2ludC5Nb25zdGVyTGVnZW5kcw;dc_rmcid=CAQSGwDaQooLok9zP9zz-sCGA2wcbIFqkESHrOg6zRgB;eps=CIhhEAEYXzIDioIBOg6AwICAgIAIgMCAgICgKEi9_cE6WNOf6_W7qIcD;met=1;acvw=%5BVIEWABILITY%5D;gv=%5BGOOGLE_VIEWABILITY%5D;ecn1=1;etm1=0;eid1=210011;\"],\"close\":[\"https://ade.googlesyndication.com/ddm/activity/dc_oe=ChMI6tTy9buohwMV7gRoCB2uOQONEAAYACDS6K1oOhoI-evkngQQkLGCquwEGN2Kn-UDIP3srdzUEkITCJnH6_W7qIcDFfgLaAgdmtcOVkgAUDpYmHVg6KHzDWih4Yy-AYIBjAEKEwiZx-v1u6iHAxX4C2gIHZrXDlYSEwjGnvL1u6iHAxWTDmgIHcljCR0iGgjViM7rTxDisoWVAqgC-evkngSwAt2Kn-UDKIgnQAbgAQGAAgGYAgGgAv3srdzUEqgCBsACdpoDBDGRo7zQAwLiAx1lcy5zb2NpYWxwb2ludC5Nb25zdGVyTGVnZW5kcw;dc_rmcid=CAQSGwDaQooLok9zP9zz-sCGA2wcbIFqkESHrOg6zRgB;eps=CIhhEAEYXzIDioIBOg6AwICAgIAIgMCAgICgKEi9_cE6WNOf6_W7qIcD;met=1;acvw=%5BVIEWABILITY%5D;gv=%5BGOOGLE_VIEWABILITY%5D;ecn1=1;etm1=0;eid1=210010;\"],\"complete\":[\"https://ade.googlesyndication.com/ddm/activity/dc_oe=ChMI6tTy9buohwMV7gRoCB2uOQONEAAYACDS6K1oOhoI-evkngQQkLGCquwEGN2Kn-UDIP3srdzUEkITCJnH6_W7qIcDFfgLaAgdmtcOVkgAUDpYmHVg6KHzDWih4Yy-AYIBjAEKEwiZx-v1u6iHAxX4C2gIHZrXDlYSEwjGnvL1u6iHAxWTDmgIHcljCR0iGgjViM7rTxDisoWVAqgC-evkngSwAt2Kn-UDKIgnQAbgAQGAAgGYAgGgAv3srdzUEqgCBsACdpoDBDGRo7zQAwLiAx1lcy5zb2NpYWxwb2ludC5Nb25zdGVyTGVnZW5kcw;dc_rmcid=CAQSGwDaQooLok9zP9zz-sCGA2wcbIFqkESHrOg6zRgB;eps=CIhhEAEYXzIDioIBOg6AwICAgIAIgMCAgICgKEi9_cE6WNOf6_W7qIcD;met=1;acvw=%5BVIEWABILITY%5D;gv=%5BGOOGLE_VIEWABILITY%5D;ecn1=1;etm1=0;eid1=210005;\"],\"custom_metric_viewable_for_engaged_view_1721026660328\":[\"https://ade.googlesyndication.com/ddm/activity/dc_oe=ChMI6tTy9buohwMV7gRoCB2uOQONEAAYACDS6K1oOhoI-evkngQQkLGCquwEGN2Kn-UDIP3srdzUEkITCJnH6_W7qIcDFfgLaAgdmtcOVkgAUDpYmHVg6KHzDWih4Yy-AYIBjAEKEwiZx-v1u6iHAxX4C2gIHZrXDlYSEwjGnvL1u6iHAxWTDmgIHcljCR0iGgjViM7rTxDisoWVAqgC-evkngSwAt2Kn-UDKIgnQAbgAQGAAgGYAgGgAv3srdzUEqgCBsACdpoDBDGRo7zQAwLiAx1lcy5zb2NpYWxwb2ludC5Nb25zdGVyTGVnZW5kcw;dc_rmcid=CAQSGwDaQooLok9zP9zz-sCGA2wcbIFqkESHrOg6zRgB;eps=CIhhEAEYXzIDioIBOg6AwICAgIAIgMCAgICgKEi9_cE6WNOf6_W7qIcD;met=1;acvw=%5BVIEWABILITY%5D;gv=%5BGOOGLE_VIEWABILITY%5D;ecn1=1;etm1=0;eid1=200104;\"],\"firstquartile\":[\"https://ade.googlesyndication.com/ddm/activity/dc_oe=ChMI6tTy9buohwMV7gRoCB2uOQONEAAYACDS6K1oOhoI-evkngQQkLGCquwEGN2Kn-UDIP3srdzUEkITCJnH6_W7qIcDFfgLaAgdmtcOVkgAUDpYmHVg6KHzDWih4Yy-AYIBjAEKEwiZx-v1u6iHAxX4C2gIHZrXDlYSEwjGnvL1u6iHAxWTDmgIHcljCR0iGgjViM7rTxDisoWVAqgC-evkngSwAt2Kn-UDKIgnQAbgAQGAAgGYAgGgAv3srdzUEqgCBsACdpoDBDGRo7zQAwLiAx1lcy5zb2NpYWxwb2ludC5Nb25zdGVyTGVnZW5kcw;dc_rmcid=CAQSGwDaQooLok9zP9zz-sCGA2wcbIFqkESHrOg6zRgB;eps=CIhhEAEYXzIDioIBOg6AwICAgIAIgMCAgICgKEi9_cE6WNOf6_W7qIcD;met=1;acvw=%5BVIEWABILITY%5D;gv=%5BGOOGLE_VIEWABILITY%5D;ecn1=1;etm1=0;eid1=210002;\"],\"fullscreen\":[\"https://ade.googlesyndication.com/ddm/activity/dc_oe=ChMI6tTy9buohwMV7gRoCB2uOQONEAAYACDS6K1oOhoI-evkngQQkLGCquwEGN2Kn-UDIP3srdzUEkITCJnH6_W7qIcDFfgLaAgdmtcOVkgAUDpYmHVg6KHzDWih4Yy-AYIBjAEKEwiZx-v1u6iHAxX4C2gIHZrXDlYSEwjGnvL1u6iHAxWTDmgIHcljCR0iGgjViM7rTxDisoWVAqgC-evkngSwAt2Kn-UDKIgnQAbgAQGAAgGYAgGgAv3srdzUEqgCBsACdpoDBDGRo7zQAwLiAx1lcy5zb2NpYWxwb2ludC5Nb25zdGVyTGVnZW5kcw;dc_rmcid=CAQSGwDaQooLok9zP9zz-sCGA2wcbIFqkESHrOg6zRgB;eps=CIhhEAEYXzIDioIBOg6AwICAgIAIgMCAgICgKEi9_cE6WNOf6_W7qIcD;met=1;acvw=%5BVIEWABILITY%5D;gv=%5BGOOGLE_VIEWABILITY%5D;ecn1=1;etm1=0;eid1=210009;\"],\"fully_viewable_audible_half_duration_impression\":[\"https://pagead2.googlesyndication.com/pcs/activeview?xai=AKAOjssCMtX29umXPiy3caoFLO81jSNy-7Gn_Esl8x8M1_u4ptbXz6g2ZyEby2MefANBWvm9608p9rFd7bxcVdMLRUE_1qw8f5IpLzeh067UksN-2CHlfnndbee0O-R9469ogLQz8mEjAAEknxzM-jS74qxtBg&sig=Cg0ArKJSzJ75V-AsqNn3EAE&id=lidarv&acvw=%5BVIEWABILITY%5D&gv=%5BGOOGLE_VIEWABILITY%5D\"],\"measurable_impression\":[\"https://pagead2.googlesyndication.com/pcs/activeview?xai=AKAOjssCMtX29umXPiy3caoFLO81jSNy-7Gn_Esl8x8M1_u4ptbXz6g2ZyEby2MefANBWvm9608p9rFd7bxcVdMLRUE_1qw8f5IpLzeh067UksN-2CHlfnndbee0O-R9469ogLQz8mEjAAEknxzM-jS74qxtBg&sig=Cg0ArKJSzJ75V-AsqNn3EAE&id=lidarv&acvw=%5BVIEWABILITY%5D&gv=%5BGOOGLE_VIEWABILITY%5D&avm=1\"],\"midpoint\":[\"https://ade.googlesyndication.com/ddm/activity/dc_oe=ChMI6tTy9buohwMV7gRoCB2uOQONEAAYACDS6K1oOhoI-evkngQQkLGCquwEGN2Kn-UDIP3srdzUEkITCJnH6_W7qIcDFfgLaAgdmtcOVkgAUDpYmHVg6KHzDWih4Yy-AYIBjAEKEwiZx-v1u6iHAxX4C2gIHZrXDlYSEwjGnvL1u6iHAxWTDmgIHcljCR0iGgjViM7rTxDisoWVAqgC-evkngSwAt2Kn-UDKIgnQAbgAQGAAgGYAgGgAv3srdzUEqgCBsACdpoDBDGRo7zQAwLiAx1lcy5zb2NpYWxwb2ludC5Nb25zdGVyTGVnZW5kcw;dc_rmcid=CAQSGwDaQooLok9zP9zz-sCGA2wcbIFqkESHrOg6zRgB;eps=CIhhEAEYXzIDioIBOg6AwICAgIAIgMCAgICgKEi9_cE6WNOf6_W7qIcD;met=1;acvw=%5BVIEWABILITY%5D;gv=%5BGOOGLE_VIEWABILITY%5D;ecn1=1;etm1=0;eid1=210003;\"],\"mute\":[\"https://ade.googlesyndication.com/ddm/activity/dc_oe=ChMI6tTy9buohwMV7gRoCB2uOQONEAAYACDS6K1oOhoI-evkngQQkLGCquwEGN2Kn-UDIP3srdzUEkITCJnH6_W7qIcDFfgLaAgdmtcOVkgAUDpYmHVg6KHzDWih4Yy-AYIBjAEKEwiZx-v1u6iHAxX4C2gIHZrXDlYSEwjGnvL1u6iHAxWTDmgIHcljCR0iGgjViM7rTxDisoWVAqgC-evkngSwAt2Kn-UDKIgnQAbgAQGAAgGYAgGgAv3srdzUEqgCBsACdpoDBDGRo7zQAwLiAx1lcy5zb2NpYWxwb2ludC5Nb25zdGVyTGVnZW5kcw;dc_rmcid=CAQSGwDaQooLok9zP9zz-sCGA2wcbIFqkESHrOg6zRgB;eps=CIhhEAEYXzIDioIBOg6AwICAgIAIgMCAgICgKEi9_cE6WNOf6_W7qIcD;met=1;acvw=%5BVIEWABILITY%5D;gv=%5BGOOGLE_VIEWABILITY%5D;ecn1=1;etm1=0;eid1=210006;\"],\"pause\":[\"https://ade.googlesyndication.com/ddm/activity/dc_oe=ChMI6tTy9buohwMV7gRoCB2uOQONEAAYACDS6K1oOhoI-evkngQQkLGCquwEGN2Kn-UDIP3srdzUEkITCJnH6_W7qIcDFfgLaAgdmtcOVkgAUDpYmHVg6KHzDWih4Yy-AYIBjAEKEwiZx-v1u6iHAxX4C2gIHZrXDlYSEwjGnvL1u6iHAxWTDmgIHcljCR0iGgjViM7rTxDisoWVAqgC-evkngSwAt2Kn-UDKIgnQAbgAQGAAgGYAgGgAv3srdzUEqgCBsACdpoDBDGRo7zQAwLiAx1lcy5zb2NpYWxwb2ludC5Nb25zdGVyTGVnZW5kcw;dc_rmcid=CAQSGwDaQooLok9zP9zz-sCGA2wcbIFqkESHrOg6zRgB;eps=CIhhEAEYXzIDioIBOg6AwICAgIAIgMCAgICgKEi9_cE6WNOf6_W7qIcD;met=1;acvw=%5BVIEWABILITY%5D;gv=%5BGOOGLE_VIEWABILITY%5D;ecn1=1;etm1=0;eid1=210008;\"],\"start\":[\"https://ade.googlesyndication.com/ddm/activity/dc_oe=ChMI6tTy9buohwMV7gRoCB2uOQONEAAYACDS6K1oOhoI-evkngQQkLGCquwEGN2Kn-UDIP3srdzUEkITCJnH6_W7qIcDFfgLaAgdmtcOVkgAUDpYmHVg6KHzDWih4Yy-AYIBjAEKEwiZx-v1u6iHAxX4C2gIHZrXDlYSEwjGnvL1u6iHAxWTDmgIHcljCR0iGgjViM7rTxDisoWVAqgC-evkngSwAt2Kn-UDKIgnQAbgAQGAAgGYAgGgAv3srdzUEqgCBsACdpoDBDGRo7zQAwLiAx1lcy5zb2NpYWxwb2ludC5Nb25zdGVyTGVnZW5kcw;dc_rmcid=CAQSGwDaQooLok9zP9zz-sCGA2wcbIFqkESHrOg6zRgB;eps=CIhhEAEYXzIDioIBOg6AwICAgIAIgMCAgICgKEi9_cE6WNOf6_W7qIcD;met=1;acvw=%5BVIEWABILITY%5D;gv=%5BGOOGLE_VIEWABILITY%5D;dc_rfl=%5BURL_SIGNALS%5D;ecn1=1;etm1=0;eid1=210001;\"],\"thirdquartile\":[\"https://ade.googlesyndication.com/ddm/activity/dc_oe=ChMI6tTy9buohwMV7gRoCB2uOQONEAAYACDS6K1oOhoI-evkngQQkLGCquwEGN2Kn-UDIP3srdzUEkITCJnH6_W7qIcDFfgLaAgdmtcOVkgAUDpYmHVg6KHzDWih4Yy-AYIBjAEKEwiZx-v1u6iHAxX4C2gIHZrXDlYSEwjGnvL1u6iHAxWTDmgIHcljCR0iGgjViM7rTxDisoWVAqgC-evkngSwAt2Kn-UDKIgnQAbgAQGAAgGYAgGgAv3srdzUEqgCBsACdpoDBDGRo7zQAwLiAx1lcy5zb2NpYWxwb2ludC5Nb25zdGVyTGVnZW5kcw;dc_rmcid=CAQSGwDaQooLok9zP9zz-sCGA2wcbIFqkESHrOg6zRgB;eps=CIhhEAEYXzIDioIBOg6AwICAgIAIgMCAgICgKEi9_cE6WNOf6_W7qIcD;met=1;acvw=%5BVIEWABILITY%5D;gv=%5BGOOGLE_VIEWABILITY%5D;ecn1=1;etm1=0;eid1=210004;\"],\"unmute\":[\"https://ade.googlesyndication.com/ddm/activity/dc_oe=ChMI6tTy9buohwMV7gRoCB2uOQONEAAYACDS6K1oOhoI-evkngQQkLGCquwEGN2Kn-UDIP3srdzUEkITCJnH6_W7qIcDFfgLaAgdmtcOVkgAUDpYmHVg6KHzDWih4Yy-AYIBjAEKEwiZx-v1u6iHAxX4C2gIHZrXDlYSEwjGnvL1u6iHAxWTDmgIHcljCR0iGgjViM7rTxDisoWVAqgC-evkngSwAt2Kn-UDKIgnQAbgAQGAAgGYAgGgAv3srdzUEqgCBsACdpoDBDGRo7zQAwLiAx1lcy5zb2NpYWxwb2ludC5Nb25zdGVyTGVnZW5kcw;dc_rmcid=CAQSGwDaQooLok9zP9zz-sCGA2wcbIFqkESHrOg6zRgB;eps=CIhhEAEYXzIDioIBOg6AwICAgIAIgMCAgICgKEi9_cE6WNOf6_W7qIcD;met=1;acvw=%5BVIEWABILITY%5D;gv=%5BGOOGLE_VIEWABILITY%5D;ecn1=1;etm1=0;eid1=210007;\"],\"viewable_impression\":[\"https://pagead2.googlesyndication.com/pcs/activeview?xai=AKAOjssCMtX29umXPiy3caoFLO81jSNy-7Gn_Esl8x8M1_u4ptbXz6g2ZyEby2MefANBWvm9608p9rFd7bxcVdMLRUE_1qw8f5IpLzeh067UksN-2CHlfnndbee0O-R9469ogLQz8mEjAAEknxzM-jS74qxtBg&sig=Cg0ArKJSzJ75V-AsqNn3EAE&id=lidarv&acvw=%5BVIEWABILITY%5D&gv=%5BGOOGLE_VIEWABILITY%5D\"]}},\"ufs_integrator_metadata\":\"CgIYAA\"}]]></VerificationParameters><TrackingEvents><Tracking event=\"verificationNotExecuted\"><![CDATA[https://ade.googlesyndication.com/ddm/activity/dc_oe=ChMI6tTy9buohwMV7gRoCB2uOQONEAAYACDS6K1oOhoI-evkngQQkLGCquwEGN2Kn-UDIP3srdzUEkITCJnH6_W7qIcDFfgLaAgdmtcOVkgAUDpYmHVg6KHzDWih4Yy-AYIBjAEKEwiZx-v1u6iHAxX4C2gIHZrXDlYSEwjGnvL1u6iHAxWTDmgIHcljCR0iGgjViM7rTxDisoWVAqgC-evkngSwAt2Kn-UDKIgnQAbgAQGAAgGYAgGgAv3srdzUEqgCBsACdpoDBDGRo7zQAwLiAx1lcy5zb2NpYWxwb2ludC5Nb25zdGVyTGVnZW5kcw;dc_rmcid=CAQSGwDaQooLok9zP9zz-sCGA2wcbIFqkESHrOg6zRgB;eps=CIhhEAEYXzIDioIBOg6AwICAgIAIgMCAgICgKEi9_cE6WNOf6_W7qIcD;met=1;ecn1=1;etm1=0;eid1=210014;errorcode=%5BREASON%5D]]></Tracking></TrackingEvents></Verification><Verification vendor=\"Moat\"><ViewableImpression id=\"0\"><![CDATA[https://px.moatads.com/pixel.gif?moatPartnerId=0&moatPartnerKey=0&moatNode=true]]></ViewableImpression></Verification></AdVerifications></Extension></Extensions></InLine></Ad></VAST>",
                    "adomain": [
                        "foodpanda.ph"
                    ],
                    "iurl": "",
                    "cid": "0",
                    "crid": "34410_580999522",
                    "attr": [
                        15,
                        16
                    ],
                    "w": 640,
                    "h": 360,
                    "burl": "https://t.appads.in/api/track?crid=580999522&pt_fp=0.01&apid=bf5d9c029400934802f4c4f119dabc0f&lt=0&pt_bp=1.5000000000000002&oid=34410&isrtb=1&ht=320&tstp=1721026660363&tid=9af5bda0-eef4-41cb-9142-4f11bbb07281&chid=7977&wopid=a3690642-2b90-4384-959a-a66bd9d97d51&eap=5.0&cntry=philippines&tkn=d33d0a27a22ec98386807873ad0595ce&exdi=PM-WJNU-0659&bundle=es.socialpoint.MonsterLegends&wot=4&wt=480&did=0fa94627-9b47-4a43-b99f-603c141b6a8d&ap=${AUCTION_PRICE}&aid=${AUCTION_ID}&event=104&",
                    "lurl": "https://tl.appads.in/api/bidloss?crid=580999522&pt_fp=0.01&apid=bf5d9c029400934802f4c4f119dabc0f&lt=0&pt_bp=1.5000000000000002&oid=34410&isrtb=1&ht=320&tstp=1721026660363&tid=9af5bda0-eef4-41cb-9142-4f11bbb07281&chid=7977&wopid=a3690642-2b90-4384-959a-a66bd9d97d51&eap=5.0&cntry=philippines&tkn=d33d0a27a22ec98386807873ad0595ce&exdi=PM-WJNU-0659&bundle=es.socialpoint.MonsterLegends&wot=4&wt=480&did=0fa94627-9b47-4a43-b99f-603c141b6a8d&ap=${AUCTION_PRICE}&aid=${AUCTION_ID}&event=4013&blr=${AUCTION_LOSS}&mbtw=${MIN_BID_TO_WIN}&",
                    "dur": 15,
                    "mtype": 2,
                    "ext": {}
                }
            ],
            "seat": "603"
        }
    ],
    "bidid": "9af5bda0-eef4-41cb-9142-4f121rwsagf7281",
    "cur": "USD",
    "customdata": ""
}
```

***

### Banner/Interstitial RTB Request

```json
{
   "app": {
      "bundle": "302000101",
      "cat": [
         "IAB1"
      ],
      "domain": "itunes.apple.com",
      "id": "130000001",
      "name": "Demo_Adspace_Placement_320x50",
      "publisher": {
         "id": "1001000001",
         "name": "Demo"
      }
   },
   "at": 2,
   "bcat": [
      "IAB17-18",
      "IAB7-42",
      "IAB23",
      "IAB7-28",
      "IAB26",
      "IAB25",
      "IAB9-9",
      "IAB24"
   ],
   "device": {
      "connectiontype": 0,
      "devicetype": 1,
      "dnt": 0,
      "ifa": "F585B1EF-D543-4F9C-A39F-A204BD9C1E33",
      "didsha1": "03791cf87e352da6434e4d964f54f0f64db933aa",
      "didmd5": "68b329da9893e34099c7d8ad5cb9c940",
      "dpisha1": "bfc523f83fa54a19e7b2d8bdf8acd687a09fba09",
      "dpimd5": "223632c428784fecaaa3e2a6aaaf6d8e",
      "geo": {
         "city": "Shenzhen",
         "country": "HKG",
         "lat": 22.319147,
         "lon": 114.22968,
         "metro": "0",
         "region": "30",
         "type": 3,
         "zip": "518019"
      },
      "ip": "210.6.191.180",
      "js": 1,
      "make": "Apple",
      "model": "iPhone",
      "os": "iOS",
      "osv": "7.1",
      "ua": "Mozilla\/5.0 (iPhone; CPU iPhone OS 7_1_2 like Mac OS X) AppleWebKit\/537.51.2
      (KHTML, like Gecko) Mobile\/11D257"
   },
   "id": "BqzFJc1Ze7",
   "imp": [
      {
         "banner": {
            "api": [
               3,
               5
            ],
            "h": 50,
            "mimes": [
               "application\/javascript",
               "text\/javascript"
            ],
            "btype": [
               1,
               2
            ],
            "pos": 0,
            "w": 300
         },
         "displaymanager": "SOMA",
         "displaymanagerver": "adtag2210s",
         "id": "1",
         "instl": 1,
         "secure": 0
      }
   ],
   "regs": {
      "coppa": 0
   },
   "user": {
      "id": "0088ba87-b96f-483d-85e3-36723ad6c60d"
   }
}
```

***

### Banner/Interstitial RTB Response

```json
{
   "id": "BqzFJc1Ze7",
   "seatbid": [
      {
         "bid": [
            {
               "id": "c2bb9fd2-fa7e-4c11-88d4-642b8d28bf69",
               "impid": "1",
               "price": 1,
               "adid": “7709",
               "nurl": "https://sg-vdo.pokkt.com/api/redirect?
country=hong+kong&app_version=&device_model=iPhone&categoryIab=IAB1&city=central+dist
rict&app_bundle_name=Demo_Adspace_Placement_320x50&latitude=22.319147&screen=&ski
p=0&language=&device_type=&creative_id=11398&mac_address=&appId=&sdk_version=&adv
_id=473&state=&carrier_name=Hong+Kong+Broadband+Network+Ltd&brand=Apple&campaign
_id=6062&opt_userid=0088ba87-
b96f-483d-85e3-36723ad6c60d×tamp=1480580919768&longitude=114.22968&device_id=
&connection_type=UNKNOWN&is_rtb=1&appName=swaraj+test+app&ip=210.6.191.180&os_ve
rsion=7.1&advertisingID=F585B1EF-D543-4F9C-A39FA204BD9C1E33&
vc=0.0&offer_id=7709&ad_id=7709&user_id=0&track_id=19710fd1-ff16-4795-
b37f-40e03d2136c4&marketing_name=iPhone&device=ios&&event=41&auction_price=$
{AUCTION_PRICE}",
"adm": "\n <span class="hljs-doctype"><!DOCTYPE html></span>\r\n<span class="hljs-tag"><<span class="hljs-title">html</span> <span class="hljs-attribute">lang</span>=<span class="hljs-value">\"en\"</span>></span>\r\n \t<span class="hljs-tag"><<span class="hljs-title">head</span>></span>\r\n\t <span class="hljs-tag"><<span class="hljs-title">meta</span>
<span class="hljs-attribute">charset</span>=<span class="hljs-value">\"utf-8\"</span>></span>\r\n\t <span class="hljs-tag"><<span class="hljs-title">meta</span> <span class="hljs-attribute">http-equiv</span>=<span class="hljs-value">\"X-UA-Compatible\"</span> <span class="hljs-attribute">content</span>=<span class="hljs-value">\"IE=edge\"</span>></span>\r\n\t
<span class="hljs-tag"><<span class="hljs-title">meta</span> <span class="hljs-attribute">name</span>=<span class="hljs-value">\"viewport\"</span> <span class="hljs-attribute">content</span>=<span class="hljs-value">\"width=device-width,</span> <span class="hljs-attribute">initial-scale</span>=<span class="hljs-value">1.0\"</span>></span>\r\n\t
<span class="hljs-tag"><<span class="hljs-title">title</span>></span>Rexona<span class="hljs-tag"></<span class="hljs-title">title</span>></span>\r\n\t <span class="hljs-tag"><<span class="hljs-title">link</span> <span class="hljs-attribute">href</span>=<span class="hljs-value">\"https:</span>//<span class="hljs-attribute">pokktvideos.s3.amazonaws.com</span>/<span class="hljs-attribute">survey</span>/<span class="hljs-attribute">css</span>/
<span class="hljs-attribute">rexona_normalize.css</span>\" <span class="hljs-attribute">rel</span>=<span class="hljs-value">\"stylesheet\"</span>></span>\r\n\t <span class="hljs-tag"><<span class="hljs-title">link</span> <span class="hljs-attribute">href</span>=<span class="hljs-value">\"https:</span>//
<span class="hljs-attribute">pokktvideos.s3.amazonaws.com</span>/<span class="hljs-attribute">survey</span>/<span class="hljs-attribute">css</span>/<span class="hljs-attribute">rexona_style.css</span>\" <span class="hljs-attribute">rel</span>=<span class="hljs-value">\"stylesheet\"</span>></span>\r\n\t <span class="hljs-tag"><<span class="hljs-title">script</span>
<span class="hljs-attribute">src</span>=<span class="hljs-value">\"https:</span>//<span class="hljs-attribute">pokktvideos.s3.amazonaws.com</span>/<span class="hljs-attribute">survey</span>/<span class="hljs-attribute">js</span>/<span class="hljs-attribute">rexona_jquery-1.11.2.min.js</span>\"></span><span class="handlebars"><span class="xml"><span class="hljs-tag"></
<span class="hljs-attribute">script</span>></span>\r\n\t <span class="hljs-tag"><<span class="hljs-title">script</span> <span class="hljs-attribute">src</span>=<span class="hljs-value">\"https:</span>//<span class="hljs-attribute">pokktvideos.s3.amazonaws.com</span>/<span class="hljs-attribute">survey</span>/<span class="hljs-attribute">js</span>/<span class="hljs-attribute">rexona_jquerymigrate-</span>
<span class="hljs-attribute">1.2.1.min.js</span>\"></span><span class="undefined"></span></span></span><span class="hljs-tag"></<span class="hljs-title">script</span>></span>\r\n\t <span class="hljs-tag"><<span class="hljs-title">script</span> <span class="hljs-attribute">src</span>=<span class="hljs-value">\"https:</span>//<span class="hljs-attribute">cdnjs.cloudflare.com</span>/<span class="hljs-attribute">ajax</span>/<span class="hljs-attribute">libs</span>/<span class="hljs-attribute">gsap</span>/
<span class="hljs-attribute">1.18.0</span>/<span class="hljs-attribute">plugins</span>/<span class="hljs-attribute">CSSPlugin.min.js</span>\"></span><span class="undefined"></span><span class="hljs-tag"></<span class="hljs-title">script</span>></span>\r\n\t\t<span class="hljs-tag"><<span class="hljs-title">script</span> <span class="hljs-attribute">src</span>=<span class="hljs-value">\"https:</span>//<span class="hljs-attribute">cdnjs.cloudflare.com</span>/<span class="hljs-attribute">ajax</span>/
<span class="hljs-attribute">libs</span>/<span class="hljs-attribute">gsap</span>/<span class="hljs-attribute">1.18.0</span>/<span class="hljs-attribute">easing</span>/<span class="hljs-attribute">EasePack.min.js</span>\"></span><span class="undefined"></span><span class="hljs-tag"></<span class="hljs-title">script</span>></span>\r\n\t\t<span class="hljs-tag"><<span class="hljs-title">script</span> <span class="hljs-attribute">src</span>=<span class="hljs-value">\"https:</span>//
<span class="hljs-attribute">cdnjs.cloudflare.com</span>/<span class="hljs-attribute">ajax</span>/<span class="hljs-attribute">libs</span>/<span class="hljs-attribute">gsap</span>/<span class="hljs-attribute">1.18.0</span>/<span class="hljs-attribute">TweenLite.min.js</span>\"></span><span class="undefined"></span><span class="hljs-tag"></<span class="hljs-title">script</span>></span>\r\n\t\t<span class="hljs-tag"><<span class="hljs-title">script</span> <span class="hljs-attribute">src</span>=<span class="hljs-value">\"https:</span>//
<span class="hljs-attribute">cdnjs.cloudflare.com</span>/<span class="hljs-attribute">ajax</span>/<span class="hljs-attribute">libs</span>/<span class="hljs-attribute">gsap</span>/<span class="hljs-attribute">1.18.0</span>/<span class="hljs-attribute">TweenMax.min.js</span>\"></span><span class="undefined"></span><span class="hljs-tag"></<span class="hljs-title">script</span>></span>\r\n\t\t<span class="hljs-tag"><<span class="hljs-title">script</span>
<span class="hljs-attribute">src</span>=<span class="hljs-value">\"https:</span>//<span class="hljs-attribute">pokktvideos.s3.amazonaws.com</span>/<span class="hljs-attribute">survey</span>/<span class="hljs-attribute">js</span>/<span class="hljs-attribute">rexona_functions.js</span>\"></span><span class="handlebars"><span class="xml"><span class="hljs-tag"></
<span class="hljs-attribute">script</span>></span>\r\n\t\t<span class="hljs-tag"><<span class="hljs-title">script</span> <span class="hljs-attribute">type</span>=<span class="hljs-value">\"text</span>/<span class="hljs-attribute">javascript</span>\"></span><span class="undefined">\r\n\t\t\tvar timestamp = new Date().getTime();
\r\n\t\t\tvar clickTag = 'https://bs.serving-sys.com/BurstingPipe/adServer.bs?
cn=tf&c=20&mc=click&pli=19069556&PluID=0&ord='+ timestamp;\r\n\t\t</span></span></span><span class="hljs-tag"></<span class="hljs-title">script</span>></span>\r\n \t<span class="hljs-tag"></
<span class="hljs-attribute">head</span>></span>\r\n \t<span class="hljs-tag"><<span class="hljs-title">body</span>></span>\r\n \t\t\r\n \t\t<span class="hljs-tag"><<span class="hljs-title">div</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">\"scene\"</span> <span class="hljs-attribute">id</span>=<span class="hljs-value">\"scene-1\"</span>></span>\r\n \t\t\t<span class="hljs-tag"><<span class="hljs-title">div</span>
<span class="hljs-attribute">class</span>=<span class="hljs-value">\"scene-1-top\"</span> <span class="hljs-attribute">id</span>=<span class="hljs-value">\"scene-1-top\"</span>></span>\r\n \t\t\t\t<span class="hljs-tag"><<span class="hljs-title">div</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">\"table\"</span>></span>\r\n \t\t\t\t\t<span class="hljs-tag"><<span class="hljs-title">div</span>
<span class="hljs-attribute">class</span>=<span class="hljs-value">\"table-row\"</span>></span>\r\n \t\t\t\t\t\t<span class="hljs-tag"><<span class="hljs-title">div</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">\"table-cell\"</span>></span>\r\n \t\t\t\t\t\t\t<span class="hljs-tag"><<span class="hljs-title">img</span> <span class="hljs-attribute">id</span>=<span class="hljs-value">\"main-copy-1\"</span>
<span class="hljs-attribute">src</span>=<span class="hljs-value">\"https:</span>//<span class="hljs-attribute">pokktvideos.s3.amazonaws.com</span>/<span class="hljs-attribute">survey</span>/<span class="hljs-attribute">img</span>/<span class="hljs-attribute">rexona_main-copy.png</span>\" /></span>\r\n
\t\t\t\t\t\t\t<span class="hljs-comment"><!-- <a href=\"\" id=\"btn-main\"><img src=\"https://pokktvideos.s3.amazonaws.com/
survey/img/rexona_btn-main.png\" /></a> --></span>\r\n \t\t\t\t\t\t<span class="hljs-tag"></<span class="hljs-title">div</span>></span>\r\n \t\t\t\t\t<span class="hljs-tag"></<span class="hljs-title">div</span>></span>\r\n \t\t\t\t<span class="hljs-tag"></
<span class="hljs-attribute">div</span>></span>\r\n \t\t\t<span class="hljs-tag"></<span class="hljs-title">div</span>></span>\r\n \t\t\t<span class="hljs-tag"><<span class="hljs-title">div</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">\"scene-1-bottom\"</span> <span class="hljs-attribute">id</span>=<span class="hljs-value">\"scene-1-bottom\"</span>></span>\r\n \t\t\t\t<span class="hljs-tag"><<span class="hljs-title">img</span>
<span class="hljs-attribute">id</span>=<span class="hljs-value">\"rexona-bottle\"</span> <span class="hljs-attribute">src</span>=<span class="hljs-value">\"https:</span>//<span class="hljs-attribute">pokktvideos.s3.amazonaws.com</span>/<span class="hljs-attribute">survey</span>/<span class="hljs-attribute">img</span>/<span class="hljs-attribute">rexonabottle.</span>
<span class="hljs-attribute">png</span>\" /></span>\r\n \t\t\t\t<span class="hljs-tag"><<span class="hljs-title">img</span> <span class="hljs-attribute">id</span>=<span class="hljs-value">\"main-copy-2\"</span> <span class="hljs-attribute">src</span>=<span class="hljs-value">\"https:</span>//<span class="hljs-attribute">pokktvideos.s3.amazonaws.com</span>/
<span class="hljs-attribute">survey</span>/<span class="hljs-attribute">img</span>/<span class="hljs-attribute">rexona_main-copy-2.png</span>\" /></span>\r\n \t\t\t<span class="hljs-tag"></<span class="hljs-title">div</span>></span>\r\n \t\t<span class="hljs-tag"></<span class="hljs-title">div</span>></span> <span class="hljs-comment"><!--#scene-1--></span>\r\n\r\n
\t\t<span class="hljs-tag"><<span class="hljs-title">div</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">\"scene\"</span> <span class="hljs-attribute">id</span>=<span class="hljs-value">\"scene-2\"</span> <span class="hljs-attribute">style</span>=<span class="hljs-value">\"display:none\"</span>></span>\r\n \t\t\t<span class="hljs-tag"><<span class="hljs-title">div</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">\"time-barbox\"</span>></span>\
r\n \t\t\t\t<span class="hljs-tag"><<span class="hljs-title">div</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">\"time-bar-body\"</span>></span>\r\n\t \t\t\t\t<span class="hljs-tag"><<span class="hljs-title">div</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">\"time-bar\"</span>></span><span class="hljs-tag"><<span class="hljs-title">img</span>
<span class="hljs-attribute">src</span>=<span class="hljs-value">\"https:</span>//<span class="hljs-attribute">pokktvideos.s3.amazonaws.com</span>/<span class="hljs-attribute">survey</span>/<span class="hljs-attribute">img</span>/<span class="hljs-attribute">rexona_time-text.png</span>\"></span><span class="hljs-tag"></<span class="hljs-title">div</span>></span>\r\n\t
\t\t\t\t<span class="hljs-tag"><<span class="hljs-title">div</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">\"time-clock\"</span>></span>\r\n\t \t\t\t\t\t<span class="hljs-tag"><<span class="hljs-title">img</span> <span class="hljs-attribute">src</span>=<span class="hljs-value">\"https:</span>//<span class="hljs-attribute">pokktvideos.s3.amazonaws.com</span>/
<span class="hljs-attribute">survey</span>/<span class="hljs-attribute">img</span>/<span class="hljs-attribute">rexona_clock.png</span>\"></span>\r\n\t \t\t\t\t\t<span class="hljs-tag"><<span class="hljs-title">span</span> <span class="hljs-attribute">id</span>=<span class="hljs-value">\"time-number\"</span>></span>9.99<span class="hljs-tag"></<span class="hljs-title">span</span>></span>\r\n\t \t\t\t\t<span class="hljs-tag"></
<span class="hljs-attribute">div</span>></span>\r\n \t\t\t\t<span class="hljs-tag"></<span class="hljs-title">div</span>></span>\r\n \t\t\t<span class="hljs-tag"></<span class="hljs-title">div</span>></span>\r\n \t\t\t<span class="hljs-tag"><<span class="hljs-title">img</span> <span class="hljs-attribute">id</span>=<span class="hljs-value">\"rexona-bottle-2\"</span> <span class="hljs-attribute">src</span>=<span class="hljs-value">\"https:</span>//
<span class="hljs-attribute">pokktvideos.s3.amazonaws.com</span>/<span class="hljs-attribute">survey</span>/<span class="hljs-attribute">img</span>/<span class="hljs-attribute">rexona-bottle-2.png</span>\" /></span>\r\n \t\t\t<span class="hljs-tag"><<span class="hljs-title">div</span>
<span class="hljs-attribute">class</span>=<span class="hljs-value">\"progress-bar\"</span> <span class="hljs-attribute">style</span>=<span class="hljs-value">\"display:none\"</span>></span>\r\n \t\t\t\t<span class="hljs-tag"><<span class="hljs-title">div</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">\"progress-bar-box\"</span>></span>\r\n
\t\t\t\t\t<span class="hljs-tag"><<span class="hljs-title">div</span> <span class="hljs-attribute">id</span>=<span class="hljs-value">\"progress-bar-img\"</span>></span><span class="hljs-tag"></<span class="hljs-title">div</span>></span>\r\n \t\t\t\t<span class="hljs-tag"></<span class="hljs-title">div</span>></span>\r\n \t\t\t<span class="hljs-tag"></<span class="hljs-title">div</span>></span>\r\n\r\n \t\t\t<span class="hljs-tag"><<span class="hljs-title">div</span>
<span class="hljs-attribute">id</span>=<span class="hljs-value">\"bacteria-box\"</span>></span>\r\n\t \t\t\t<span class="hljs-tag"><<span class="hljs-title">img</span> <span class="hljs-attribute">id</span>=<span class="hljs-value">\"bacteria-1\"</span> <span class="hljs-attribute">rel</span>=<span class="hljs-value">\"1\"</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">\"bacteria\"</span> <span class="hljs-attribute">src</span>=<span class="hljs-value">\"https:</span>//
<span class="hljs-attribute">pokktvideos.s3.amazonaws.com</span>/<span class="hljs-attribute">survey</span>/<span class="hljs-attribute">img</span>/<span class="hljs-attribute">rexona_bacteria-1.png</span>\"></span>\r\n\t \t\t\t<span class="hljs-tag"><<span class="hljs-title">img</span>
<span class="hljs-attribute">id</span>=<span class="hljs-value">\"bacteria-2\"</span> <span class="hljs-attribute">rel</span>=<span class="hljs-value">\"2\"</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">\"bacteria\"</span> <span class="hljs-attribute">src</span>=<span class="hljs-value">\"https:</span>//<span class="hljs-attribute">pokktvideos.s3.amazonaws.com</span>/<span class="hljs-attribute">survey</span>/
<span class="hljs-attribute">img</span>/<span class="hljs-attribute">rexona_bacteria-2.png</span>\"></span>\r\n\t \t\t\t<span class="hljs-tag"><<span class="hljs-title">img</span> <span class="hljs-attribute">id</span>=<span class="hljs-value">\"bacteria-3\"</span> <span class="hljs-attribute">rel</span>=<span class="hljs-value">\"3\"</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">\"bacteria\"</span>
<span class="hljs-attribute">src</span>=<span class="hljs-value">\"https:</span>//<span class="hljs-attribute">pokktvideos.s3.amazonaws.com</span>/<span class="hljs-attribute">survey</span>/<span class="hljs-attribute">img</span>/<span class="hljs-attribute">rexona_bacteria-3.png</span>\"></span>\r\n\t \t\t\t<span class="hljs-tag"><<span class="hljs-title">img</span>
<span class="hljs-attribute">id</span>=<span class="hljs-value">\"bacteria-4\"</span> <span class="hljs-attribute">rel</span>=<span class="hljs-value">\"4\"</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">\"bacteria\"</span> <span class="hljs-attribute">src</span>=<span class="hljs-value">\"https:</span>//<span class="hljs-attribute">pokktvideos.s3.amazonaws.com</span>/<span class="hljs-attribute">survey</span>/
<span class="hljs-attribute">img</span>/<span class="hljs-attribute">rexona_bacteria-4.png</span>\"></span>\r\n\t \t\t\t<span class="hljs-tag"><<span class="hljs-title">img</span> <span class="hljs-attribute">id</span>=<span class="hljs-value">\"bacteria-5\"</span> <span class="hljs-attribute">rel</span>=<span class="hljs-value">\"5\"</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">\"bacteria\"</span>
<span class="hljs-attribute">src</span>=<span class="hljs-value">\"https:</span>//<span class="hljs-attribute">pokktvideos.s3.amazonaws.com</span>/<span class="hljs-attribute">survey</span>/<span class="hljs-attribute">img</span>/<span class="hljs-attribute">rexona_bacteria-5.png</span>\"></span>\r\n\t \t\t\t<span class="hljs-tag"><<span class="hljs-title">img</span>
<span class="hljs-attribute">id</span>=<span class="hljs-value">\"bacteria-6\"</span> <span class="hljs-attribute">rel</span>=<span class="hljs-value">\"6\"</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">\"bacteria\"</span> <span class="hljs-attribute">src</span>=<span class="hljs-value">\"https:</span>//<span class="hljs-attribute">pokktvideos.s3.amazonaws.com</span>/<span class="hljs-attribute">survey</span>/
<span class="hljs-attribute">img</span>/<span class="hljs-attribute">rexona_bacteria-6.png</span>\"></span>\r\n\t \t\t\t<span class="hljs-tag"><<span class="hljs-title">img</span> <span class="hljs-attribute">id</span>=<span class="hljs-value">\"bacteria-7\"</span> <span class="hljs-attribute">rel</span>=<span class="hljs-value">\"7\"</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">\"bacteria\"</span>
<span class="hljs-attribute">src</span>=<span class="hljs-value">\"https:</span>//<span class="hljs-attribute">pokktvideos.s3.amazonaws.com</span>/<span class="hljs-attribute">survey</span>/<span class="hljs-attribute">img</span>/<span class="hljs-attribute">rexona_bacteria-7.png</span>\"></span>\r\n\t \t\t\t<span class="hljs-tag"><<span class="hljs-title">img</span>
<span class="hljs-attribute">id</span>=<span class="hljs-value">\"bacteria-8\"</span> <span class="hljs-attribute">rel</span>=<span class="hljs-value">\"8\"</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">\"bacteria\"</span> <span class="hljs-attribute">src</span>=<span class="hljs-value">\"https:</span>//<span class="hljs-attribute">pokktvideos.s3.amazonaws.com</span>/<span class="hljs-attribute">survey</span>/
<span class="hljs-attribute">img</span>/<span class="hljs-attribute">rexona_bacteria-8.png</span>\"></span>\r\n\t \t\t\t<span class="hljs-tag"><<span class="hljs-title">img</span> <span class="hljs-attribute">id</span>=<span class="hljs-value">\"bacteria-9\"</span> <span class="hljs-attribute">rel</span>=<span class="hljs-value">\"9\"</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">\"bacteria\"</span>
<span class="hljs-attribute">src</span>=<span class="hljs-value">\"https:</span>//<span class="hljs-attribute">pokktvideos.s3.amazonaws.com</span>/<span class="hljs-attribute">survey</span>/<span class="hljs-attribute">img</span>/<span class="hljs-attribute">rexona_bacteria-9.png</span>\"></span>\r\n\t \t\t\t<span class="hljs-tag"><<span class="hljs-title">img</span>
<span class="hljs-attribute">id</span>=<span class="hljs-value">\"bacteria-10\"</span> <span class="hljs-attribute">rel</span>=<span class="hljs-value">\"10\"</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">\"bacteria\"</span> <span class="hljs-attribute">src</span>=<span class="hljs-value">\"https:</span>//<span class="hljs-attribute">pokktvideos.s3.amazonaws.com</span>/
<span class="hljs-attribute">survey</span>/<span class="hljs-attribute">img</span>/<span class="hljs-attribute">rexona_bacteria-10.png</span>\"></span>\r\n \t\t\t<span class="hljs-tag"></<span class="hljs-title">div</span>></span>\r\n\r\n \t\t\t<span class="hljs-tag"><<span class="hljs-title">div</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">\"spray\"</span>
<span class="hljs-attribute">id</span>=<span class="hljs-value">\"spray\"</span>></span>\r\n \t\t\t\t<span class="hljs-tag"><<span class="hljs-title">img</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">\"rexona-bottle-3\"</span> <span class="hljs-attribute">src</span>=<span class="hljs-value">\"https:</span>//
<span class="hljs-attribute">pokktvideos.s3.amazonaws.com</span>/<span class="hljs-attribute">survey</span>/<span class="hljs-attribute">img</span>/<span class="hljs-attribute">rexona-bottle-3.png</span>\"></span>\r\n \t\t\t\t<span class="hljs-tag"><<span class="hljs-title">img</span> <span class="hljs-attribute">id</span>=<span class="hljs-value">\"sprayanim\"</span>
<span class="hljs-attribute">class</span>=<span class="hljs-value">\"spray-anim\"</span> <span class="hljs-attribute">src</span>=<span class="hljs-value">\"https:</span>//<span class="hljs-attribute">pokktvideos.s3.amazonaws.com</span>/<span class="hljs-attribute">survey</span>/<span class="hljs-attribute">img</span>/
<span class="hljs-attribute">rexona_spray-1.png</span>\"></span>\r\n \t\t\t<span class="hljs-tag"></<span class="hljs-title">div</span>></span>\r\n\r\n \t\t\t<span class="hljs-tag"><<span class="hljs-title">div</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">\"how-to-play\"</span> <span class="hljs-attribute">id</span>=<span class="hljs-value">\"how-to-play\"</span>></span>\r\n
\t\t\t\t<span class="hljs-tag"><<span class="hljs-title">div</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">\"how-to-play-body\"</span>></span>\r\n\t \t\t\t\t<span class="hljs-tag"><<span class="hljs-title">img</span> <span class="hljs-attribute">src</span>=<span class="hljs-value">\"https:</span>//
<span class="hljs-attribute">pokktvideos.s3.amazonaws.com</span>/<span class="hljs-attribute">survey</span>/<span class="hljs-attribute">img</span>/<span class="hljs-attribute">rexona_how-to-play.png</span>\"></span>\r\n\t \t\t\t\t<span class="hljs-tag"><<span class="hljs-title">div</span>
<span class="hljs-attribute">class</span>=<span class="hljs-value">\"close-how-to-play\"</span>></span>\r\n\t \t\t\t\t\t<span class="hljs-tag"><<span class="hljs-title">a</span> <span class="hljs-attribute">href</span>=<span class="hljs-value">\"#\"</span> <span class="hljs-attribute">onclick</span>=<span class="hljs-value">\"sendevent(8);</span> <span class="hljs-attribute">return</span>
<span class="hljs-attribute">closeHowToPlay</span>()\"></span><span class="hljs-tag"><<span class="hljs-title">img</span> <span class="hljs-attribute">src</span>=<span class="hljs-value">\"https:</span>//<span class="hljs-attribute">pokktvideos.s3.amazonaws.com</span>/<span class="hljs-attribute">survey</span>/<span class="hljs-attribute">img</span>/<span class="hljs-attribute">rexona_btnmain.</span>
<span class="hljs-attribute">png</span>\"></span><span class="hljs-tag"></<span class="hljs-title">a</span>></span>\r\n\t \t\t\t\t<span class="hljs-tag"></<span class="hljs-title">div</span>></span>\r\n \t\t\t\t<span class="hljs-tag"></<span class="hljs-title">div</span>></span>\r\n \t\t\t<span class="hljs-tag"></<span class="hljs-title">div</span>></span>\r\n\r\n \t\t<span class="hljs-tag"></<span class="hljs-title">div</span>></span> <span class="hljs-comment"><!-- /#scene-2 --
>\r\n\r\n \t\t<div id=\"scene-2-replay\">\r\n \t\t\t<div class=\"btn-replay-box\">\r\n \t\t\t\t<a
href=\"#\" id=\"btn-replay\" onclick=\"sendevent(8)\"><img src=\"https://
pokktvideos.s3.amazonaws.com/survey/img/rexona_btn-replay.png\" /></a>\r\n \t\t\t</div>\r\n
\t\t</div>\r\n\r\n \t\t<div class=\"scene\" id=\"scene-3\" style=\"display:none\">\r\n \t\t\t<img
class=\"bottle-4\" src=\"https://pokktvideos.s3.amazonaws.com/survey/img/rexona-
bottle-4.png\" />\r\n \t\t\t<div class=\"spray-2\" id=\"spray3\">\r\n \t\t\t\t<img id=\"spray-2\"
src=\"https://pokktvideos.s3.amazonaws.com/survey/img/rexona_spray-2.png\" />\r\n \t\t\t</
div>\r\n \t\t\t<div class=\"scene3-copy\" id=\"scene3-copy\">\r\n \t\t\t\t<img src=\"https://
pokktvideos.s3.amazonaws.com/survey/img/rexona_copy-3.png\" />\r\n \t\t\t</div>\r\n \t\t\t<div
class=\"scene3-time\" id=\"scene3-time\">4.35</div>\r\n \t\t\t<div class=\"scene3-copy-2\"
id=\"scene3-copy-2\">\r\n \t\t\t\t<img src=\"https://pokktvideos.s3.amazonaws.com/survey/img/
rexona_copy-3-2.png\" />\r\n \t\t\t</div>\r\n \t\t</div>\r\n\r\n \t\t<div class=\"scene\" id=\"scene-4\"
style=\"visibility:hidden\">\r\n \t\t<!-- <div class=\"scene\" id=\"scene-4\"> --></span>\r\n \t\t\t<span class="hljs-tag"><<span class="hljs-title">div</span>
<span class="hljs-attribute">class</span>=<span class="hljs-value">\"scene-1-top\"</span> <span class="hljs-attribute">id</span>=<span class="hljs-value">\"scene-4-top\"</span>></span>\r\n \t\t\t\t<span class="hljs-tag"><<span class="hljs-title">div</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">\"table\"</span>></span>\r\n \t\t\t\t\t<span class="hljs-tag"><<span class="hljs-title">div</span>
<span class="hljs-attribute">class</span>=<span class="hljs-value">\"table-row\"</span>></span>\r\n \t\t\t\t\t\t<span class="hljs-tag"><<span class="hljs-title">div</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">\"table-cell\"</span>></span>\r\n \t\t\t\t\t\t\t<span class="hljs-tag"><<span class="hljs-title">img</span> <span class="hljs-attribute">id</span>=<span class="hljs-value">\"copy-4\"</span>
<span class="hljs-attribute">src</span>=<span class="hljs-value">\"https:</span>//<span class="hljs-attribute">pokktvideos.s3.amazonaws.com</span>/<span class="hljs-attribute">survey</span>/<span class="hljs-attribute">img</span>/<span class="hljs-attribute">rexona_copy-4.png</span>\" /></span>\r\n \t\t\t\t\t\t<span class="hljs-tag"></
<span class="hljs-attribute">div</span>></span>\r\n \t\t\t\t\t<span class="hljs-tag"></<span class="hljs-title">div</span>></span>\r\n \t\t\t\t<span class="hljs-tag"></<span class="hljs-title">div</span>></span>\r\n \t\t\t<span class="hljs-tag"></<span class="hljs-title">div</span>></span>\r\n \t\t\t<span class="hljs-tag"><<span class="hljs-title">div</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">\"scene-1-bottom\"</span>
<span class="hljs-attribute">id</span>=<span class="hljs-value">\"scene-4-bottom\"</span>></span>\r\n \t\t\t\t<span class="hljs-tag"><<span class="hljs-title">div</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">\"rexona-bottle-5\"</span>></span>\r\n \t\t\t\t\t<span class="hljs-tag"><<span class="hljs-title">img</span> <span class="hljs-attribute">id</span>=<span class="hljs-value">\"rexonabottle-</span>
<span class="hljs-attribute">5</span>\" <span class="hljs-attribute">src</span>=<span class="hljs-value">\"https:</span>//<span class="hljs-attribute">pokktvideos.s3.amazonaws.com</span>/<span class="hljs-attribute">survey</span>/<span class="hljs-attribute">img</span>/<span class="hljs-attribute">rexona-bottle-5.png</span>\" /></span>\r\n
\t\t\t\t<span class="hljs-tag"></<span class="hljs-title">div</span>></span>\r\n \t\t\t\t<span class="hljs-tag"><<span class="hljs-title">div</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">\"scene4-button\"</span>></span>\r\n \t\t\t\t\t<span class="hljs-tag"><<span class="hljs-title">a</span> <span class="hljs-attribute">href</span>=<span class="hljs-value">\"javascript:void(0);\"</span>
<span class="hljs-attribute">onclick</span>=<span class="hljs-value">\"sendevent(8);</span> <span class="hljs-attribute">window.open</span>(<span class="hljs-attribute">clickTag</span>);\" <span class="hljs-attribute">class</span>=<span class="hljs-value">\"btn-more-detail\"</span>
<span class="hljs-attribute">target</span>=<span class="hljs-value">\"_blank\"</span>></span><span class="hljs-tag"><<span class="hljs-title">img</span> <span class="hljs-attribute">src</span>=<span class="hljs-value">\"https:</span>//<span class="hljs-attribute">pokktvideos.s3.amazonaws.com</span>/<span class="hljs-attribute">survey</span>/<span class="hljs-attribute">img</span>/
<span class="hljs-attribute">rexona_btn-4.png</span>\" /></span><span class="hljs-tag"></<span class="hljs-title">a</span>></span>\r\n \t\t\t\t<span class="hljs-tag"></<span class="hljs-title">div</span>></span>\r\n \t\t\t\t<span class="hljs-tag"><<span class="hljs-title">div</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">\"scene4-button\"</span>></span>\r\n \t\t\t\t\t<span class="hljs-tag"><<span class="hljs-title">a</span>
<span class="hljs-attribute">href</span>=<span class="hljs-value">\"#\"</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">\"btn-more-detail\"</span> <span class="hljs-attribute">onclick</span>=<span class="hljs-value">\"sendevent(8);</span> <span class="hljs-attribute">return</span> <span class="hljs-attribute">playAgain</span>()\"></span><span class="hljs-tag"><<span class="hljs-title">img</span>
<span class="hljs-attribute">src</span>=<span class="hljs-value">\"https:</span>//<span class="hljs-attribute">pokktvideos.s3.amazonaws.com</span>/<span class="hljs-attribute">survey</span>/<span class="hljs-attribute">img</span>/<span class="hljs-attribute">rexona_btn-replay-2.png</span>\" /></span><span class="hljs-tag"></<span class="hljs-title">a</span>></span>\r\n
\t\t\t\t<span class="hljs-tag"></<span class="hljs-title">div</span>></span>\r\n \t\t\t<span class="hljs-tag"></<span class="hljs-title">div</span>></span>\r\n \t\t<span class="hljs-tag"></<span class="hljs-title">div</span>></span> <span class="hljs-comment"><!--#scene-4--></span>\r\n\r\n \t\t<span class="hljs-tag"><<span class="hljs-title">img</span> <span class="hljs-attribute">src</span>=<span class="hljs-value">\"https:</span>//<span class="hljs-attribute">bs.servingsys.</span>
<span class="hljs-attribute">com</span>/<span class="hljs-attribute">BurstingPipe</span>/<span class="hljs-attribute">adServer.bs</span>?
<span class="hljs-attribute">cn</span>=<span class="hljs-value">tf&c=19&mc=imp&pli=19069556&PluID=0&ord=123456&rtu=-1\"</span> <span class="hljs-attribute">style</span>=<span class="hljs-value">\"width:1px;height:</span>
<span class="hljs-attribute">1px</span>;\" /></span>\r\n\t\t\r\n\t\t<span class="hljs-tag"><<span class="hljs-title">script</span> <span class="hljs-attribute">type</span>=<span class="hljs-value">\"text</span>/<span class="hljs-attribute">javascript</span>\"></span><span class="handlebars"><span class="xml">\r\n\t\tfunction sendevent(event_id)
{ \r\n\t\t\tvar url = \"https://vdo.pokkt.com/api/VideoEventTracker?offer_id=</span><span class="hljs-expression">{{<span class="hljs-variable">offer</span>_<span class="hljs-variable">id</span>}}</span><span class="xml">
&appId=</span><span class="hljs-expression">{{<span class="hljs-variable">appId</span>}}</span><span class="xml">&app_bundle_name=</span><span class="hljs-expression">{{<span class="hljs-variable">app</span>_<span class="hljs-variable">bundle</span>_<span class="hljs-variable">name</span>}}</span><span class="xml">&sdk_version=</span><span class="hljs-expression">{{<span class="hljs-variable">sdk</span>_<span class="hljs-variable">version</span>}}</span><span class="xml">
&app_version=</span><span class="hljs-expression">{{<span class="hljs-variable">app</span>_<span class="hljs-variable">version</span>}}</span><span class="xml">&device_id=&device_model=</span><span class="hljs-expression">{{<span class="hljs-variable">device</span>_<span class="hljs-variable">model</span>}}</span><span class="xml">
&language=</span><span class="hljs-expression">{{<span class="hljs-variable">language</span>}}</span><span class="xml">&device_type=</span><span class="hljs-expression">{{<span class="hljs-variable">device</span>_<span class="hljs-variable">type</span>}}</span><span class="xml">&connection_type=</span><span class="hljs-expression">{{<span class="hljs-variable">connection</span>_<span class="hljs-variable">type</span>}}</span><span class="xml">
&track_id=</span><span class="hljs-expression">{{<span class="hljs-variable">track</span>_<span class="hljs-variable">id</span>}}</span><span class="xml">&event=\"+event_id;\r\n\t\t\tvar xhttp = new XMLHttpRequest();
\r\n\t\t\txhttp.open(\"GET\", url, true);\r\n\t\t\txhttp.send();\r\n\t\t}\r\n</span></span><span class="hljs-tag"></<span class="hljs-title">script</span>></span>\r\n \t<span class="hljs-tag"></<span class="hljs-title">body</span>></span>\r\n <span class="hljs-tag"></
<span class="hljs-attribute">html</span>></span>\n \n <span class="hljs-tag"><<span class="hljs-title">img</span> <span class="hljs-attribute">height</span>=<span class="hljs-value">\"1\"</span> <span class="hljs-attribute">width</span>=<span class="hljs-value">\"1\"</span> <span class="hljs-attribute">src</span>=<span class="hljs-value">'https://sg-vdo.pokkt.com/api/
VideoEventTracker?
country=hong+kong&app_version=&device_model=iPhone&categoryIab=IAB1&city=central+dist
rict&app_bundle_name=Demo_Adspace_Placement_320x50&latitude=22.319147&screen=&ski
p=0&language=&device_type=&creative_id=9700&mac_address=&appId=&sdk_version=&adv_i
d=473&state=&carrier_name=Hong+Kong+Broadband+Network+Ltd&brand=Apple&campaign_i
d=6062&opt_userid=0088ba87-
b96f-483d-85e3-36723ad6c60d×tamp=1478850463185&longitude=114.22968&device_id=
&connection_type=UNKNOWN&is_rtb=1&appName=swaraj+test+app&ip=210.6.191.180&os_ve
rsion=7.1&advertisingID=F585B1EF-D543-4F9C-A39FA204BD9C1E33&
vc=0.0&offer_id=7709&ad_id=&user_id=0&track_id=c2bb9fd2-
fa7e-4c11-88d4-642b8d28bf69&marketing_name=iPhone&device=ios&event=6'</span> <span class="hljs-attribute">style</span>=<span class="hljs-value">\"display:</span>
<span class="hljs-attribute">none</span>\" /></span>\n \n <span class="hljs-tag"><<span class="hljs-title">img</span> <span class="hljs-attribute">height</span>=<span class="hljs-value">\"1\"</span> <span class="hljs-attribute">width</span>=<span class="hljs-value">\"1\"</span> <span class="hljs-attribute">src</span>=<span class="hljs-value">''</span> <span class="hljs-attribute">style</span>=<span class="hljs-value">\"display:</span> <span class="hljs-attribute">none</span>\" /></span>\n \n\n
<span class="hljs-tag"><<span class="hljs-title">script</span> <span class="hljs-attribute">src</span>=<span class="hljs-value">\"https:</span>//<span class="hljs-attribute">s3-ap-southeast-1.amazonaws.com</span>/<span class="hljs-attribute">webassetz</span>/<span class="hljs-attribute">theme</span>/<span class="hljs-attribute">metro_new</span>/<span class="hljs-attribute">assets</span>/
<span class="hljs-attribute">global</span>/<span class="hljs-attribute">plugins</span>/<span class="hljs-attribute">jquery.min.js</span>\"></span><span class="undefined"></span><span class="hljs-tag"></<span class="hljs-title">script</span>></span>\n <span class="hljs-tag"><<span class="hljs-title">script</span>></span><span class="undefined">\n function fireTracker(url) {\n $.ajax({\n
url: url\n });\n }\n document.addEventListener(\"click\",function(){\n fireTracker(\"https://
sg-vdo.pokkt.com/api/redirect?
country=hong+kong&app_version=&device_model=iPhone&categoryIab=IAB1&city=central+dist
rict&app_bundle_name=Demo_Adspace_Placement_320x50&latitude=22.319147&screen=&ski
p=0&language=&device_type=&creative_id=9700&mac_address=&appId=&sdk_version=&adv_i
d=473&state=&carrier_name=Hong+Kong+Broadband+Network+Ltd&brand=Apple&campaign_i
d=6062&opt_userid=0088ba87-
b96f-483d-85e3-36723ad6c60d×tamp=1478850463190&longitude=114.22968&device_id=
&connection_type=UNKNOWN&is_rtb=1&appName=swaraj+test+app&ip=210.6.191.180&os_ve
rsion=7.1&advertisingID=F585B1EF-D543-4F9C-A39FA204BD9C1E33&
vc=0.0&offer_id=7709&ad_id=&user_id=0&track_id=c2bb9fd2-
fa7e-4c11-88d4-642b8d28bf69&marketing_name=iPhone&device=ios&&CTH=&CT=http%3A%2
F%2Fsgvdo.
pokkt.com%2Fapi%2FVideoEventTracker%3Fcountry%3Dhong%2Bkong%26app_version%
3D%26device_model%3DiPhone%26categoryIab%3DIAB1%26city%3Dcentral%2Bdistrict%26a
pp_bundle_name%3DDemo_Adspace_Placement_320x50%26latitude%3D22.319147%26scree
n%3D%26skip%3D0%26language%3D%26device_type%3D%26creative_id%3D9700%26mac_
address%3D%26appId%3D%26sdk_version%3D%26adv_id%3D473%26state%3D%26carrier_
name%3DHong%2BKong%2BBroadband%2BNetwork%2BLtd%26brand%3DApple%26campai
gn_id%3D6062%26opt_userid%3D0088ba87-
b96f-483d-85e3-36723ad6c60d%26timestamp%3D1478850463185%26longitude%3D114.2296
8%26device_id%3D%26connection_type%3DUNKNOWN%26is_rtb%3D1%26appName%3Dsw
araj%2Btest%2Bapp%26ip%3D210.6.191.180%26os_version%3D7.1%26advertisingID%3DF58
5B1EF-D543-4F9C-A39FA204BD9C1E33%
26vc%3D0.0%26offer_id%3D7709%26ad_id%3D%26user_id%3D0%26track
_id%3Dc2bb9fd2-
fa7e-4c11-88d4-642b8d28bf69%26marketing_name%3DiPhone%26device%3Dios%26event%3
D9&CT=\");\n });\n setTimeout(function () {\n fireTracker(\"https://sg-vdo.pokkt.com/api/
VideoEventTracker?
country=hong+kong&app_version=&device_model=iPhone&categoryIab=IAB1&city=central+dist
rict&app_bundle_name=Demo_Adspace_Placement_320x50&latitude=22.319147&screen=&ski
p=0&language=&device_type=&creative_id=9700&mac_address=&appId=&sdk_version=&adv_i
d=473&state=&carrier_name=Hong+Kong+Broadband+Network+Ltd&brand=Apple&campaign_i
d=6062&opt_userid=0088ba87-
b96f-483d-85e3-36723ad6c60d×tamp=1478850463190&longitude=114.22968&device_id=
&connection_type=UNKNOWN&is_rtb=1&appName=swaraj+test+app&ip=210.6.191.180&os_ve
rsion=7.1&advertisingID=F585B1EF-D543-4F9C-A39FA204BD9C1E33&
vc=0.0&offer_id=7709&ad_id=&user_id=0&track_id=c2bb9fd2-
fa7e-4c11-88d4-642b8d28bf69&marketing_name=iPhone&device=ios&event=40\");\n },
1000)\n</span><span class="hljs-tag"></<span class="hljs-title">script</span>></span>",
            "cid": "6062",
            "crid": "9700"
            }
         ]
      }
   ],
   "bidid": "c2bb9fd2-fa7e-4c11-88d4-642b8d28bf69",
   "cur": "USD",
   "customdata": ""
}
```


# API Guide


# Interstitial API

### Contents

* [1 Ad API - Integration Guide](broken://pages/UudKqbST3ohy6iqd272K)
  * [1.1 Overview](broken://pages/UudKqbST3ohy6iqd272K)
  * [1.2 Technical Details](broken://pages/UudKqbST3ohy6iqd272K)
    * [1.2.1 Request URI](broken://pages/UudKqbST3ohy6iqd272K)
  * [1.3 Name/Value Pairs Explained](broken://pages/UudKqbST3ohy6iqd272K)
  * [1.4 Error Responses](broken://pages/UudKqbST3ohy6iqd272K)
    * [1.4.1 Example Error Responses](broken://pages/UudKqbST3ohy6iqd272K)
  * [1.5 FAQS](broken://pages/UudKqbST3ohy6iqd272K)

### Ad API - Integration Guide

Last Update: 20th May, 2021

***

#### Overview

This document describes the order and flow of an interstitial ad solution between POKKT’s "Ad Platform" and a "Supply Partner". In essence, it entails the process that needs to be followed by the "Supply Partner" to integrate their services with POKKT’s demand.

#### Technical Details

**Request URI**

A GET request needs to be originated to POKKT server to initiate the ad request. The Partner herein is required to send a request to the below endpoint which in turn will respond with one or more ad meta in a JSON response.

Endpoint

<https://vdo.pokkt.com/api/AdServer>

Full Parameters

```
https://vdo.pokkt.com/api/AdServer?appId={{{app_id}}}&appName={{{pub_app_name}}}&ad_format=1&response_format=0&device_id={{{device_id}}}&advertisingID={{{aaid/idfa}}}&ip={{{ip}}}&ua={{{browser_user_agent}}}&limitedTracking={{{ad_tracking_disabled}}}&category={{{pub_app_store_category}}}&app_bundle_name={{{app_bundle_name}}}&u13={{{u13}}}&idfa_md5={{{md5_ifa}}}&idfa_sha1={{{sha1_ifa}}}&aid_md5={{{md5_aaid}}}&aid_sha1={{{sha1_aaid}}}&app_storeurl={{{pub_app_store_url}}}&age={{{age}}}&gender={{{gender}}}&latitude={{{latitude}}}&longitude={{{longitude}}}&categoryIab={{{category_iab}}}&connType={{{connection_type}}}&deviceCategory={{{device_category}}}&osName={{{os_name}}}&osVersion={{{os_version}}}&appVersion={{{app_version}}}&cacheBreaker={{{cache_breaker}}}&referral={{{referral_url}}}&swidth={{{width}}}&sheight={{{height}}}&gdpr_applicable={{{gdpr_applicable}}}&gdpr_consent={{{gdpr_consent}}}&vv={{{viewability_vendors}}}&p_sco={{Supply_Chain_Obj}}
```

Parameters Explained

| PARAM             | DESCRIPTION                                                                                                                                                                                    | MANDATORY | RECOMMENDED |
| ----------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------- | ----------- |
| appId             | Your unique App ID (available in POKKT dashboard)                                                                                                                                              | Yes       |             |
| appName           | App Name(e.g. Metal%20Gear%20Dawn)                                                                                                                                                             | Yes       |             |
| ad\_format        | Ad Format (1 - Banner, 3 - Interstitial)                                                                                                                                                       | Yes       |             |
| response\_format  | APIResponse(0 - JSON response, 2- HTMLmarkup)                                                                                                                                                  | Yes       |             |
| device\_id        | OS ID or Device ID                                                                                                                                                                             |           | Yes         |
| advertisingID     | Google Advertising ID or iOS IDFA                                                                                                                                                              | Yes       |             |
| ip                | IP address                                                                                                                                                                                     | Yes       |             |
| ua                | User Agent                                                                                                                                                                                     | Yes       |             |
| limitedTracking   | Do Not Track or DNT (e.g. 1 for tracking disabled, 0 for enabled)                                                                                                                              | Yes       |             |
| category          | App Store Category Name (e.g. Finance)                                                                                                                                                         | Yes       |             |
| app\_bundle\_name | Android Package Name or iOS Bundle ID (e.g. com.rage.metalgeardawn)                                                                                                                            | Yes       |             |
| ios\_app\_id      | iOS App ID                                                                                                                                                                                     |           | Yes         |
| u13               | App targeted to children under 13 years (1 for Yes, 0 for No)                                                                                                                                  | Yes       |             |
| idfa\_md5         | MD5 hashed IDFA                                                                                                                                                                                |           | Yes         |
| idfa\_sha1        | SHA1 hashed IDFA                                                                                                                                                                               |           |             |
| aid\_md5          | MD5 hashed Advertising ID                                                                                                                                                                      |           | Yes         |
| aid\_sha1         | SHA1 hashed Advertising ID                                                                                                                                                                     |           |             |
| app\_storeurl     | URL encoded Play or App Store URL                                                                                                                                                              | Yes       |             |
| age               | User’s age(e.g. ‘24’)                                                                                                                                                                          |           | Yes         |
| gender            | User’s gender(e.g. ‘m’)                                                                                                                                                                        |           | Yes         |
| email\_address    | User’s email                                                                                                                                                                                   |           |             |
| latitude          | Device Latitude(e.g. -7.5481032)                                                                                                                                                               |           | Yes         |
| longitude         | Device Longitude(e.g. 35.2835043)                                                                                                                                                              |           | Yes         |
| categoryIab       | IAB Category Code(e.g. IAB1, IAB31 etc.)                                                                                                                                                       | Yes       |             |
| connType          | Connection Type (Numeric value e.g. 0-Unknown, ~~1-Ethernet~~, 2-Wifi, 3-Cellular-Unknown Generation, 4-2G, 5-3G, 6-4G/LTE)                                                                    |           | Yes         |
| deviceCategory    | Smartphone, Tablet, Smartwatch etc. (codes – section 5.17)                                                                                                                                     |           | Yes         |
| osName            | OS Name or Platform (e.g. iOS, Android, Windows etc.)                                                                                                                                          |           | Yes         |
| osVersion         | OS Version (e.g. 4.4.4, 5.0.1 etc.)                                                                                                                                                            |           | Yes         |
| appVersion        | Publisher App Version(e.g. 1.0.1, 2.7 etc.)                                                                                                                                                    |           | Yes         |
| cacheBreaker      | Allows ad server to identify cached ads(e.g. cb739ade24b)                                                                                                                                      | Yes       |             |
| referral          | Referring page/URI                                                                                                                                                                             |           | Yes         |
| swidth            | Width of the expected banner                                                                                                                                                                   | Yes       |             |
| sheight           | Height of the expected banner                                                                                                                                                                  | Yes       |             |
| gdpr\_applicable  | GDPR relevant (1 for True, 0 for False)                                                                                                                                                        | Yes       |             |
| gdpr\_consent     | GDPR permission (String value True/False or Custom consent string)                                                                                                                             | Yes       |             |
| vv                | Viewability vendors comma seperated list (String value, one or more of possible values -- integralads.com,moat.com,comscore.com,viewability.withgoogle.com,sizmek.com,adform.com,whiteops.com) | No        | Yes         |
| p\_sco            | Supply Chain Object (String value)                                                                                                                                                             | Yes       |             |

*Notes:*

1. It is highly advocated that you pass all the above RECOMMENDED parameter values alongside the MANDATORY ones, as the premium and high paying ad sources need the above parameters to classify and target users. These campaigns in return furnish very high ECPMs.
2. All parameter values must be URL Encoded as applicable
3. You can add any missing or additional parameter to the query string separated by ampersand (&).
4. All the traffic with *gdpr\_applicable=1* will be filtered.
5. Supply Chain Object is composed of two items; the SupplyChainObject properties and the SupplyChainNode array. These two items are separated by a bang (“!”) as follows
   * {SupplyChainObject}!{SupplyChainNode array}
     * SupplyChainObject consists of two properties version and complete separated by comma(,)
     * SupplyChainNode consists of domain name of the SSP, Exchange etc (asi), identifier associated with the seller or reseller account (sid), OpenRTB RequestId (rid), name of the company/entity (name), business domain name of the entity (domain) and Placeholder for advertising-system specific extensions to this object(ext *\[optional]*). All these properties should be separated by comma(,) and if there is more than one node, each must be separated by a bang (“!”) character. For example,
     * Single Hop Chain - 1.0,1!xyzexchange.com,4321,1,bid-request-1,publisherx,publisherx.com
     * Multiple Hop Chain - 1.0,1!xyzexchange.com,4321,1,bid-request-1,publisherx,publisherx.com!xyzexchange2.com,1234,1,bid-request-2,intermediaryx,intermediaryx.com

Successful Response

A successful response is either an HTML mark-up which expects the ad to be delivered as is or a JSON response depending on what you choose in response\_format.

Example Responses

```
HTML response (response_format=2)
<p><a href="https://clk.pokkt.com/tracking/3e104fac"> <img
src="https://cdn.xyz.com/pokkt/3e104fac.gif" /></a></p>
JSON response (response_format=0)
{
   "status": "1",
   "message": "Success",
   "response_format": 0,
   "Content-Type": "application\/json",
   "others": [
    {
       "offer_id": "5031",
       "campaign_form_type": "interstitial",
       "width": 480,
       "height": 640,
       "interstitial_creative": "<html>...<\/html>",
       "creative_format": "MRAID2",
       "image_url": "http:\/\/assetscdn.s3.amazonaws.com\/assets\/a_20160307123416.jpg",
       "impression_urls": [
           "https:\/\/vdo.pokkt.com\/api\/vt?track_id=ai1&appId=17&offer_id=51&event=6&"
        ],
        "click_urls": [
           "https:\/\/vdo.pokkt.com\/api\/vt?track_id=ac1&appId=17&offer_id=51&event=6&"
        ]
     }
   ]
}
```

***

#### Name/Value Pairs Explained

* interstitial\_creative: This will contain banner creative in the HTML+JS format. Partners may load the creative directly in a webview container
* image\_url: URL for the image banner
* impression\_urls: The impressions trackers which needs to be fired by partner when the image ad is loaded and visible
* click\_urls: The trackers that needs to be fired by partner when users click on the image ad
* creative\_format: This will indicate if the ad in response is NON\_MRAID or MRAID1 or MRAID2.

Note: All the above fields will be sent in the response (if JSON response is chosen). The partner can choose which to pick depending on how they wish to integrate. In case of HTML response you will have a header Creative-Format to indicate the ad in response is NON\_MRAID or MRAID1 or MRAID2.

#### Error Responses

The POKKT ad server responds with a blank JSON array for cases where there is no ad to fill. The server will respond with a JSON error string in case the app ID isn’t valid or if it comes across different issues.

**Example Error Responses**

```
Error response in case of No Fill (no matching ads to fill)
[]
Error response in case of invalid or incomplete parameters
{
   "status":"0",
   "message":"invalid package\/key",
   "others":[],
   "vc":"0"
}
```

#### FAQS

Q. Does POKKT support XML response?

A. Currently the response output is restricted to an JSON and HTML mark-up only as far as non-video display ads go. Video Ad response is VAST XML (kindly request your POC for that document, if you wish to integrate Video Ads). We will update this document when support for other output formats are made available.

Q. Does POKKT support regular banners (for eg. 300x50)?

A. POKKT currently supports full screen interstitials ads with 16:9 or 5:4 ratios (reversible ratios for portrait). The HTML banners are responsive in nature. We will update this document when support for other ad formats are made available.

Q. What happens if we don’t send one or more of the mandatory parameters?

A. POKKT and its advertising partners absolutely need all the mandatory parameters to be passed through and cannot guarantee fill if you are unable to provide all the mandatory parameters.

Q. What happens if we are unable to send one or more of the recommended parameters?

A. POKKT advocates that you send in all the recommended parameters mentioned in this document. POKKT works with top advertisers and advertising demand partners who predominantly drive higher ECPMs for your apps provided pertinent information is available to them.

Q. How secure is the user data passed in the API calls?

A. POKKT is committed to protect the privacy of the users who access its platform. POKKT’s Privacy Policy statement ([Privacy Policy](https://www.pokkt.com/privacy)) describes this in detail.


# Vast Video API

### Contents

* [1 Vast Video API - Integration Guide](broken://pages/w1jJBfOoaAUcl1F0wi6E)
  * [1.1 Overview](broken://pages/w1jJBfOoaAUcl1F0wi6E)
  * [1.2 Technical Details](broken://pages/w1jJBfOoaAUcl1F0wi6E)
    * [1.2.1 Request URI](broken://pages/w1jJBfOoaAUcl1F0wi6E)
  * [1.3 FAQS](broken://pages/w1jJBfOoaAUcl1F0wi6E)

### Vast Video API - Integration Guide

Last Update: 20th May, 2021

***

#### Overview

POKKT is a mobile video advertising and monetization platform that offers real Rewards to users for availing Advertising Offers. POKKT helps it’s partners to significantly increase revenues by converting non-paying users into loyal transacting customers.

This document describes the order and flow of a video ad solution between POKKT’s ”Video Ad Platform” and a “Supply Side Platform”. In essence, it entails the process that needs to be followed by the “Supply Side Platform” to integrate their services with POKKT’s “Video Ad Platform”.

#### Technical Details

**Request URI**

A GET request needs to be sent to POKKT server to initiate the video request. The Partner herein is required to send a request to the below URI which in turn will respond with a VAST tag.

Code

```
http://vdo.pokkt.com/api/AdServer?appId={{{app_id}}}&appName={{{pub_app_name}}}&response_format=1&device_id={{{device_id}}}&advertisingID={{{aaid}}}&ip={{{ip}}}&ua={{{browser_user_agent}}}&limitedTracking={{{ad_tracking_disabled}}}&category={{{pub_app_store_category}}}&app_bundle_name={{{app_bundle_name/web_domain}}}&ios_app_id={{{ios_appid}}}&u13={{{u13}}}&aid_md5={{{md5_aaid}}}&aid_sha1={{{sha1_aaid}}}&app_storeurl={{{pub_app_store_url}}}&age={{{age}}}&gender={{{gender}}}&latitude={{{latitude}}}&longitude={{{longitude}}}&categoryIab={{{category_iab}}}&connType={{{connection_type}}}&deviceCategory={{{device_category}}}&osName={{{os_name}}}&osVersion={{{os_version}}}&appVersion={{{app_version}}}&cacheBreaker={{{cache_breaker}}}&referral={{{referral_url}}}&ecs={{{ECS_SUPPORTED}}}&vd_min={{{video_duration_min}}}&vd_max={{{video_duration_max}}}&swidth={{{width}}}&sheight={{{height}}}&gdpr_applicable={{{gdpr_applicable}}}&gdpr_consent={{{gdpr_consent}}}&vv={{{viewability_vendors}}}&p_sco={{Supply_Chain_Obj}}
```

Parameters Explained

| PARAM             | DESCRIPTION                                                                                                                                                                                    | MANDATORY | RECOMMENDED |
| ----------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------- | ----------- |
| appId             | Unique App ID (available during integration)                                                                                                                                                   | Yes       |             |
| appName           | App Name(e.g. Metal%20Gear%20Dawn)                                                                                                                                                             | Yes       |             |
| ad\_format        | Ad Format (0 for VAST)                                                                                                                                                                         | Yes       |             |
| response\_format  | Ad medium indicator (for internal POKKT use) = 1                                                                                                                                               | Yes       |             |
| device\_id        | OS ID or Device ID                                                                                                                                                                             |           | Yes         |
| advertisingID     | Google Advertising ID or iOS IDFA                                                                                                                                                              | Yes       |             |
| ip                | IP address                                                                                                                                                                                     | Yes       |             |
| ua                | User Agent                                                                                                                                                                                     | Yes       |             |
| limitedTracking   | Do Not Track or DNT (e.g. 1 for tracking disabled, 0 for enabled)                                                                                                                              | Yes       |             |
| category          | App Store Category Name (e.g. Finance)                                                                                                                                                         | Yes       |             |
| app\_bundle\_name | Android Package Name or iOS Bundle ID or mobile web domain (e.g. com.rage.metalgeardawn)                                                                                                       | Yes       |             |
| ios\_app\_id      | iOS App ID                                                                                                                                                                                     |           | Yes         |
| u13               | App targeted to children under 13 years (1 for Yes, 0 for No)                                                                                                                                  | Yes       |             |
| aid\_md5          | MD5 hashed Advertising ID                                                                                                                                                                      |           | yes         |
| aid\_sha1         | SHA1 hashed Advertising ID                                                                                                                                                                     |           |             |
| app\_storeurl     | App Store URL                                                                                                                                                                                  | Yes       |             |
| age               | User’s age(e.g. ‘24’)                                                                                                                                                                          |           | Yes         |
| gender            | User’s gender(e.g. ‘m’)                                                                                                                                                                        |           | Yes         |
| email\_address    | User’s email                                                                                                                                                                                   |           |             |
| latitude          | Device Latitude(e.g. -7.5481032)                                                                                                                                                               |           | Yes         |
| longitude         | Device Longitude(e.g. 35.2835043)                                                                                                                                                              |           | Yes         |
| categoryIab       | IAB Category Code(e.g. IAB1, IAB31 etc.)                                                                                                                                                       |           | Yes         |
| connType          | Connection Type (Numeric value e.g. 0-Unknown, ~~1-Ethernet~~, 2-Wifi, 3-Cellular-Unknown Generation, 4-2G, 5-3G, 6-4G/LTE)                                                                    |           | Yes         |
| deviceCategory    | Smartphone, Tablet, Smartwatch etc. (codes – section 5.17)                                                                                                                                     |           | Yes         |
| osName            | OS Name or Platform (e.g. iOS, Android, Windows etc.)                                                                                                                                          |           | Yes         |
| osVersion         | OS Version (e.g. 4.4.4, 5.0.1 etc.)                                                                                                                                                            |           | Yes         |
| appVersion        | Publisher App Version(e.g. 1.0.1, 2.7 etc.)                                                                                                                                                    |           | Yes         |
| cacheBreaker      | Allows ad server to identify cached ads(e.g. cb739ade24b)                                                                                                                                      | Yes       |             |
| referral          | Referring page/URI                                                                                                                                                                             |           | Yes         |
| ecs               | End Card Support (e.g. 1 for Yes, 0 for No)                                                                                                                                                    |           |             |
| vd\_min           | Expected minimum duration of video                                                                                                                                                             |           |             |
| vd\_max           | Expected maximum duration of video                                                                                                                                                             |           |             |
| swidth            | Width of the Player                                                                                                                                                                            |           | Yes         |
| sheight           | Height of the Player                                                                                                                                                                           |           | Yes         |
| gdpr\_applicable  | GDPR relevant (1 for True, 0 for False)                                                                                                                                                        | Yes       |             |
| gdpr\_consent     | GDPR permission (String value True/False or Custom consent string)                                                                                                                             | Yes       |             |
| vv                | Viewability vendors comma seperated list (String value, one or more of possible values -- integralads.com,moat.com,comscore.com,viewability.withgoogle.com,sizmek.com,adform.com,whiteops.com) | No        | Yes         |
| p\_sco            | Supply Chain Object (String value)                                                                                                                                                             | Yes       |             |

*Notes:*

1. It is highly advocated that you pass all the above RECOMMENDED parameter values alongside the MANDATORY ones, as the premium and high paying ad sources need the above parameters to classify and target users. These campaigns in return furnish very high ECPMs.
2. All parameter values must be URL Encoded as applicable
3. All the traffic with *gdpr\_applicable=1* will be filtered.
4. Supply Chain Object is composed of two items; the SupplyChainObject properties and the SupplyChainNode array. These two items are separated by a bang (“!”) as follows
   * {SupplyChainObject}!{SupplyChainNode array}
     * SupplyChainObject consists of two properties version and complete separated by comma(,)
     * SupplyChainNode consists of domain name of the SSP, Exchange etc (asi), identifier associated with the seller or reseller account (sid), OpenRTB RequestId (rid), name of the company/entity (name), business domain name of the entity (domain) and Placeholder for advertising-system specific extensions to this object(ext *\[optional]*). All these properties should be separated by comma(,) and if there is more than one node, each must be separated by a bang (“!”) character. For example,
     * Single Hop Chain - 1.0,1!xyzexchange.com,4321,1,bid-request-1,publisherx,publisherx.com
     * Multiple Hop Chain - 1.0,1!xyzexchange.com,4321,1,bid-request-1,publisherx,publisherx.com!xyzexchange2.com,1234,1,bid-request-2,intermediaryx,intermediaryx.com

\
Response

In response to the above ad request (with all requisite macros values), POKKT’s ad server will respond with a standard VAST XML response.

Successful Response

A successful response is a standard VAST 2.0 XML tag with all the events and associated trackers. Refer to IAB VAST guidelines for more information.

Example (barebones linear VAST tag with End Card Example) \[updated]

```
<?xml version="1.0" encoding="UTF-8"?>
<VAST version="2.0">
<Ad id="XXX">
   <InLine>
      <AdSystem>
         Pokkt
      </AdSystem>
      <Creatives>
         <Creative>
            <Linear>
               <VideoClicks>
                  <ClickTracking>
                     <![CDATA[...]]>
                  </ClickTracking>
               </VideoClicks>
               <TrackingEvents>
                  <Tracking event="firstQuartile">
                     <![CDATA[...]]>
                  </Tracking>
                  <Tracking event="midpoint">
                     <![CDATA[...]]>
                  </Tracking>
                  <Tracking event="thirdQuartile">
                     <![CDATA[...]]>
                  </Tracking>
                  <Tracking event="complete">
                     <![CDATA[...]]>
                  </Tracking>
                  <Tracking event="start">
                     <![CDATA[...]]>
                  </Tracking>
                  <Tracking event="skip">
                     <![CDATA[...]]>
                  </Tracking>
                  <Tracking event="mute">
                     <![CDATA[...]]>
                  </Tracking>
                  <Tracking event="unmute">
                     <![CDATA[...]]>
                  </Tracking>
                  <Tracking event="creativeView">
                     <![CDATA[...]]>
                  </Tracking>
               </TrackingEvents>
               <Duration>
                  00:00:30
               </Duration>
               <MediaFiles>
                  <MediaFile>
                     <![CDATA[...]]>
                  </MediaFile>
               </MediaFiles>
            </Linear>
         </Creative>
         <Creative>
            <CompanionAds>
               <Companion>
                  <HTMLResource>
                     http://abc/test.html
                  </HTMLResource>
                  <CompanionClickThrough>
                     <![CDATA[...]]>
                  </CompanionClickThrough>
                  <CompanionClickTracking>
                     <![CDATA[...]]>
                  </CompanionClickTracking>
                  <TrackingEvents>
                     <Tracking event="close">
                        <![CDATA[...]]>
                     </Tracking>
                     <Tracking event="creativeView">
                        <![CDATA[...]]>
                     </Tracking>
                  </TrackingEvents>
               </Companion>
               <Companion>
                  <StaticResource>
                     http://abc/test.gif
                  </StaticResource>
                  <CompanionClickThrough>
                     <![CDATA[...]]>
                  </CompanionClickThrough>
                  <CompanionClickTracking>
                     <![CDATA[...]]>
                  </CompanionClickTracking>
                  <TrackingEvents>
                     <Tracking event="close">
                        <![CDATA[...]]>
                     </Tracking>
                     <Tracking event="creativeView">
                        <![CDATA[...]]>
                     </Tracking>
                  </TrackingEvents>
               </Companion>
            </CompanionAds>
         </Creative>
      </Creatives>
      <AdTitle>
         <![CDATA[Ad Name]]>
      </AdTitle>
      <Impression>
         <![CDATA[...]]>
      </Impression>
      <Error>
         <![CDATA[...]]>
      </Error>
   </InLine>
</Ad>
</VAST>
```

Error Responses

The POKKT ad server responds with a blank VAST tag for cases where there is no ad to fill. The server will respond with a JSON error string in case the app ID isn’t valid.

Examples

```
Error response in case of No Fill (no matching ads to fill)
<VAST version="2.0"></VAST>

Error response in case of invalid or incomplete parameters
{"status":"0","message":"invalid package\/key","others":[],"vc":"0"}
```

***

#### FAQS

Q. What happens if we don’t send one or more of the mandatory parameters?

A. POKKT and it’s advertising partners absolutely need all the mandatory parameters to be passed through and cannot guarantee fill if you are unable to provide all the mandatory parameters.

Q. What happens if we are unable to send one or more of the recommended parameters?

A. POKKT advocates that you send in all the recommended parameters mentioned in this document. POKKT works with top advertisers and advertising demand partnerswho predominantly drive higher ECPMs for your apps provided pertinent information is available to them.

Q. How secure is the user data passed in the API calls?

A. POKKT is committed to protect the privacy of the users who access its platform. POKKT’s Privacy Policy statement ([Privacy Policy](https://www.pokkt.com/privacy)) describesthis in detail.


# Gratification API

### Server-side Rewarded Callbacks

Last Update: 22nd June, 2017

***

#### Overview

Publishers can set a secure rewarded server-side callback on the settings page for your app. The endpoint will be triggered as soon as user completes the rewarded video.

This callback is called asynchronously, and should not be used to give rewards. Client-side callbacks should be used to give rewards, and use the server-side callbacks to confirm the reward. The request will be GET with following parameters as query parameters.

**The request has following format:**

```
[PUBLISHER LINK URL]?app_id=[APP_ID]&unique_id=123456×tamp=1453113302&token=0be9ce5718cda64030c3fa1a0dcd16d4&points=2.5&network_id=12
```

\[PUBLISHER LINK URL]: This url is provided by the developer in the app settings page.

app\_id: The app id of your application. It can be found on your app settings page.

unique\_id: This id will be used by the publisher to identify the user. It has to be set by the publisher in the Pokkt Sdk.

points: This is a float value denoting the amount of reward given to that user. If it is not sent then default value 0 is assumed.

timestamp: This is current timestamp in milliseconds.

token: This token is used to authenticate callbacks. Token is generated using the hash function md5 on the string combination of app\_id, unique\_id, timestamp, points and app secret key. The secret key can be found out from your app settings page.

encodedPubParams: This is custom data which you can set from the SDK when showing a rewarded video, like the level name etc.

network\_id: This is the mediation network id which can be found on the mediation settings page. In case of rewarded ad from Pokkt Network, network\_id will be null.


# Ad Interstitial

### Ad Tag – Integration Guide

Last Update: 27th December, 2016

***

```
<script type="text/javascript">
   this.pokktConfig = {
      "_appId": "[APP_ID]",
      "_width":"[WIDTH]",
      "_height":"[HEIGHT]",
      "_deviceId":"[DEVICE_ID]",
      "_adId":"[AD_ID]",
      "_adFormat":"1",
      //possibe values for adformat -
      //1- banner
      //3- interstitial
      //optional macros
      "_dnt":"[DNT]",
      "_connectionType":"[CONNECTION_TYPE]",
      "_appName":"[APP_NAME]",
      "_appBundleName":"[APP_BUNDLE_NAME]",
      "_ipAddress":"[IP_ADDRESS]",
      "_carrierName":"[CARRIER_NAME]",
      "_appStoreUrl":"[APP_STORE_URL]",
      "_clickTracker":"[CLICK_TRACKER]",
      "_impressionTracker":"[IMPRESSION_TRACKER]",
      "_lat":"[LAT]",
      "_lon":"[LON]",
      "_cb":"[CB]"//cache buster
   };
</script>
<script type="text/javascript" src="http://pokktjs.pokkt.com/interstitial/pokkt.js"></script>
```

#### Mandatory Parameters

“\_appId”: To be provided by POKKT

“\_width”: To be passed by Publisher

“\_height”: To be passed by Publisher

“\_deviceId”: To be passed by Publisher

“\_adId”: To be passed by Publisher

#### Optional Parameters

“\_dnt“: Do Not Track (y or n)

"\_connectionType“: Connection Type (Numeric value e.g. 0 - Unknown, 1 - Ethernet, 2- Wifi, 3 - Cellular-Unknown Generation, 4 - 2G, 5 - 3G, 6 - 4G/LTE)

“\_appName“: App Name (e.g. Metal%20Gear%20Dawn)

“\_appBundleName“: Android Package Name or iOS Bundle ID (e.g. com.rage.metalgeardawn)

“\_ipAddress“: IP Address

“\_carrierName“: Carrier name eg. Vodafone

“\_appStoreUrl“:App Store URL

“\_clickTracker“: Publisher’s Click Tracker Macro or URL

“\_impressionTracker“:Publisher’s Impression Tracker Macro or URL

“\_lat“:Latitude

“\_lon“:Longitude

“\_cb“:Cache Buster (Random alphanumeric)


# Mobile Web Video Integration

### Contents

* [1 Overview](broken://pages/urkAcaGJRbDZfEcIgpOT)
* [2 Rewarded Video Ads](broken://pages/urkAcaGJRbDZfEcIgpOT)
  * [2.1 Sequence of events (Example only)](broken://pages/urkAcaGJRbDZfEcIgpOT)
  * [2.2 User Journey for above example](broken://pages/urkAcaGJRbDZfEcIgpOT)
* [3 Non-Rewarded Video Ads](broken://pages/urkAcaGJRbDZfEcIgpOT)
* [4 Technical Details](broken://pages/urkAcaGJRbDZfEcIgpOT)
  * [4.1 Request URI](broken://pages/urkAcaGJRbDZfEcIgpOT)
  * [4.2 Success Post-back](broken://pages/urkAcaGJRbDZfEcIgpOT)
  * [4.3 Failure Post-Back](broken://pages/urkAcaGJRbDZfEcIgpOT)
* [5 FAQ](broken://pages/urkAcaGJRbDZfEcIgpOT)

#### Overview

POKKT is a mobile video advertising and monetization platform that offers real Rewards to users for availing Advertising Offers. POKKT helps it’s Publishers to significantly increase revenues by converting non-paying users into loyal transacting customers.

This document describes the technical integration guidelines for both, rewarded as well as non-rewarded video ad solution between POKKT’s "Video Ad Platform" and a Mobile Web (WAP) "Publisher". In essence, it entails the process that needs to be followed by the “Publisher” to integrate their services with POKKT’s “Video Ad Platform”, thereby allowing end-users to access additional functions and features that the “Publisher” wishes to provide them with.

#### Rewarded Video Ads

For the purpose of simplicity, we will consider an example of a Wi-Fi Service Provider as a specific type of Mobile Web (WAP) Publisher, that rewards users with free Wi-Fi time, after the user watches a video ad.

**Sequence of events (Example only)**

The above sequence diagram is only an example depicting a scenario where the Publisher is a Wi-Fi Service Provider that rewards End-Users with free Wi-Fi minutes in public places like airports, coffee shops etc. in exchange for completing an action. In this case, the action is watching a video ad, at the end of which, the Wi-Fi Service provider makes the service free for a limited period of time.

**User Journey for above example**

The above sequence diagrams takes you through the User and System journey for such an arrangement. Let’s briefly runthrough the above sequence of events in a real-life scenario:

1. User connects to the Wi-Fi Service Provider’s (Publisher) open Wi-Fi connection using an Android or an iOS device
2. Wi-Fi Service opens default landing page with an option for the user to watch a video and earn free Wi-Fi minutes
3. User taps on Watch Video, following which the Wi-Fi Provider forwards the request to POKKT’s landing page while also passing a unique user ID (refer Request URI section below)
4. POKKT’s ad platform fetches an appropriate video campaign and renders the HTML player on the User’s browser
5. User is shown the video; He/she plays through the video and finishes playback
6. POKKT’s player, during this time, will fire and record all the video events and will track video completion
7. POKKT redirects to the Wi-Fi Provider’s success page indicating that the user with same unique ID, has finished watching the video
8. Wi-Fi service provider validates the unique ID and rewards the user with free Wi-Fi minutes

#### Non-Rewarded Video Ads

The typical non-rewarded call flow for a Mobile Web (WAP) Publisher is also similar to the one depicted above, except that there is no reward at the end of the video playback. Instead the Publisher may choose to redirect the user to a different section of their mobile site as applicable in context of the Publisher site’s flow.

Kindly refer to the technical details below to integrate your Mobile Site to configure Rewarded and/or Non-Rewarded video ads based on your requirement.

#### Technical Details

**Request URI**

Depending on the user intent, a request needs to be sent to POKKT to initiate the video request. The Publisher herein is required to send a request to the below URI which in turn will render a landing page with a video ad.

Code

```
http://vdo.pokkt.com/videoWap?appId=<publisher_app_id>&format=1&encodedparams=param1%3Dvalue1%26param2%3Dvalue2
```

Examples

```
Example [A] - Publisher shares Session ID
http://vdo.pokkt.com/videoWap?appId=2ebeq73jac13dkdzuej39dj47ja9&format=1&encodedparams=SESSION_ID%3D1282298192

Example [B] - Publisher shares Session ID & Email ID
http://vdo.pokkt.com/videoWap?appId=2ebeq73jac13dkdzuej39dj47ja9&format=1&encodedparams=SESSION_ID%3D1282298192%26EMAIL_ID%3Djohn%40xyz.com
```

Parameters

| PARAM         | DESCRIPTION                                                                                    | EXAMPLE                     |
| ------------- | ---------------------------------------------------------------------------------------------- | --------------------------- |
| appId         | All POKKT Publishers will be allocated a unique App ID. This will be shared during integration | 2ebeq73lac13dkdzuek39di47a9 |
| format        | Ad medium indicator (for internal POKKT use)                                                   | 1                           |
| encodedparams | Allows Publisher to pass user related information viz. Unique ID, Session ID, Email ID etc.    | SESSION\_ID%3D8499237802    |

Note

1. For any extra data to be added in to the call back URL, the Publisher needs to add all the parameters in encoded format to 'encodedparams' field
2. You may choose to hash or encrypt the Unique IDs within before sending it in the URI

**Success Post-back**

Once the video playback is complete, POKKT will send a request back to the Publisher by passing values in the encodedparams parameter earlier passed, to a pre-defined URI provided by the Publisher.

For this purpose, the Publisher is required to share with POKKT, the Success URI wherein the logic for the next steps resides.

Find below an example of this URI

Example of a Success URI from a Publisher

```
http://www.yoursite.com/yourservice/accesswifi.php?params=SESSION_ID%3D1282298192
```

POKKT will hit this URI, after which the Publisher can choose to take the user to the next step (in this case, reward the user with Free Wi-Fi minutes).

**Failure Post-Back**

If the user fails to complete the video view, POKKT can also share the information back to the Publisher with a failure notification on the same URI for further action or messages. This is optional and entirely based on whether the Publisher needs it.

Example of a Failure URI from a Publisher

```
http://www.yoursite.com/yourservice/accesswifi.php?params=SESSION_ID%3D1282298192&success=no
```

#### FAQ

Q: Is this solution meant for browser based integrations alone?\
A: While the current solution is meant for browser based integrations, we can extend this to an app based integration

Q: How does video play on the user’s device?\
A: POKKT uses its native HTML5 video player which compatible with iOS and Android operating platforms

Q: Does this solution support iOS video playback on Safari browser?\
A: YES, our solution supports iOS as a platform. It must be noted that on iPhones, auto-play feature is disabled, so the user has to manually tap the play button on the player

Q: Does POKKT provide reports for successful video playbacks?\
A: YES, POKKT provides a dashboard and all Publishers will have access to the dashboard and its reports

Q: If the user skips the video, will he/she be rewarded?\
A: NO, The user is only rewarded when he/she completes the video playback (i.e. he/she watches the video’s full duration)

Q: Does POKKT’s Ad Platform capture video ad playback metrics?\
A: YES, POKKT’s platform is compliant with IAB’s VAST guidelines and provides viewability metrics in the form of quartile reports


# DSP


# DSP Help

### Contents

* [1 DSP Platform](broken://pages/1HMluyrG2QxFiOSdqRIm)
  * [1.1 Dashboard Page:](broken://pages/1HMluyrG2QxFiOSdqRIm)
  * [1.2 Manage Bidder:](broken://pages/1HMluyrG2QxFiOSdqRIm)
  * [1.3 Create Bidder:](broken://pages/1HMluyrG2QxFiOSdqRIm)
  * [1.4 Create Targeting:](broken://pages/1HMluyrG2QxFiOSdqRIm)
  * [1.5 Update General Details:](broken://pages/1HMluyrG2QxFiOSdqRIm)

### DSP Platform

Login to [Pokkt.com](https://pokkt.com/main)

#### Dashboard Page:

Here there will be graph for Datewise Report For Bidder as well as Performance data by Date and Country.

You can Select Bidder whose detail you want to see and Date Range.

Error creating thumbnail: File missing

#### Manage Bidder:

Click on Dashboard -> Manage Bidder

Click on Create Bidder Button to Start Creating Bidder.

Error creating thumbnail: File missing

#### Create Bidder:

1. Insert Bidder Title (Note : This will be unique title of your Bidder. You can use it later to search Bidder in Manage Bidder Page.)
2. Select Ad Unit Type (Note : This will have values like Video, Banner, Interstitial etc.)
3. Insert RTB Endpoint URL for Bidder (Note : RTB Endpoint to which Pokkt Exchange will make RTB Request)
4. You can also add optional fields like Request per Second,Content Categories and Content Attributes.
5. Add Targeting Profile By Clicking on New Targeting Button. After Creating Targeting Profile Select Targeting Profile in Bidder Creation page.

Error creating thumbnail: File missing

#### Create Targeting:

1. For Bidder Targeting Profile is needed to be created
2. Go To Profile -> Manage Targeting to create Profile
3. Click on + New Targeting Profile button to create targeting
4. Here Profile name and operating system options are mandatory remaining are optional
5. Please find below screenshot for help

   Error creating thumbnail: File missing

   Error creating thumbnail: File missing
6. You can click on Day Time Targeting Button to view targeting profile form for Day time Targeting

   Error creating thumbnail: File missing

#### Update General Details:

1. Click on Settings -> Account to update general details if you want to

   Error creating thumbnail: File missing

   Error creating thumbnail: File missing
2. You can change your user name and password from drop down on upper right corner

   Error creating thumbnail: File missing

   Error creating thumbnail: File missing


# Downloads


# Native SDK

Last Update: 27th October, 2021

***

AndroidiOSWindowsTvOS

Latest Android Version

[Native Android SDK V8.1.0](https://pokktdocumentation.s3.ap-southeast-1.amazonaws.com/android/native/PokktSDK_v8.1.0_Android.zip)

\
Previous Android Versions<br>

[Native Android SDK V8.0.1](https://pokktdocumentation.s3.ap-southeast-1.amazonaws.com/android/native/PokktSDK_v8.0.1_Android.zip)\
[Native Android SDK V8.0.0](https://pokktdocumentation.s3-ap-southeast-1.amazonaws.com/android/native/PokktSDK_v8.0.0_Android.zip)\
[Native Android SDK V7.6.1](https://pokktdocumentation.s3-ap-southeast-1.amazonaws.com/android/native/PokktSDK_v7.6.1_Android.zip)\
[Native Android SDK V7.6.0](https://pokktdocumentation.s3-ap-southeast-1.amazonaws.com/android/native/PokktSDK_v7.6.0_Android.zip)\
[Native Android SDK V7.5.1](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/android/native/PokktSDK_v7.5.1_Android.zip)\
[Native Android SDK V7.4.1](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/android/native/PokktSDK_v7.4.1_Android.zip)\
[Native Android SDK V7.4.0](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/android/native/PokktSDK_v7.4.0_Android.zip)\
[Native Android SDK V7.2.0](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/android/native/PokktSDK_v7.2.0_Android.zip)\
[Native Android SDK V7.1.0](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/android/native/PokktSDK_v7.1.0_Android.zip)\
[Native Android SDK V7.0.1](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/android/native/PokktSDK_v7.0.1_Android.zip)\
[Native Android SDK V7.0](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/android/native/PokktSDK_v7.0_Android.zip)\
[Native Android SDK V6.2.3](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/android/native/PokktSDK_v6.2.3_Android.zip)\
[Native Android SDK V6.2.2](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/android/native/PokktSDK_v6.2.2_Android.zip)\
[Native Android SDK V6.2.1](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/android/native/PokktSDK_v6.2.1_Android.zip)\
[Native Android SDK V6.2](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/android/native/PokktSDK_v6.2_Android.zip)\
[Native Android SDK V6.1](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/android/native/PokktSDK_v6.1_Android.zip)\
[Native Android SDK V6.0.2](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/android/native/Pokkt_SDK_6.0.2_Android.zip)\
[Native Android SDK V6.0.1](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/android/native/Pokkt_SDK_6.0.1_Android.zip)\
[Native Android SDK V6.0](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/android/native/Pokkt_SDK_6.0_Android.zip)\
[Native Android SDK V5.0](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/android/native/Native_SDK_5.0.zip)\
[Native Android SDK V4.1.1](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/android/native/Native_SDK_4.1.1.zip)<br>

Archived Versions<br>

[Native Android SDK V4.1.0](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/android/native/Native_SDK_4.1.0.zip)\
[Native Android SDK V4.0](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/android/native/Native_SDK_4.0.0.zip)\
[Native Android SDK V3.1](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/android/native/Native_SDK_3.1.0.zip)\
[Native Android SDK V3.0](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/android/native/Native_SDK_3.0.0.zip)\
[Native Android SDK V2.1.4](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/android/native/Native_SDK_2.1.4.zip)\
[Native Android SDK V2.1.3](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/android/native/Native_SDK_2.1.3.zip)\
[Native Android SDK V2.1.2](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/android/native/Native_SDK_2.1.2.zip)\
[Native Android SDK V2.1.1](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/android/native/Native_SDK_2.1.1.zip)\
[Native Android SDK V2.1.0](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/android/native/Native_SDK_2.1.0.zip)\
[Native Android SDK V2.0.6](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/android/native/Native_SDK_2.0.6.zip)\
[Native Android SDK V2.0.5](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/android/native/Native+SDK+2.0.5.zip)<br>

Latest IOS Version

[Native iOS SDK V8.1.0](https://pokktdocumentation.s3.ap-southeast-1.amazonaws.com/ios/native/PokktSDK_v8.1.0_ios.zip)

\
Previous IOS Versions<br>

[Native iOS SDK V8.0.1](https://pokktdocumentation.s3-ap-southeast-1.amazonaws.com/ios/native/PokktSDK_v8.0.1_ios.zip)\
[Native iOS SDK V7.6.1](https://pokktdocumentation.s3-ap-southeast-1.amazonaws.com/ios/native/PokktSDK_v7.6.1_ios.zip)\
[Native iOS SDK V7.6.0](https://pokktdocumentation.s3-ap-southeast-1.amazonaws.com/ios/native/PokktSDK_v7.6.0_ios.zip)\
[Native iOS SDK V7.5.0](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/ios/native/PokktSDK_v7.5.0_ios.zip)\
[Native iOS SDK V7.4.0](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/ios/native/PokktSDK_v7.4.0_ios.zip)\
[Native iOS SDK V7.2.0](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/ios/native/PokktSDK_v7.2.0_ios.zip)\
[Native iOS SDK V7.1](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/ios/native/PokktSDK_v7.1_ios.zip)\
[Native iOS SDK V7.0](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/ios/native/PokktSDK_v7.0_ios.zip)\
[Native iOS SDK V6.2.2](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/ios/native/PokktSDK_v6.2.2_ios.zip)\
[Native iOS SDK V6.2.1](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/ios/native/PokktSDK_v6.2.1_ios.zip)\
[Native iOS SDK V6.2](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/ios/native/PokktSDK_v6.2_ios.zip)\
[Native iOS SDK V6.1](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/ios/native/PokktSDK_v6.1_ios.zip)\
[Native iOS SDK V6.0.2](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/ios/native/PokktSDK_v6.0.2_ios.zip)\
[Native iOS SDK V6.0.1](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/ios/native/PokktSDK_v6.0.1_ios.zip)\
[Native iOS SDK V6.0](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/ios/native/PokktSDK_v6.0_ios.zip)\
[Native iOS SDK V5.0](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/ios/native/ios_sdk_v5.0.zip)\
[Native iOS SDK V4.1.1](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/ios/native/iOS_SDK_v4.1.1.zip)<br>

Archived Versions<br>

[Native iOS SDK V4.1.0](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/ios/native/iOS_SDK_v4.1.0.zip)\
[Native iOS SDK V4.0](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/ios/native/ios_sdk_v4.0.zip)\
[Native iOS SDK V3.1](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/ios/native/ios_sdk_v3.1.zip)\
[Native iOS SDK V3.0](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/ios/native/ios_sdk_v3.0.zip)\
[Native iOS SDK V2.1](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/ios/native/ios_sdk_v2.1.zip)\
[Native iOS SDK V2.0](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/ios/native/ios_sdk_v2.0.zip)\
[Native iOS SDK V1.2](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/ios/native/ios_sdk_v1.2.zip)\
[Native iOS SDK V1.1](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/ios/native/ios_sdk_v1.1.zip)\
[Native iOS SDK V1.0](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/ios/native/ios_sdk_v1.zip)<br>

Latest Windows Version

[Windows SDK 3.0.0](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/windows/native/PokktSDK_ver3.0.0_AnyCPU_WindowsPhone8.1.zip)

\
Previous Windows Version<br>

[Windows SDK 1.0.0](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/windows/native/Windows_sdk_1.0.0.zip)<br>

Latest TvOS Version

[Native tvOS SDK v3.0](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/tvOS/PokktSDK_v3.0_tvos.zip)

\
Previous Windows Version<br>

[Native tvOS SDK v2.0](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/tvOS/PokktSDK_v2.0_tvos.zip)\
[Native tvOS SDK v1.0](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/tvOS/tvOS_sdk_v1.0.zip)<br>


# Unity SDK

Latest Windows Version

[Windows Unity SDK 4.1.1](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/windows/native/PokktSDK_ver3.0.0_AnyCPU_WindowsPhone8.1.zip)

\
Previous Windows Versions<br>

[Windows Unity SDK 3.0.0](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/windows/Unity/Unity5.2_Plugin_ver3.0_For_WindowsPhone8.1.zip)<br>


# Cocos2dx SDK

From POKKT DOCUMENTATION

Jump to: [navigation](broken://pages/TKg56tlggZrEdOM5wBRX), [search](broken://pages/TKg56tlggZrEdOM5wBRX)

Last Update: 22nd November, 2019

***

| Latest Version                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [cocos2dxV3 v7.6.0](https://pokktdocumentation.s3-ap-southeast-1.amazonaws.com/cocos2dx/Pokkt_Cocos2dx_Plugin_v7.6.0.zip)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| Previous Versions                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| <p><a href="https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/cocos2dx/Pokkt_Cocos2dx_Plugin_v7.5.1.zip">cocos2dxV3 v7.5.1</a><br><a href="https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/cocos2dx/Pokkt_Cocos2dx_Plugin_v7.4.0.zip">cocos2dxV3 v7.4.0</a><br><a href="https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/cocos2dx/Pokkt_Cocos2dx_Plugin_v7.2.0.zip">cocos2dxV3 v7.2.0</a><br><a href="https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/cocos2dx/Pokkt_Cocos2dx_Plugin_v7.1.0.zip">cocos2dxV3 v7.1.0</a><br><a href="https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/cocos2dx/Pokkt_Cocos2dx_Plugin_v7.0.1.zip">cocos2dxV3 v7.0.1</a><br><a href="https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/cocos2dx/Pokkt_Cocos2dx_Plugin_v7.0.zip">cocos2dxV3 v7.0</a><br><a href="https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/cocos2dx/Pokkt_Cocos2dx_Plugin_v6.2.2.zip">cocos2dxV3 v6.2.2</a><br><a href="https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/cocos2dx/Pokkt_Cocos2dx_Plugin_v6.2.1.zip">cocos2dxV3 v6.2.1</a><br><a href="https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/cocos2dx/Pokkt_Cocos2dx_Plugin_v6.2.zip">cocos2dxV3 v6.2</a><br><a href="https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/cocos2dx/Pokkt_Cocos2dx_Plugin_v6.1.zip">cocos2dxV3 v6.1</a><br></p> |

AndroidiOS

Archived Versions<br>

[cocos2dxV3 v6.0.2 Android](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/android/cocos2d/Cocos2dx_v6.0.2_Android.zip)\
[cocos2dxV3 v6.0.1 Android](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/android/cocos2d/Cocos2dx_v6.0.1_Android.zip)\
[cocos2dxV3 v6.0 Android](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/android/cocos2d/Cocos2dx_v6.0_Android.zip)\
[cocos2dxV3 v5.0 Android](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/android/cocos2d/cocos2dx_v5.0_Android.zip)\
[cocos2dxV3 v4.1.1 Android](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/android/cocos2d/cocos2dxV3_v4.1.1_Android.zip)\
[cocos2dxV3 v4.1.0 Android](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/android/cocos2d/cocos2dxV3_v4.1_Android.zip)\
[cocos2dxV3 v4.0 Android](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/android/cocos2d/cocos2dxV3_v4.0_Android.zip)\
[cocos2dxV3 v3.1.0 Android](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/android/cocos2d/cocos2dxV3_v3.1.0_Android.zip)\
[cocos2dxV3 v3.0.0 Android](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/android/cocos2d/cocos2dxV3_v3.0.0_Android.zip)\
[cocos2dxV3 v2.1.4 Android](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/android/cocos2d/cocos2dxV3_v2.1.4_Android.zip)\
[cocos2dxV3 v2.1.3 Android](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/android/cocos2d/cocos2dxV3_v2.1.3_Android.zip)\
[cocos2dxV3 v2.1.2 Android](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/android/cocos2d/cocos2dxV3_v2.1.2_Android.zip)\
[cocos2dxV3 v2.1.1 Android](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/android/cocos2d/cocos2dxV3_v2.1.1_Android.zip)\
[cocos2dxV3 v2.1.0 Android](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/android/cocos2d/cocos2dxV3_v2.1.0_Android.zip)\
[cocos2dxV3 v1.1 Android](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/android/cocos2d/cocos2dxV3_v1.1_Android.zip)\
[cocos2dxV3 v1.0 Android](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/android/cocos2d/cocos2dxV3_v1.0.zip)<br>

Archived Versions<br>

[cocos2dxV3 v6.0.2 iOS](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/ios/cocos2d/Cocos2dx_v6.0.2_iOS.zip)\
[cocos2dxV3 v6.0.1 iOS](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/ios/cocos2d/Cocos2dx_v6.0.1_iOS.zip)\
[cocos2dxV3 v6.0 iOS](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/ios/cocos2d/Cocos2dx_v6.0_iOS.zip)\
[cocos2dxV3 v5.0 iOS](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/ios/cocos2d/cocos2dx_v5.0_IOS.zip)\
[cocos2dxV3 v4.1.1 iOS](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/ios/cocos2d/cocos2dxV3_v4.1.1_iOS.zip)\
[cocos2dxV3 v4.1.0 iOS](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/ios/cocos2d/cocos2dxV3_v4.1_iOS.zip)\
[cocos2dxV3 v4.0 iOS](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/ios/cocos2d/cocos2dxV3_v4.0_iOS.zip)\
[cocos2dxV3 v3.1 iOS](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/ios/cocos2d/cocos2dxV3_v3.1_iOS.zip)\
[cocos2dxV3 v3.0 iOS](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/ios/cocos2d/cocos2dxV3_v3.0_iOS.zip)\
[cocos2dxV3 v2.1 iOS](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/ios/cocos2d/cocos2dxV3_v2.1_iOS.zip)\
[cocos2dxV3 v2.0 iOS](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/ios/cocos2d/cocos2dxV3_v2.0_iOS.zip)\
[cocos2dxV3 v1.2 iOS](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/ios/cocos2d/cocos2dxV3_v1.2_iOS.zip)\
[cocos2dxV3 v1.1 iOS](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/ios/cocos2d/cocos2dxV3_v1.1_iOS.zip)<br>

Retrieved from "<https://wiki.pokkt.com/index.php?title=Cocos2dx_SDK_Download&oldid=2859>"


# Adobe Air SDK

From POKKT DOCUMENTATION

Jump to: [navigation](broken://pages/6am1BndDkAcFVyRiCyHq), [search](broken://pages/6am1BndDkAcFVyRiCyHq)

Last Update: 12th April 2016

***

AndroidiOS

Latest Android Version

[Air Plugin Android 5.0](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/android/air/Air_Plugin_Android_v5.0.zip)

\
Previous Android Versions<br>

[Air Plugin Android 4.1.1](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/android/air/Air_Plugin_Android_4.1.1.zip)\
[Air Plugin Android 4.1.0](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/android/air/Air_Plugin_Android_4.1.zip)\
[Air Plugin Android 4.0](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/android/air/Air_Plugin_Android_4.0.zip)\
[Air Plugin Android 3.1.0](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/android/air/Air_Plugin_Android_3.1.0.zip)\
[Air Plugin Android 3.0.0](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/android/air/Air_Plugin_Android_3.0.0.zip)\
[Air Plugin Android 2.0.4](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/android/air/Air_Plugin_Android_2.0.4.zip)\
[Air Plugin Android 2.0.3](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/android/air/Air_Plugin_Android_2.0.3.zip)\
[Air Plugin Android 2.0.2](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/android/air/Air_Plugin_Android_2.0.2.zip)\
[Air Plugin Android 2.0.1](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/android/air/Air_Plugin_Android_2.0.1.zip)\
[Air Plugin Android 2.0](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/android/air/Air_Plugin_Android_2.0.zip)\
[Air Plugin Android 1.1](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/android/air/Air_Plugin_Android_v1.1.zip)\
[Air Plugin Android 1.0](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/android/air/Air_Plugin_v1.zip)<br>

Latest IOS Version

[Air Plugin iOS v5.0](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/ios/air/Air_Plugin_iOS_v5.0.zip)

\
Previous IOS Versions<br>

[Air Plugin iOS v4.1.1](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/ios/air/Air_Plugin_iOS_v4.1.1.zip)\
[Air Plugin iOS v4.1.0](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/ios/air/Air_Plugin_iOS_v4.1.zip)\
[Air Plugin iOS v4.0](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/ios/air/Air_Plugin_iOS_v4.0.zip)\
[Air Plugin iOS v3.1](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/ios/air/Air_Plugin_iOS_v3.1.zip)\
[Air Plugin iOS v2.1](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/ios/air/Air_Plugin_iOS_v2.1.zip)\
[Air Plugin iOS v2.0](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/ios/air/Air_Plugin_iOS_v2.0.zip)\
[Air Plugin iOS v1.2](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/ios/air/Air_Plugin_iOS_v1.2.zip)\
[Air Plugin iOS v1.1](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/ios/air/Air_Plugin_iOS_v1.1.zip)<br>

Retrieved from "<https://wiki.pokkt.com/index.php?title=Adobe_Air_SDK_Download&oldid=656>"


# Marmalade SDK

From POKKT DOCUMENTATION

Jump to: [navigation](broken://pages/CE8qKFaWGQc36JNvxRLa), [search](broken://pages/CE8qKFaWGQc36JNvxRLa)

Last Update: 24th February, 2017

***

AndroidiOS

Latest Android Version

[Marmalade Android v6.0](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/marmalade/Marmalade_Android_v6.0.zip)

\
Previous Android Versions<br>

[Marmalade Android v5.0](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/android/marmalade/Marmalade_Android_v5.0.zip)\
[Marmalade Android v4.1.1](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/android/marmalade/Marmalade_Android_v4.1.1.zip)\
[Marmalade Android v4.1.0](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/android/marmalade/Marmalade_Android_v4.1.zip)\
[Marmalade Android v4.0](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/android/marmalade/Marmalade_Android_v4.0.zip)\
[Marmalade Android v3.1.0](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/android/marmalade/Marmalade_Android_v3.1.0.zip)\
[Marmalade Android v3.0.0](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/android/marmalade/Marmalade_Android_v3.0.0.zip)\
[Marmalade Android v2.0.4](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/android/marmalade/Marmalade_Android_v2.0.4.zip)\
[Marmalade Android v2.0.3](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/android/marmalade/Marmalade_Android_v2.0.3.zip)\
[Marmalade Android v2.0.2](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/android/marmalade/Marmalade_Android_v2.0.2.zip)\
[Marmalade Android v2.0.1](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/android/marmalade/Marmalade_Android_v2.0.1.zip)\
[Marmalade Android v2.0](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/android/marmalade/Marmalade_Android_v2.0.zip)\
[Marmalade Android v1.0](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/android/marmalade/Marmalade_Android_v1.0.zip)<br>

Latest IOS Version

[Marmalade iOS v6.0](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/marmalade/Marmalade_Android_v6.0.zip)

\
Previous IOS Versions<br>

[Marmalade iOS v5.0](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/ios/marmalade/Marmalade_iOS_v5.0.zip)\
[Marmalade iOS v4.1.1](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/ios/marmalade/Marmalade_iOS_v4.1.1.zip)\
[Marmalade iOS v4.1.0](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/ios/marmalade/Marmalade_iOS_v4.1.zip)\
[Marmalade iOS v4.0](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/ios/marmalade/Marmalade_iOS_v4.0.zip)\
[Marmalade iOS v3.1](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/ios/marmalade/Marmalade_iOS_v3.1.zip)\
[Marmalade iOS v2.1](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/ios/marmalade/Marmalade_iOS_v2.1.zip)\
[Marmalade iOS v2.0](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/ios/marmalade/Marmalade_iOS_v2.0.zip)\
[Marmalade iOS v1.0](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/ios/marmalade/Marmalade_iOS_v1.0.zip)<br>

Retrieved from "<https://wiki.pokkt.com/index.php?title=Marmalade_SDK_Download&oldid=658>"


# Shiva3d SDK

From POKKT DOCUMENTATION

Jump to: [navigation](broken://pages/jnqon5ebtwPuL1IwZMdn), [search](broken://pages/jnqon5ebtwPuL1IwZMdn)

Last Update: Oct 15, 2015

***

AndroidiOS

Latest Android Version

[Shiva3d v4.1.1 Android](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/android/shiva3d/shiva3d_v4.1.1_Android.zip)

\
Previous Android Versions<br>

[Shiva3d v4.1.0 Android](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/android/shiva3d/shiva3d_v4.1_Android.zip)\
[Shiva3d v4.0 Android](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/android/shiva3d/shiva3d_v4.0_Android.zip)\
[Shiva3d v3.1.0 Android](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/android/shiva3d/shiva3d_v3.1.0_Android.zip)\
[Shiva3d v3.0.0 Android](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/android/shiva3d/shiva3d_v3.0.0_Android.zip)\
[Shiva3d v1.0.4 Android](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/android/shiva3d/shiva3d_v1.0.4_Android.zip)\
[Shiva3d v1.0.3 Android](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/android/shiva3d/shiva3d_v1.0.3_Android.zip)\
[Shiva3d v1.0.2 Android](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/android/shiva3d/shiva3d_v1.0.2_Android.zip)\
[Shiva3d v1.0.1 Android](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/android/shiva3d/shiva3d_v1.0.1_Android.zip)\
[Shiva3d v1.0 Android](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/android/shiva3d/shiva3d_v1.0_Android.zip)<br>

Latest IOS Version

[Shiva3d iOS v4.1.1](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/ios/shiva3d/shiva3d_v4.1.1_iOS.zip)

\
Previous IOS Versions<br>

[Shiva3d iOS v4.1.0](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/ios/shiva3d/shiva3d_v4.1_iOS.zip)\
[Shiva3d iOS v4.0](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/ios/shiva3d/shiva3d_v4.0_iOS.zip)\
[Shiva3d iOS v3.0](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/ios/shiva3d/shiva3d_v3.0_iOS.zip)\
[Shiva3d iOS v1.1](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/ios/shiva3d/shiva3d_v1.1_iOS.zip)\
[Shiva3d iOS v1.0](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/ios/shiva3d/shiva3d_v1.0_iOS.zip)<br>

Retrieved from "<https://wiki.pokkt.com/index.php?title=Shiva3d_SDK_Download&oldid=659>"


# Xamarin SDK

From POKKT DOCUMENTATION

Jump to: [navigation](broken://pages/5uVyE3KhlEmGffEONj3r), [search](broken://pages/5uVyE3KhlEmGffEONj3r)

Last Update: 3rd April, 2019

***

| Latest Version                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [Xamarin v7.5.1](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/xamarin/Pokkt_Xamarin_Plugin_v7.5.1.zip)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| Previous Versions                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| <p><a href="https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/xamarin/Pokkt_Xamarin_Plugin_v7.4.0.zip">Xamarin v7.4.0</a><br><a href="https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/xamarin/Pokkt_Xamarin_Plugin_v7.2.0.zip">Xamarin v7.2.0</a><br><a href="https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/xamarin/Pokkt_Xamarin_Plugin_v7.1.zip">Xamarin v7.1</a><br><a href="https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/xamarin/Pokkt_Xamarin_Plugin_v7.0.zip">Xamarin v7.0</a><br><a href="https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/xamarin/Pokkt_Xamarin_Plugin_v6.2.2.zip">Xamarin v6.2.2</a><br><a href="https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/xamarin/Pokkt_Xamarin_Plugin_v6.2.1.zip">Xamarin v6.2.1</a><br><a href="https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/xamarin/Pokkt_Xamarin_Plugin_v6.2.zip">Xamarin v6.2</a><br><a href="https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/xamarin/Pokkt_Xamarin_Plugin_v6.1.zip">Xamarin v6.1</a><br></p> |

AndroidiOS

Archived Versions<br>

[Xamarin Android v6.0.1](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/android/xamarin/Pokkt_SDK_6.0.1_Xamarin_Android.zip)\
[Xamarin Android v6.0](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/android/xamarin/PokktSDK_6.0_Xamarin_Android.zip)\
[Xamarin Android v5.0](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/android/xamarin/Xamarin_Android_v5.0.zip)\
[Xamarin Android v4.1.1](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/android/xamarin/Xamarin_Android_v4.1.1.zip)\
[Xamarin Android v4.1.0](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/android/xamarin/Xamarin_Android_v4.1.zip)\
[Xamarin Android v4.0](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/android/xamarin/Xamarin_Android_v4.0.zip)\
[Xamarin Android v3.1](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/android/xamarin/Xamarin_Android_v3.1.zip)\
[Xamarin Android v3.0](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/android/xamarin/Xamarin_Android_v3.0.zip)\
[Xamarin Android v1.0](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/android/xamarin/Xamarin_Android_v1.0.zip)<br>

Archived Versions<br>

[Xamarin v6.0.1](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/ios/xamarin/Pokkt_SDK_6.0.1_Xamarin_iOS.zip)\
[Xamarin v6.0](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/ios/xamarin/PokktSDK_6.0_Xamarin_iOS.zip)\
[Xamarin v5.0](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/ios/xamarin/Xamarin_IOS_v5.0.zip)\
[Xamarin v4.1.1](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/ios/xamarin/Xamarin_iOS_v4.1.1.zip)\
[Xamarin v4.1.0](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/ios/xamarin/Xamarin_iOS_v4.1.zip)\
[Xamarin v4.0](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/ios/xamarin/Xamarin_iOS_v4.0.zip)\
[Xamarin v3.1](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/ios/xamarin/Xamarin_iOS_v3.1.zip)\
[Xamarin v3.0](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/ios/xamarin/Xamarin_iOS_v3.0.zip)<br>

Retrieved from "<https://wiki.pokkt.com/index.php?title=Xamarin_SDK_Download&oldid=2753>"


# Cordova SDK

From POKKT DOCUMENTATION

Jump to: [navigation](broken://pages/cCLGpKgQMmgwa8YSWUog), [search](broken://pages/cCLGpKgQMmgwa8YSWUog)

Last Update: 22nd November, 2019

***

| Latest Version                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [Cordova/Phonegap v7.6.0](https://pokktdocumentation.s3-ap-southeast-1.amazonaws.com/PhoneGap/Pokkt_Cordova_Plugin_7.6.0.zip)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| Previous Versions                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| <p><a href="https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/PhoneGap/Pokkt_Cordova_Plugin_7.5.1.zip">Cordova/Phonegap v7.5.1</a><br><a href="https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/PhoneGap/Pokkt_Cordova_Plugin_7.4.0.zip">Cordova/Phonegap v7.4.0</a><br><a href="https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/PhoneGap/Pokkt_Cordova_Plugin_7.2.0.zip">Cordova/Phonegap v7.2.0</a><br><a href="https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/PhoneGap/Pokkt_Cordova_Plugin_7.1.0.zip">Cordova/Phonegap v7.1.0</a><br><a href="https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/PhoneGap/Pokkt_Cordova_Plugin_7.0.1.zip">Cordova/Phonegap v7.0.1</a><br><a href="https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/PhoneGap/Pokkt_Cordova_Plugin_7.0.zip">Cordova/Phonegap v7.0</a><br><a href="https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/PhoneGap/Pokkt_Cordova_Plugin_6.2.2.zip">Cordova/Phonegap v6.2.2</a><br><a href="https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/PhoneGap/Pokkt_Cordova_Plugin_6.2.1.zip">Cordova/Phonegap v6.2.1</a><br><a href="https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/PhoneGap/Pokkt_Cordova_Plugin_6.2.zip">Cordova/Phonegap v6.2</a><br><a href="https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/PhoneGap/Pokkt_Cordova_Plugin_6.1.zip">Cordova/Phonegap v6.1</a><br></p> |

AndroidiOS

Archived Versions<br>

[Phonegap v6.0.2](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/PhoneGap/Pokkt_PhoneGap_Plugin_6.0.2.zip)\
[Phonegap v6.0.1](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/PhoneGap/Pokkt_PhoneGap_Plugin_6.0.1.zip)\
[Phonegap v6.0](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/PhoneGap/Pokkt_PhoneGap_Plugin_6.0.zip)\
[Phonegap v5.0](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/PhoneGap/Pokkt_PhoneGap_Plugin_5.0.zip)\
[Phonegap v4.1.1](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/PhoneGap/PhoneGap_v4.1.1.zip)\
[Phonegap v4.1.0](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/PhoneGap/PhoneGap_v4.1.zip)\
[Phonegap v4.0](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/PhoneGap/PhoneGap_v4.0.zip)\
[Phonegap v3.1](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/PhoneGap/PhoneGap_v3.1.zip)\
[Phonegap v3.0](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/PhoneGap/PhoneGap_v3.0.zip)\
[Phonegap v1.0](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/PhoneGap/PhoneGap_v1.0.zip)<br>

Archived Versions<br>

[Phonegap v6.0.2](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/PhoneGap/Pokkt_PhoneGap_Plugin_6.0.2.zip)\
[Phonegap v6.0.1](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/PhoneGap/Pokkt_PhoneGap_Plugin_6.0.1.zip)\
[Phonegap v6.0](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/PhoneGap/Pokkt_PhoneGap_Plugin_6.0.zip)\
[Phonegap v5.0](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/PhoneGap/Pokkt_PhoneGap_Plugin_5.0.zip)\
[Phonegap v4.1.1](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/PhoneGap/PhoneGap_v4.1.1.zip)\
[Phonegap v4.1.0](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/PhoneGap/PhoneGap_v4.1.zip)\
[Phonegap v4.0](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/PhoneGap/PhoneGap_v4.0.zip)\
[Phonegap v3.1](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/PhoneGap/PhoneGap_v3.1.zip)\
[Phonegap v1.0](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/PhoneGap/PhoneGap_v1.0.zip)<br>

Retrieved from "<https://wiki.pokkt.com/index.php?title=Cordova_SDK_Download&oldid=2861>"


# Corona SDK

From POKKT DOCUMENTATION

Jump to: [navigation](broken://pages/4KDdthwpi73u2oM3dFCo), [search](broken://pages/4KDdthwpi73u2oM3dFCo)

Last Update: 22nd November, 2019

***

| Latest Version                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [Corona v7.6.0](https://pokktdocumentation.s3-ap-southeast-1.amazonaws.com/corona/Pokkt_Corona_Plugin_7.6.0.zip)                                                                                                                                                                                                                                                                                                                                                                                                                    |
| Previous Versions                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| <p><a href="https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/corona/Pokkt_Corona_Plugin_7.5.1.zip">Corona v7.5.1</a><br><a href="https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/corona/Pokkt_Corona_Plugin_7.4.0.zip">Corona v7.4.0</a><br><a href="https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/corona/Pokkt_Corona_Plugin_7.2.0.zip">Corona v7.2.0</a><br><a href="https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/corona/Pokkt_Corona_Plugin_7.1.0.zip">Corona v7.1.0</a><br></p> |

Retrieved from "<https://wiki.pokkt.com/index.php?title=Corona_SDK_Download&oldid=2862>"


# React SDK

From POKKT DOCUMENTATION

Jump to: [navigation](broken://pages/KlcNdvahawU5DDVqUEha), [search](broken://pages/KlcNdvahawU5DDVqUEha)

Last Update: 15th November, 2021

***

| Latest Version                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [React v8.1.0](https://pokktdocumentation.s3.ap-southeast-1.amazonaws.com/reactnative/Pokkt_React_Plugin_8.1.0.zip)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| Previous Versions                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| <p><a href="https://pokktdocumentation.s3.ap-southeast-1.amazonaws.com/reactnative/Pokkt_React_Plugin_8.0.1.zip">React v8.0.1</a><br><a href="https://pokktdocumentation.s3-ap-southeast-1.amazonaws.com/reactnative/Pokkt_React_Plugin_8.0.0.zip">React v8.0.0</a><br><a href="https://pokktdocumentation.s3-ap-southeast-1.amazonaws.com/reactnative/Pokkt_React_Plugin_7.6.0.zip">React v7.6.0</a><br><a href="https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/reactnative/Pokkt_React_Plugin_7.5.1.zip">React v7.5.1</a><br><a href="https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/reactnative/Pokkt_React_Plugin_7.4.0.zip">React v7.4.0</a><br><a href="https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/reactnative/Pokkt_React_Plugin_7.2.0.zip">React v7.2.0</a></p> |

Retrieved from "<https://wiki.pokkt.com/index.php?title=React_SDK_Download&oldid=3215>"


# Titanium SDK

From POKKT DOCUMENTATION

Jump to: [navigation](broken://pages/PLsqL1wvqjScQKrq9664), [search](broken://pages/PLsqL1wvqjScQKrq9664)

Last Update: 18th November, 2016

***

AndroidiOS

Latest Android Version

[Titanium v5.0](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/android/titanium/Titanium_Android_v5.0.zip)

\
Previous Android Versions<br>

[Titanium v4.1.0](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/android/titanium/Titanium_Android_v4.1.zip)\
[Titanium v4.0](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/android/titanium/Titanium_Android_v4.0.zip)\
[Titanium v3.1](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/android/titanium/Titanium_Android_v3.1.0.zip)<br>

Latest IOS Version

[Titanium v5.0](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/ios/titanium/Titanium_iOS_v5.0.zip)

\
Previous IOS Versions<br>

[Titanium v4.1](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/ios/titanium/Titanium_iOS_v4.1.zip)\
[Titanium v4.0](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/ios/titanium/Titanium_iOS_v4.0.zip)\
[Titanium v3.1](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/ios/titanium/Titanium_iOS_v3.1.0.zip)<br>

Retrieved from "<https://wiki.pokkt.com/index.php?title=Titanium_SDK_Download&oldid=664>"


# Unreal Engine SDK

From POKKT DOCUMENTATION

Jump to: [navigation](broken://pages/pN8pBKYREF4vqbsAdcuT), [search](broken://pages/pN8pBKYREF4vqbsAdcuT)

Last Update: 22nd November, 2019

***

| Latest Version                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [UE\_4.15 Plugin\_v7.6.0](https://pokktdocumentation.s3-ap-southeast-1.amazonaws.com/unrealengine/UE_4.15_Pokkt_Plugin_7.6.0.zip)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| Previous Versions                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| <p><a href="https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/unrealengine/UE_4.15_Pokkt_Plugin_7.5.1.zip">UE\_4.15 Plugin\_v7.5.1</a> <a href="https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/unrealengine/UE_4.15_Pokkt_Plugin_7.4.0.zip">UE\_4.15 Plugin\_v7.4.0</a><br><a href="https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/unrealengine/UE_4.15_Pokkt_Plugin_7.2.0.zip">UE\_4.15 Plugin\_v7.2.0</a><br><a href="https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/unrealengine/UE_4.15_Pokkt_Plugin_7.1.0.zip">UE\_4.15 Plugin\_v7.1.0</a><br><a href="https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/unrealengine/UE_4.15_Pokkt_Plugin_7.zip">UE\_4.15 Plugin\_v7</a></p> |

AndroidiOS

Archived Versions<br>

[UE\_4.15 Plugin\_v6](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/unrealengine/UE_4.15_Pokkt_Plugin_6.0.2_Android.zip)

Archived Versions<br>

[UE\_4.15 Plugin\_v6](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/unrealengine/UE_4.15_Pokkt_Plugin_6.zip)

Retrieved from "<https://wiki.pokkt.com/index.php?title=UE_SDK_Download&oldid=2860>"


# Pokkt Mediation

From POKKT DOCUMENTATION

Jump to: [navigation](broken://pages/A84Q03YTtxZxFWP2Uzja), [search](broken://pages/A84Q03YTtxZxFWP2Uzja)

Last Update: 5th April, 2019

***

AndroidiOS

Latest Android Version

[Android Native Mediation (Latest)](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/mediation_downloads/Android_Mediation_v7.0_for_PokktSDK_7.5.1.zip)\
[Android AIR Mediation (with Pokkt SDK 4.1)](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/mediation_downloads/Android_AIR_Mediation.zip)\
[Android Marmalade Mediation (with Pokkt SDK 4.1)](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/mediation_downloads/Android_Marmalade_Mediation.zip)\
[Android Xamarin Mediation (with Pokkt SDK 4.1)](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/mediation_downloads/Android_Xamarin_Mediation.zip)<br>

Latest IOS Version

[iOS Native Mediation (Latest)](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/mediation_downloads/iOS_Mediation_v7.0_for_PokktSDK_7.5.0.zip)\
[iOS AIR Mediation (with Pokkt SDK 4.1)](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/mediation_downloads/iOS_AIR_Mediation.zip)\
[iOS Marmalade Mediation (with Pokkt SDK 4.1)](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/mediation_downloads/iOS_Marmalade_Mediation.zip)\
[iOS Xamarin Mediation (with Pokkt SDK 4.1)](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/mediation_downloads/iOS_Xamarin_Mediation.zip)<br>

Retrieved from "<https://wiki.pokkt.com/index.php?title=Pokkt_Mediation_Download&oldid=2787>"


# Admob Wrapper

From POKKT DOCUMENTATION

Jump to: [navigation](broken://pages/TErNk3fCXeq4NZsDH0yf), [search](broken://pages/TErNk3fCXeq4NZsDH0yf)

Last Update: 5th February, 2020

***

AndroidiOS

Latest Android Version

[AdMob Wrapper Android v7.6.1](https://pokktdocumentation.s3-ap-southeast-1.amazonaws.com/wrappers/admob/Pokkt_AdMob_Wrapper_Android_v7.6.1.zip)

\
Previous Android Versions<br>

[AdMob Wrapper Android v7.0](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/wrappers/admob/Pokkt_AdMob_Wrapper_Android_v7.0_for_7.5.1.zip)\
[AdMob Wrapper Android v6.0](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/wrappers/admob/Pokkt_AdMob_Wrapper_Android_v6.0+for+7.4.0.zip)\
[AdMob Wrapper Android v5.0](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/wrappers/admob/Pokkt_AdMob_Wrapper_Android_v5.0+for+7.2.0.zip)\
[AdMob Wrapper Android v4.0](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/wrappers/admob/Pokkt_AdMob_Wrapper_Android_v4.0.zip)\
[AdMob Wrapper Android v3.0](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/wrappers/admob/Pokkt_AdMob_Wrapper_Android_v3.0.zip)\
[AdMob Wrapper Android v2.0](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/wrappers/admob/Pokkt_AdMob_Wrapper_Android_v2.0.zip)

Latest iOS Version

[AdMob Wrapper iOS v7.0](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/wrappers/admob/Pokkt_AdMob_Wrapper_iOS_v7.0+for+7.5.0.zip)

\
Previous iOS Versions<br>

[AdMob Wrapper iOS v6.0](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/wrappers/admob/Pokkt_AdMob_Wrapper_iOS_v6.0+for+7.4.0.zip)\
[AdMob Wrapper iOS v5.0](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/wrappers/admob/Pokkt_AdMob_Wrapper_iOS_v5.0+for+7.2.0.zip)\
[AdMob Wrapper iOS v4.0](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/wrappers/admob/Pokkt_AdMob_Wrapper_iOS_v4.0.zip)\
[AdMob Wrapper iOS v3.1](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/wrappers/admob/Pokkt_AdMob_Wrapper_iOS_v3.1.zip)\
[AdMob Wrapper iOS v3.0](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/wrappers/admob/Pokkt_AdMob_Wrapper_iOS_v3.0.zip)\
[AdMob Wrapper iOS v2.0](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/wrappers/admob/Pokkt_AdMob_Wrapper_iOS_v2.0.zip)<br>

Retrieved from "<https://wiki.pokkt.com/index.php?title=Admob_Wrapper_Download&oldid=2894>"


# Mopub Wrapper

From POKKT DOCUMENTATION

Jump to: [navigation](broken://pages/QofwBcHnk64eej1gIQKk), [search](broken://pages/QofwBcHnk64eej1gIQKk)

Last Update: 5th February, 2020

***

AndroidiOS

Latest Android Version

[MoPub Wrapper Android v7.6.1](https://pokktdocumentation.s3-ap-southeast-1.amazonaws.com/wrappers/mopub/Pokkt_MoPub_Wrapper_Android_v7.6.1.zip)

\
Previous Android Versions<br>

[MoPub Wrapper Android v7.0](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/wrappers/mopub/Pokkt_MoPub_Wrapper_Android_v7.0_for_7.5.1.zip)\
[MoPub Wrapper Android v6.0](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/wrappers/mopub/Pokkt_MoPub_Wrapper_Android_v6.0+for+7.4.0.zip)\
[MoPub Wrapper Android v5.0](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/wrappers/mopub/Pokkt_MoPub_Wrapper_Android_v5.0+for+7.2.0.zip)\
[MoPub Wrapper Android v4.0](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/wrappers/mopub/Pokkt_MoPub_Wrapper_Android_v4.0.zip)\
[MoPub Wrapper Android v3.0](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/wrappers/mopub/Pokkt_MoPub_Wrapper_Android_v3.0.zip)\
[MoPub Wrapper Android v2.0](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/wrappers/admob/Pokkt_MoPub_Wrapper_Android_v2.0.zip)

Latest iOS Version

[MoPub Wrapper iOS v7.0](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/wrappers/mopub/Pokkt_MoPub_Wrapper_iOS_v7.0+for+7.5.0.zip)

\
Previous iOS Versions<br>

[MoPub Wrapper iOS v6.0](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/wrappers/mopub/Pokkt_MoPub_Wrapper_iOS_v6.0+for+7.4.0.zip)\
[MoPub Wrapper iOS v5.0](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/wrappers/mopub/Pokkt_MoPub_Wrapper_iOS_v5.0+for+7.2.0.zip)\
[MoPub Wrapper iOS v4.0](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/wrappers/mopub/Pokkt_MoPub_Wrapper_iOS_v4.0.zip)\
[MoPub Wrapper iOS v3.1](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/wrappers/mopub/Pokkt_MoPub_Wrapper_iOS_v3.1.zip)\
[MoPub Wrapper iOS v3.0](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/wrappers/mopub/Pokkt_MoPub_Wrapper_iOS_v3.0.zip)\
[MoPub Wrapper iOS v2.0](https://s3-ap-southeast-1.amazonaws.com/pokktdocumentation/wrappers/admob/Pokkt_MoPub_Wrapper_iOS_v2.0.zip)<br>

Retrieved from "<https://wiki.pokkt.com/index.php?title=Mopub_Wrapper_Download&oldid=2895>"


