# capacitor-admob-ads

Capacitor plugin to display admob ads in your Ionic Apps

API for Banner, Interstitial, Rewarded Interstitial, Rewarded Video and Native Admob ads are available.


## Install

```bash
npm install capacitor-admob-ads
npx cap sync
```
--------------------
## What is AdMob

Google AdMob makes it easy for developers to earn money from their mobile apps with high-quality ads. AdMob maximizes the value of every impression by combining global advertiser demand, innovative ad formats, and advanced app monetization technology.

### Why show ads?
Showing ads to app users allows you to create a sustainable source of revenue to help grow your business while you focus on building and developing quality apps. Advertisers get to reach new customers, and users can discover relevant products and services – while enjoying apps for free. So it’s a win for everyone – developers, users, and advertisers.

-----------------------
## Supported Platform

* Android
--------------------
## Android Configuration

### Update Manifest

Open your android/app/src/Android/AndroidManifest.xml file and add this meta-data line at the right spot (and replace the value by the actual App ID of your app):

```xml
<application>
  <!-- this line needs to be added (replace the value!) -->
  <meta-data android:name="com.google.android.gms.ads.APPLICATION_ID" android:value="ca-app-pub-xxxxxxxxxxxxxxxx~yyyyyyyyyy" />  
</application>
```

## API

> **ALWAYS USE TEST ADS WHILE DEVELOPING, TESTING, DEBUGGING.**

### Banner Ad

API to display banner ads in your apps. 
> **By default, banner ad sits at the top or bottom of the screen (based on your ad position). You should add spacing (padding or margin) to your app content to avoid the overlap. Below you can find the size of each banner ad.**

| Size in px (WxH)         | Ad Size Name                                                        |
| ------------- | ----------------------------------------------------------- |
| 320x50 | BANNER|
| 320x100 | LARGE_BANNER|
| 300x250 | MEDIUM_RECTANGLE|
| 468x60 | FULL_BANNER|
| 728x90 | LEADERBOARD|
--------------------

* [`showBannerAd(...)`](#showbannerad)
* [`hideBannerAd()`](#hidebannerad)
* [`resumeBannerAd()`](#resumebannerad)
* [`removeBannerAd()`](#removebannerad)
* [`addListener('bannerAdOpened', ...)`](#addListener('bannerAdOpened'))
* [`addListener('bannerAdClicked', ...)`](#addlistenerbanneradclicked)
* [`addListener('bannerAdImpression', ...)`](#addlistenerbanneradimpression)
* [`addListener('bannerAdClosed', ...)`](#addlistenerbanneradclosed)
* [`Banner Ad Example`](#banner-ad-example)

### showBannerAd(...)
To show a banner ad call this method with the below options.
```typescript
showBannerAd(options: BannerAdOptions) => Promise<void>
```

| Param         | Type                                                        | Description |
| ------------- | ----------------------------------------------------------- |------|
| **`options`** | <code><a href="#banneradoptions">BannerAdOptions</a></code> |Banned Ad Options|



#### BannerAdOptions

| Prop             | Type                                                      |Description       |
| ---------------- | --------------------------------------------------------- |-----------|
| **`adId`**       | <code>string</code>                                       |Banner ad ID that you get from [Admob Console](https://apps.admob.com/)|
| **`isTesting`**  | <code>boolean</code>                                      |Set to true while testing/debugging. Set to false for production apps
| **`adSize`**     | <code><a href="#bannersize">BannerSize</a></code>         | Banner ad size
| **`adPosition`** | <code><a href="#bannerposition">BannerPosition</a></code> | Banner ad position

#### BannerSize

| Members           | Value                           |
| ----------------- | ------------------------------- |
| **`BANNER`**     | <code>'BANNER'</code>           |
| **`LARGE_BANNER`**       | <code>'LARGE_BANNER'</code>     |
| **`MEDIUM_RECTANGLE`**      | <code>'MEDIUM_RECTANGLE'</code> |
| **`FULL_BANNER`**        | <code>'FULL_BANNER'</code>      |
| **`LEADERBOARD`** | <code>'LEADERBOARD'</code>      |


#### BannerPosition

| Members      | Value                 |
| ------------ | --------------------- |
| **`TOP`**    | <code>'top'</code>    |
| **`BOTTOM`** | <code>'bottom'</code> |

------------------

### hideBannerAd()
To hide a banner ad that is currently shown.
```typescript
hideBannerAd() => Promise<void>
```

--------------------


### resumeBannerAd()
To resume a banner ad that is currently hidden.
```typescript
resumeBannerAd() => Promise<void>
```

--------------------


### removeBannerAd()
To remove the banner ad that is currently shown.
```typescript
removeBannerAd() => Promise<void>
```

--------------------


### addListener('bannerAdOpened', ...)
Triggers when a banner ad is opened.
```typescript
addListener(eventName: 'bannerAdOpened', listenerFunc: () => void) => Promise<PluginListenerHandle> & PluginListenerHandle
```

| Param              | Type                          |
| ------------------ | ----------------------------- |
| **`eventName`**    | <code>'bannerAdOpened'</code> |
| **`listenerFunc`** | <code>() =&gt; void</code>    |

**Returns:** <code>Promise&lt;<a href="#pluginlistenerhandle">PluginListenerHandle</a>&gt; & <a href="#pluginlistenerhandle">PluginListenerHandle</a></code>

--------------------


### addListener('bannerAdClicked', ...)
Triggers when a banner ad is clicked.
```typescript
addListener(eventName: 'bannerAdClicked', listenerFunc: () => void) => Promise<PluginListenerHandle> & PluginListenerHandle
```

| Param              | Type                           |
| ------------------ | ------------------------------ |
| **`eventName`**    | <code>'bannerAdClicked'</code> |
| **`listenerFunc`** | <code>() =&gt; void</code>     |

**Returns:** <code>Promise&lt;<a href="#pluginlistenerhandle">PluginListenerHandle</a>&gt; & <a href="#pluginlistenerhandle">PluginListenerHandle</a></code>

--------------------


### addListener('bannerAdImpression', ...)
Triggers when a banner ad registers an impression.
```typescript
addListener(eventName: 'bannerAdImpression', listenerFunc: () => void) => Promise<PluginListenerHandle> & PluginListenerHandle
```

| Param              | Type                              |
| ------------------ | --------------------------------- |
| **`eventName`**    | <code>'bannerAdImpression'</code> |
| **`listenerFunc`** | <code>() =&gt; void</code>        |

**Returns:** <code>Promise&lt;<a href="#pluginlistenerhandle">PluginListenerHandle</a>&gt; & <a href="#pluginlistenerhandle">PluginListenerHandle</a></code>

--------------------


### addListener('bannerAdClosed', ...)
Triggers when a banner ad is closed.
```typescript
addListener(eventName: 'bannerAdClosed', listenerFunc: () => void) => Promise<PluginListenerHandle> & PluginListenerHandle
```

| Param              | Type                          |
| ------------------ | ----------------------------- |
| **`eventName`**    | <code>'bannerAdClosed'</code> |
| **`listenerFunc`** | <code>() =&gt; void</code>    |

**Returns:** <code>Promise&lt;<a href="#pluginlistenerhandle">PluginListenerHandle</a>&gt; & <a href="#pluginlistenerhandle">PluginListenerHandle</a></code>

--------------------

### Banner Ad Example
```ts
import { AdmobAds, BannerPosition, BannerSize } from "capacitor-admob-ads";

// To show a banner ad
AdmobAds.showBannerAd({ adId: "ca-app-pub-3940256099942544/6300978111", isTesting: true, adSize: BannerSize.BANNER, adPosition: BannerPosition.BOTTOM }).then(() => {
   console.log('Banner Ad Shown');
}).catch(err => {
   console.log(err.message);
});

// To hide a banner ad
 AdmobAds.hideBannerAd().then(() => {
   console.log('Banner Ad Hidden')
}).catch(err => {
   console.log(err.message);
});

// To resume a hidden banner ad
AdmobAds.resumeBannerAd().then(() => {
   console.log('Banner Ad Resumed');
}).catch(err => {
   console.log(err.message);
});

// To remove a banner ad
AdmobAds.removeBannerAd().then(() => {
   console.log('Banner Ad Removed');
}).catch(err => {
   console.log(err.message);
});

// Event Listeners
AdmobAds.addListener("bannerAdOpened", () => {
   console.log('Banner Ad Opened');
});

AdmobAds.addListener("bannerAdClicked", () => {
   console.log('Banner Ad Clicked');
});

AdmobAds.addListener("bannerAdImpression", () => {
   console.log('Banner Ad Impression');
});

AdmobAds.addListener("bannerAdClosed", () => {
   console.log('Banner Ad Closed');
});
```
------------------
### Interstitial Ad
API to display interstitial ads in your apps.

* [`loadInterstitialAd(...)`](#loadinterstitialad)
* [`showInterstitialAd()`](#showinterstitialad)
* [`addListener('interstitialAdClicked', ...)`](#addlistenerinterstitialadclicked)
* [`addListener('interstitialAdDismissed', ...)`](#addlistenerinterstitialaddismissed)
* [`addListener('interstitialAdFailedToShow', ...)`](#addlistenerinterstitialadfailedtoshow)
* [`addListener('interstitialAdImpression', ...)`](#addlistenerinterstitialadimpression)
* [`addListener('interstitialAdShowed', ...)`](#addlistenerinterstitialadshowed)
* [`Interstitial Ad Example`](#interstitial-ad-example)

### loadInterstitialAd(...)
To load an interstitial ad call this method with the below options (You have to load an ad before showing it).
```typescript
loadInterstitialAd(options: InterstitialAdOptions) => Promise<void>
```

| Param         | Type                                                                    |Description|
| ------------- | ----------------------------------------------------------------------- |-----------|
| **`options`** | <code><a href="#interstitialadoptions">InterstitialAdOptions</a></code> |Interstitial Ad Options

#### InterstitialAdOptions

| Prop            | Type                 |Description|
| --------------- | -------------------- |-----|
| **`adId`**      | <code>string</code>  |Interstitial ad ID that you get from [Admob Console](https://apps.admob.com/)|
| **`isTesting`** | <code>boolean</code> |Set to true while testing/debugging. Set to false for production apps
--------------------


### showInterstitialAd()
To show an already loaded interstitial ad use this method.
```typescript
showInterstitialAd() => Promise<void>
```

--------------------


### addListener('interstitialAdClicked', ...)
Triggers when an interstitial ad is clicked.
```typescript
addListener(eventName: 'interstitialAdClicked', listenerFunc: () => void) => Promise<PluginListenerHandle> & PluginListenerHandle
```

| Param              | Type                                 |
| ------------------ | ------------------------------------ |
| **`eventName`**    | <code>'interstitialAdClicked'</code> |
| **`listenerFunc`** | <code>() =&gt; void</code>           |

**Returns:** <code>Promise&lt;<a href="#pluginlistenerhandle">PluginListenerHandle</a>&gt; & <a href="#pluginlistenerhandle">PluginListenerHandle</a></code>

--------------------


### addListener('interstitialAdDismissed', ...)
Triggers when an interstitial ad is dismissed.
```typescript
addListener(eventName: 'interstitialAdDismissed', listenerFunc: () => void) => Promise<PluginListenerHandle> & PluginListenerHandle
```

| Param              | Type                                   |
| ------------------ | -------------------------------------- |
| **`eventName`**    | <code>'interstitialAdDismissed'</code> |
| **`listenerFunc`** | <code>() =&gt; void</code>             |

**Returns:** <code>Promise&lt;<a href="#pluginlistenerhandle">PluginListenerHandle</a>&gt; & <a href="#pluginlistenerhandle">PluginListenerHandle</a></code>

--------------------


### addListener('interstitialAdFailedToShow', ...)
Triggers when an interstitial ad is failed to show.
```typescript
addListener(eventName: 'interstitialAdFailedToShow', listenerFunc: (error: { message: string; }) => void) => Promise<PluginListenerHandle> & PluginListenerHandle
```

| Param              | Type                                                  |
| ------------------ | ----------------------------------------------------- |
| **`eventName`**    | <code>'interstitialAdFailedToShow'</code>             |
| **`listenerFunc`** | <code>(error: { message: string; }) =&gt; void</code> |

**Returns:** <code>Promise&lt;<a href="#pluginlistenerhandle">PluginListenerHandle</a>&gt; & <a href="#pluginlistenerhandle">PluginListenerHandle</a></code>

--------------------


### addListener('interstitialAdImpression', ...)
Triggers when an interstitial ad registers impression.
```typescript
addListener(eventName: 'interstitialAdImpression', listenerFunc: () => void) => Promise<PluginListenerHandle> & PluginListenerHandle
```

| Param              | Type                                    |
| ------------------ | --------------------------------------- |
| **`eventName`**    | <code>'interstitialAdImpression'</code> |
| **`listenerFunc`** | <code>() =&gt; void</code>              |

**Returns:** <code>Promise&lt;<a href="#pluginlistenerhandle">PluginListenerHandle</a>&gt; & <a href="#pluginlistenerhandle">PluginListenerHandle</a></code>

--------------------


### addListener('interstitialAdShowed', ...)
Triggers when an interstitial ad is showed.
```typescript
addListener(eventName: 'interstitialAdShowed', listenerFunc: () => void) => Promise<PluginListenerHandle> & PluginListenerHandle
```

| Param              | Type                                |
| ------------------ | ----------------------------------- |
| **`eventName`**    | <code>'interstitialAdShowed'</code> |
| **`listenerFunc`** | <code>() =&gt; void</code>          |

**Returns:** <code>Promise&lt;<a href="#pluginlistenerhandle">PluginListenerHandle</a>&gt; & <a href="#pluginlistenerhandle">PluginListenerHandle</a></code>

--------------------
### Interstitial Ad Example

``` ts
import { AdmobAds } from "capacitor-admob-ads";

// To load an interstital ad
AdmobAds.loadInterstitialAd({ adId: "ca-app-pub-3940256099942544/1033173712", isTesting: true }).then(() => {
   console.log('Interstitial Ad Loaded');
}).catch(err => {
   console.log(err.message);
});

// To show an already loaded interstitial ad
AdmobAds.showInterstitialAd().then(() => {
   console.log('Interstitial Ad Shown');
}).catch(err => {
   console.log(err.message);
});

// Event listeners
AdmobAds.addListener("interstitialAdClicked", () => {
   console.log('Interstitial Ad Clicked');
});

AdmobAds.addListener("interstitialAdDismissed", () => {
   console.log('Interstitial Ad Dismissed');
});

AdmobAds.addListener("interstitialAdFailedToShow", () => {
   console.log('Interstitial Ad Failed To Show');
});

AdmobAds.addListener("interstitialAdImpression", () => {
   console.log('Interstitial Ad Impression');
});

AdmobAds.addListener("interstitialAdShowed", () => {
   console.log('Interstitial Ad Showed');
});
```
------
### Rewarded Interstitial Ad
API to display rewarded interstitial ads in your apps.

* [`loadRewardedInterstitialAd(...)`](#loadrewardedinterstitialad)
* [`showRewardedInterstitialAd()`](#showrewardedinterstitialad)
* [`addListener('rewardedInterstitialAdShowed', ...)`](#addlistenerrewardedinterstitialadshowed)
* [`addListener('rewardedInterstitialAdFailedToShow', ...)`](#addlistenerrewardedinterstitialadfailedtoshow)
* [`addListener('rewardedInterstitialAdDismissed', ...)`](#addlistenerrewardedinterstitialaddismissed)
* [`addListener('rewardedInterstitialAdClicked', ...)`](#addlistenerrewardedinterstitialadclicked)
* [`addListener('rewardedInterstitialAdImpression', ...)`](#addlistenerrewardedinterstitialadimpression)
* [`addListener('rewardedInterstitialAdOnRewarded', ...)`](#addlistenerrewardedinterstitialadonrewarded)
* [`Rewarded Interstitial Ad Example`](#rewarded-interstitial-ad-example)


### loadRewardedInterstitialAd(...)
To load a rewarded interstitial ad call this method with the below options (You have to load an ad before showing it).
```typescript
loadRewardedInterstitialAd(options: RewaredInterstitialAdOptions) => Promise<void>
```

| Param         | Type                                                                                  |Description|
| ------------- | ------------------------------------------------------------------------------------- |-----------|
| **`options`** | <code><a href="#rewaredinterstitialadoptions">RewaredInterstitialAdOptions</a></code> |Rewarded Interstitial Ad Options

#### RewaredInterstitialAdOptions

| Prop            | Type                 |Description|
| --------------- | -------------------- |-----|
| **`adId`**      | <code>string</code>  |Rewarded Interstitial ad ID that you get from [Admob Console](https://apps.admob.com/)|
| **`isTesting`** | <code>boolean</code> |Set to true while testing/debugging. Set to false for production apps

--------------------


### showRewardedInterstitialAd()
To show an already loaded rewarded interstitial ad use this method.

```typescript
showRewardedInterstitialAd() => Promise<void>
```

--------------------


### addListener('rewardedInterstitialAdShowed', ...)
Triggers when a rewarded interstitial ad is showed.
```typescript
addListener(eventName: 'rewardedInterstitialAdShowed', listenerFunc: () => void) => Promise<PluginListenerHandle> & PluginListenerHandle
```

| Param              | Type                                        |
| ------------------ | ------------------------------------------- |
| **`eventName`**    | <code>'rewardedInterstitialAdShowed'</code> |
| **`listenerFunc`** | <code>() =&gt; void</code>                  |

**Returns:** <code>Promise&lt;<a href="#pluginlistenerhandle">PluginListenerHandle</a>&gt; & <a href="#pluginlistenerhandle">PluginListenerHandle</a></code>

--------------------


### addListener('rewardedInterstitialAdFailedToShow', ...)
Triggers when a rewarded interstitial ad is fail to show.
```typescript
addListener(eventName: 'rewardedInterstitialAdFailedToShow', listenerFunc: (error: { message: string; }) => void) => Promise<PluginListenerHandle> & PluginListenerHandle
```

| Param              | Type                                                  |
| ------------------ | ----------------------------------------------------- |
| **`eventName`**    | <code>'rewardedInterstitialAdFailedToShow'</code>     |
| **`listenerFunc`** | <code>(error: { message: string; }) =&gt; void</code> |

**Returns:** <code>Promise&lt;<a href="#pluginlistenerhandle">PluginListenerHandle</a>&gt; & <a href="#pluginlistenerhandle">PluginListenerHandle</a></code>

--------------------


### addListener('rewardedInterstitialAdDismissed', ...)
Triggers when a rewarded interstitial ad is dismissed.
```typescript
addListener(eventName: 'rewardedInterstitialAdDismissed', listenerFunc: () => void) => Promise<PluginListenerHandle> & PluginListenerHandle
```

| Param              | Type                                           |
| ------------------ | ---------------------------------------------- |
| **`eventName`**    | <code>'rewardedInterstitialAdDismissed'</code> |
| **`listenerFunc`** | <code>() =&gt; void</code>                     |

**Returns:** <code>Promise&lt;<a href="#pluginlistenerhandle">PluginListenerHandle</a>&gt; & <a href="#pluginlistenerhandle">PluginListenerHandle</a></code>

--------------------


### addListener('rewardedInterstitialAdClicked', ...)
Triggers when a rewarded interstitial ad is clicked.
```typescript
addListener(eventName: 'rewardedInterstitialAdClicked', listenerFunc: () => void) => Promise<PluginListenerHandle> & PluginListenerHandle
```

| Param              | Type                                         |
| ------------------ | -------------------------------------------- |
| **`eventName`**    | <code>'rewardedInterstitialAdClicked'</code> |
| **`listenerFunc`** | <code>() =&gt; void</code>                   |

**Returns:** <code>Promise&lt;<a href="#pluginlistenerhandle">PluginListenerHandle</a>&gt; & <a href="#pluginlistenerhandle">PluginListenerHandle</a></code>

--------------------


### addListener('rewardedInterstitialAdImpression', ...)
Triggers when a rewarded interstitial ad registers impression.
```typescript
addListener(eventName: 'rewardedInterstitialAdImpression', listenerFunc: () => void) => Promise<PluginListenerHandle> & PluginListenerHandle
```

| Param              | Type                                            |
| ------------------ | ----------------------------------------------- |
| **`eventName`**    | <code>'rewardedInterstitialAdImpression'</code> |
| **`listenerFunc`** | <code>() =&gt; void</code>                      |

**Returns:** <code>Promise&lt;<a href="#pluginlistenerhandle">PluginListenerHandle</a>&gt; & <a href="#pluginlistenerhandle">PluginListenerHandle</a></code>

--------------------


### addListener('rewardedInterstitialAdOnRewarded', ...)
Triggers when a rewarded interstitial ad is rewarded.
```typescript
addListener(eventName: 'rewardedInterstitialAdOnRewarded', listenerFunc: () => void) => Promise<PluginListenerHandle> & PluginListenerHandle
```

| Param              | Type                                            |
| ------------------ | ----------------------------------------------- |
| **`eventName`**    | <code>'rewardedInterstitialAdOnRewarded'</code> |
| **`listenerFunc`** | <code>() =&gt; void</code>                      |

**Returns:** <code>Promise&lt;<a href="#pluginlistenerhandle">PluginListenerHandle</a>&gt; & <a href="#pluginlistenerhandle">PluginListenerHandle</a></code>

--------------------

### Rewarded Interstitial Ad Example

``` ts
import { AdmobAds } from "capacitor-admob-ads";

// To load a rewarded interstitial ad
AdmobAds.loadRewardedInterstitialAd({ adId: "ca-app-pub-3940256099942544/5354046379", isTesting: true }).then(() => {
   console.log('Rewarded Interstitial Ad Loaded');
}).catch(err => {
   console.log(err.message);
});

// To show an already loaded rewarded interstitial ad
AdmobAds.showRewardedInterstitialAd().then(() => {
   console.log('Rewarded Interstitial Ad Shown');
}).catch(err => {
   console.log(err.message);
});

// Event listeners
AdmobAds.addListener("rewardedInterstitialAdShowed", () => {
   console.log('Rewarded Interstitial Ad Showed');
});

AdmobAds.addListener("rewardedInterstitialAdFailedToShow", () => {
   console.log('Rewarded Interstitial Ad Fail To Show');
});

AdmobAds.addListener("rewardedInterstitialAdDismissed", () => {
   console.log('Rewarded Interstitial Ad Dismissed');
});

AdmobAds.addListener("rewardedInterstitialAdClicked", () => {
   console.log('Rewarded Interstitial Ad Clicked');
});

AdmobAds.addListener("rewardedInterstitialAdImpression", () => {
   console.log('Rewarded Interstitial Ad Impression');
});

AdmobAds.addListener("rewardedInterstitialAdOnRewarded", () => {
   console.log('Rewarded Interstitial Ad Rewarded');
});
```
------


### Rewarded Video Ad
API to display rewarded Video ads in your apps.

* [`loadRewardedVideoAd(...)`](#loadrewardedVideoad)
* [`showRewardedVideoAd()`](#showrewardedVideoad)
* [`addListener('rewardedVideoAdShowed', ...)`](#addlistenerrewardedVideoadshowed)
* [`addListener('rewardedVideoAdFailedToShow', ...)`](#addlistenerrewardedVideoadfailedtoshow)
* [`addListener('rewardedVideoAdDismissed', ...)`](#addlistenerrewardedVideoaddismissed)
* [`addListener('rewardedVideoAdClicked', ...)`](#addlistenerrewardedVideoadclicked)
* [`addListener('rewardedVideoAdImpression', ...)`](#addlistenerrewardedVideoadimpression)
* [`addListener('rewardedVideoAdOnRewarded', ...)`](#addlistenerrewardedVideoadonrewarded)
* [`Rewarded Video Ad Example`](#rewarded-video-ad-example)


### loadRewardedVideoAd(...)
To load a rewarded video ad call this method with the below options (You have to load an ad before showing it).
```typescript
loadRewardedVideoAd(options: RewaredVideoAdOptions) => Promise<void>
```

| Param         | Type                                                                                  |Description|
| ------------- | ------------------------------------------------------------------------------------- |-----------|
| **`options`** | <code><a href="#rewaredVideoadoptions">RewaredVideoAdOptions</a></code> |Rewarded Video Ad Options

#### RewaredVideoAdOptions

| Prop            | Type                 |Description|
| --------------- | -------------------- |-----|
| **`adId`**      | <code>string</code>  |Rewarded Video ad ID that you get from [Admob Console](https://apps.admob.com/)|
| **`isTesting`** | <code>boolean</code> |Set to true while testing/debugging. Set to false for production apps

--------------------


### showRewardedVideoAd()
To show an already loaded rewarded video ad use this method.

```typescript
showRewardedVideoAd() => Promise<void>
```

--------------------


### addListener('rewardedVideoAdShowed', ...)
Triggers when a rewarded video ad is showed.
```typescript
addListener(eventName: 'rewardedVideoAdShowed', listenerFunc: () => void) => Promise<PluginListenerHandle> & PluginListenerHandle
```

| Param              | Type                                        |
| ------------------ | ------------------------------------------- |
| **`eventName`**    | <code>'rewardedVideoAdShowed'</code> |
| **`listenerFunc`** | <code>() =&gt; void</code>                  |

**Returns:** <code>Promise&lt;<a href="#pluginlistenerhandle">PluginListenerHandle</a>&gt; & <a href="#pluginlistenerhandle">PluginListenerHandle</a></code>

--------------------


### addListener('rewardedVideoAdFailedToShow', ...)
Triggers when a rewarded video ad is fail to show.
```typescript
addListener(eventName: 'rewardedVideoAdFailedToShow', listenerFunc: (error: { message: string; }) => void) => Promise<PluginListenerHandle> & PluginListenerHandle
```

| Param              | Type                                                  |
| ------------------ | ----------------------------------------------------- |
| **`eventName`**    | <code>'rewardedVideoAdFailedToShow'</code>     |
| **`listenerFunc`** | <code>(error: { message: string; }) =&gt; void</code> |

**Returns:** <code>Promise&lt;<a href="#pluginlistenerhandle">PluginListenerHandle</a>&gt; & <a href="#pluginlistenerhandle">PluginListenerHandle</a></code>

--------------------


### addListener('rewardedVideoAdDismissed', ...)
Triggers when a rewarded video ad is dismissed.
```typescript
addListener(eventName: 'rewardedVideoAdDismissed', listenerFunc: () => void) => Promise<PluginListenerHandle> & PluginListenerHandle
```

| Param              | Type                                           |
| ------------------ | ---------------------------------------------- |
| **`eventName`**    | <code>'rewardedVideoAdDismissed'</code> |
| **`listenerFunc`** | <code>() =&gt; void</code>                     |

**Returns:** <code>Promise&lt;<a href="#pluginlistenerhandle">PluginListenerHandle</a>&gt; & <a href="#pluginlistenerhandle">PluginListenerHandle</a></code>

--------------------


### addListener('rewardedVideoAdClicked', ...)
Triggers when a rewarded video ad is clicked.
```typescript
addListener(eventName: 'rewardedVideoAdClicked', listenerFunc: () => void) => Promise<PluginListenerHandle> & PluginListenerHandle
```

| Param              | Type                                         |
| ------------------ | -------------------------------------------- |
| **`eventName`**    | <code>'rewardedVideoAdClicked'</code> |
| **`listenerFunc`** | <code>() =&gt; void</code>                   |

**Returns:** <code>Promise&lt;<a href="#pluginlistenerhandle">PluginListenerHandle</a>&gt; & <a href="#pluginlistenerhandle">PluginListenerHandle</a></code>

--------------------


### addListener('rewardedVideoAdImpression', ...)
Triggers when a rewarded video ad registers impression.
```typescript
addListener(eventName: 'rewardedVideoAdImpression', listenerFunc: () => void) => Promise<PluginListenerHandle> & PluginListenerHandle
```

| Param              | Type                                            |
| ------------------ | ----------------------------------------------- |
| **`eventName`**    | <code>'rewardedVideoAdImpression'</code> |
| **`listenerFunc`** | <code>() =&gt; void</code>                      |

**Returns:** <code>Promise&lt;<a href="#pluginlistenerhandle">PluginListenerHandle</a>&gt; & <a href="#pluginlistenerhandle">PluginListenerHandle</a></code>

--------------------


### addListener('rewardedVideoAdOnRewarded', ...)
Triggers when a rewarded video ad is rewarded.
```typescript
addListener(eventName: 'rewardedVideoAdOnRewarded', listenerFunc: () => void) => Promise<PluginListenerHandle> & PluginListenerHandle
```

| Param              | Type                                            |
| ------------------ | ----------------------------------------------- |
| **`eventName`**    | <code>'rewardedVideoAdOnRewarded'</code> |
| **`listenerFunc`** | <code>() =&gt; void</code>                      |

**Returns:** <code>Promise&lt;<a href="#pluginlistenerhandle">PluginListenerHandle</a>&gt; & <a href="#pluginlistenerhandle">PluginListenerHandle</a></code>

--------------------

### Rewarded Video Ad Example

``` ts
import { AdmobAds } from "capacitor-admob-ads";

// To load a rewarded video ad
AdmobAds.loadRewardedVideoAd({ adId: "ca-app-pub-3940256099942544/5224354917", isTesting: true }).then(() => {
   console.log('Rewarded Video Ad Loaded');
}).catch(err => {
   console.log(err.message);
});

// To show an already loaded rewarded video ad
AdmobAds.showRewardedVideoAd().then(() => {
   console.log('Rewarded Video Ad Shown');
}).catch(err => {
   console.log(err.message);
});

// Event listeners
AdmobAds.addListener("rewardedVideoAdShowed", () => {
   console.log('Rewarded Video Ad Showed');
});

AdmobAds.addListener("rewardedVideoAdFailedToShow", () => {
   console.log('Rewarded Video Ad Fail To Show');
});

AdmobAds.addListener("rewardedVideoAdDismissed", () => {
   console.log('Rewarded Video Ad Dismissed');
});

AdmobAds.addListener("rewardedVideoAdClicked", () => {
   console.log('Rewarded Video Ad Clicked');
});

AdmobAds.addListener("rewardedVideoAdImpression", () => {
   console.log('Rewarded Video Ad Impression');
});

AdmobAds.addListener("rewardedVideoAdOnRewarded", () => {
   console.log('Rewarded Video Ad Rewarded');
});
```
------

### Native Ad
API to display admob native ads in your apps.

* [`loadNativeAd(...)`](#loadnativead)
* [`triggerNativeAd(...)`](#triggernativead)
* [`Native Ad Example`](#native-ad-example)


### loadNativeAd(...)
To load a native ad use this method.
```typescript
loadNativeAd(options: NativeAdOptions) => Promise<{ ads: AdResult[]; }>
```

| Param         | Type                                                        |Description|
| ------------- | ----------------------------------------------------------- |-----------|
| **`options`** | <code><a href="#nativeadoptions">NativeAdOptions</a></code> |Native Ad Options

#### NativeAdOptions

| Prop            | Type                               |Description|
| --------------- | ---------------------------------- |-----------|
| **`adId`**      | <code>string</code>                |Native ad ID that you get from [Admob Console](https://apps.admob.com/)|
| **`isTesting`** | <code>boolean</code>               |Set to true while testing/debugging. Set to false for production apps
| **`adsCount`**  | <code>1 \| 2 \| 5 \| 4 \| 3</code> |Number of ads to return

**Returns:** <code>Promise&lt;{ ads: AdResult[]; }&gt;</code>

#### AdResult

| Prop               | Type                | Description|
| ------------------ | ------------------- |------------|
| **`id`**           | <code>string</code> |  Unique ad ID that is used to trigger a native ad
| **`headline`**     | <code>string</code> | Headline of a native ad
| **`body`**         | <code>string</code> |Body text of a native ad
| **`advertiser`**   | <code>string</code> |Native ad advertiser name
| **`icon`**         | <code>string</code> |Icon image link
| **`cover`**        | <code>string</code> |Cover image link
| **`cta`**          | <code>string</code> |Call to Action button text
| **`adChoicesUrl`** | <code>string</code> | Ad choices URL of admob
--------------------


### triggerNativeAd(...)
To trigger (open) a native ad use this method
```typescript
triggerNativeAd(options: NativeAdTriggerOptions) => void
```

| Param         | Type                                                                      |
| ------------- | ------------------------------------------------------------------------- |
| **`options`** | <code><a href="#nativeadtriggeroptions">NativeAdTriggerOptions</a></code> |

#### NativeAdTriggerOptions

| Prop     | Type                | Description|
| -------- | ------------------- |------------|
| **`id`** | <code>string</code> |Unique ad Id to open the native ad
--------------------

### Native Ad Example

```ts
import { AdmobAds } from "capacitor-admob-ads";

ads:Array<any> = [];

// To load native ads
AdmobAds.loadNativeAd({ adId: "ca-app-pub-3940256099942544/2247696110", isTesting: true, adsCount: 3 }).then((res) => {
   this.ads = res.ads;

   this.ads.forEach(ad => {
      console.log(ad['id']); 
      console.log(ad['headline']);
      console.log(ad['body']);
      console.log(ad['icon']);
      console.log(ad['cover']);
      console.log(ad['advertiser']);
      console.log(ad['cta']); 
      console.log(ad['adChoicesUrl']);
   });
}).catch((error) => {
   consol.log(error.message);
});

// To open a native ad
viewAd(id) {
   AdmobAds.triggerNativeAd({ id: id }); 
}

// To open AdChoices url
openAdchoices(url) {
   window.open(url);
}
```


```html
<ion-card *ngFor="let ad of ads">
  <ion-card-header mode="md">
    <ion-item lines="none">
      <ion-avatar slot="start">
        <ion-img src="{{ad.icon}}" crossorigin="Anonymous">
        </ion-img>
      </ion-avatar>
      <ion-label>
        <h2>{{ad.headline}}
        </h2>
        <p>
          {{ad.advertiser}}
        </p>
      </ion-label>
      <ion-icon slot="end" src="/assets/icon/adchoices.svg" (click)="openAdchoices(ad.adChoicesUrl)">
      </ion-icon>
    </ion-item>
  </ion-card-header>

  <ion-card-content mode="md">
    <p class="ion-text-wrap">
      {{ad.body}}
    </p>

    <ion-img src="{{ad.cover}}" crossorigin="anonymous"></ion-img>

    <ion-chip (click)="viewAd(ad.id)" slot="end">
      <ion-label> {{ad.cta}} </ion-label>
    </ion-chip>
  </ion-card-content>
</ion-card>
```
--------------------

### Remove Listeners
To remove subscribed listeners use this method
* [`removeAllListeners()`](#removealllisteners)


### removeAllListeners()

```typescript
removeAllListeners() => Promise<void>
```

### Example

```ts
import { AdmobAds } from "capacitor-admob-ads";

// To remove specifi listener
let rewardListener = AdmobAds.addListener("rewardedInterstitialAdOnRewarded", () => {
   console.log('Rewarded Interstitial Ad Rewarded');
});

rewardListener.remove();

// To remove all listeners
AdmobAds.removeAllListeners();
```
--------------------