2017-04-27 00:36:12 -04:00
|
|
|
import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
|
2017-03-28 06:49:22 -04:00
|
|
|
import { Injectable } from '@angular/core';
|
|
|
|
import { Observable } from 'rxjs/Observable';
|
|
|
|
import 'rxjs/add/observable/fromEvent';
|
|
|
|
|
|
|
|
export interface AdMobFreeBannerConfig {
|
|
|
|
/**
|
|
|
|
* Ad Unit ID
|
|
|
|
*/
|
|
|
|
id?: string;
|
|
|
|
/**
|
2017-03-28 06:54:03 -04:00
|
|
|
* Receiving test ad
|
2017-03-28 06:49:22 -04:00
|
|
|
*/
|
|
|
|
isTesting?: boolean;
|
|
|
|
/**
|
2017-03-28 06:54:03 -04:00
|
|
|
* Auto show ad when loaded
|
2017-03-28 06:49:22 -04:00
|
|
|
*/
|
|
|
|
autoShow?: boolean;
|
|
|
|
/**
|
2017-03-28 06:54:03 -04:00
|
|
|
* Set to true, to put banner at top
|
2017-03-28 06:49:22 -04:00
|
|
|
*/
|
|
|
|
bannerAtTop?: boolean;
|
|
|
|
/**
|
2017-03-28 06:54:03 -04:00
|
|
|
* Set to true, to allow banner overlap WebView
|
2017-03-28 06:49:22 -04:00
|
|
|
*/
|
|
|
|
overlap?: boolean;
|
|
|
|
/**
|
2017-03-28 06:54:03 -04:00
|
|
|
* Set to true to avoid ios7 status bar overlap
|
2017-03-28 06:49:22 -04:00
|
|
|
*/
|
|
|
|
offsetTopBar?: boolean;
|
|
|
|
/**
|
|
|
|
* Banner size
|
|
|
|
*/
|
|
|
|
size?: string;
|
|
|
|
}
|
|
|
|
|
|
|
|
export interface AdMobFreeInterstitialConfig {
|
|
|
|
/**
|
|
|
|
* Ad Unit ID
|
|
|
|
*/
|
|
|
|
id?: string;
|
|
|
|
/**
|
2017-03-28 06:54:03 -04:00
|
|
|
* Receiving test ad
|
2017-03-28 06:49:22 -04:00
|
|
|
*/
|
|
|
|
isTesting?: boolean;
|
|
|
|
/**
|
2017-03-28 06:54:03 -04:00
|
|
|
* Auto show ad when loaded
|
2017-03-28 06:49:22 -04:00
|
|
|
*/
|
|
|
|
autoShow?: boolean;
|
|
|
|
}
|
|
|
|
|
|
|
|
export interface AdMobFreeRewardVideoConfig {
|
|
|
|
/**
|
|
|
|
* Ad Unit ID
|
|
|
|
*/
|
|
|
|
id?: string;
|
|
|
|
/**
|
2017-03-28 06:54:03 -04:00
|
|
|
* Receiving test ad
|
2017-03-28 06:49:22 -04:00
|
|
|
*/
|
|
|
|
isTesting?: boolean;
|
|
|
|
/**
|
2017-03-28 06:54:03 -04:00
|
|
|
* Auto show ad when loaded
|
2017-03-28 06:49:22 -04:00
|
|
|
*/
|
|
|
|
autoShow?: boolean;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
2017-03-31 23:15:27 -04:00
|
|
|
* @name AdMob Free
|
2017-03-28 06:49:22 -04:00
|
|
|
* @description
|
|
|
|
*
|
|
|
|
* @usage
|
2017-04-30 20:36:22 +02:00
|
|
|
* ```typescript
|
2017-03-29 18:08:54 -05:00
|
|
|
* import { AdMobFree, AdMobFreeBannerConfig } from '@ionic-native/admob-free';
|
2017-03-28 06:49:22 -04:00
|
|
|
*
|
|
|
|
*
|
|
|
|
* constructor(private admobFree: AdMobFree) { }
|
|
|
|
*
|
2017-03-28 06:54:03 -04:00
|
|
|
*
|
2017-03-28 06:49:22 -04:00
|
|
|
* ...
|
|
|
|
*
|
|
|
|
*
|
2017-03-28 06:54:03 -04:00
|
|
|
* const bannerConfig: AdMobFreeBannerConfig = {
|
|
|
|
* // add your config here
|
|
|
|
* // for the sake of this example we will just use the test config
|
|
|
|
* isTesting: true,
|
|
|
|
* autoShow: true
|
|
|
|
* };
|
|
|
|
* this.admobFree.banner.config(bannerConfig);
|
|
|
|
*
|
|
|
|
* this.admobFree.banner.prepare()
|
|
|
|
* .then(() => {
|
|
|
|
* // banner Ad is ready
|
|
|
|
* // if we set autoShow to false, then we will need to call the show method here
|
|
|
|
* })
|
|
|
|
* .catch(e => console.log(e));
|
|
|
|
*
|
|
|
|
*
|
2017-03-28 06:49:22 -04:00
|
|
|
* ```
|
2017-05-19 07:44:47 -04:00
|
|
|
* @interfaces
|
|
|
|
* AdMobFreeBannerConfig
|
|
|
|
* AdMobFreeInterstitialConfig
|
|
|
|
* AdMobFreeRewardVideoConfig
|
|
|
|
* @classes
|
|
|
|
* AdMobFreeBanner
|
|
|
|
* AdMobFreeInterstitial
|
|
|
|
* AdMobFreeRewardVideo
|
2017-03-28 06:49:22 -04:00
|
|
|
*/
|
|
|
|
@Plugin({
|
|
|
|
pluginName: 'AdMobFree',
|
|
|
|
plugin: 'cordova-plugin-admob-free',
|
|
|
|
pluginRef: 'admob',
|
2017-03-28 08:24:04 -04:00
|
|
|
repo: 'https://github.com/ratson/cordova-plugin-admob-free',
|
|
|
|
platforms: ['Android', 'iOS']
|
2017-03-28 06:49:22 -04:00
|
|
|
})
|
|
|
|
@Injectable()
|
2017-04-27 00:36:12 -04:00
|
|
|
export class AdMobFree extends IonicNativePlugin {
|
2017-03-28 06:49:22 -04:00
|
|
|
|
|
|
|
/**
|
2017-05-19 07:44:47 -04:00
|
|
|
* Convenience object to get event names
|
|
|
|
* @type {Object}
|
2017-03-28 06:49:22 -04:00
|
|
|
*/
|
2017-05-19 07:44:47 -04:00
|
|
|
events: any = {
|
2017-03-28 06:49:22 -04:00
|
|
|
BANNER_LOAD: 'admob.banner.events.LOAD',
|
|
|
|
BANNER_LOAD_FAIL: 'admob.banner.events.LOAD_FAIL',
|
|
|
|
BANNER_OPEN: 'admob.banner.events.OPEN',
|
|
|
|
BANNER_CLOSE: 'admob.banner.events.CLOSE',
|
|
|
|
BANNER_EXIT_APP: 'admob.banner.events.EXIT_APP',
|
|
|
|
|
|
|
|
INTERSTITIAL_LOAD: 'admob.interstitial.events.LOAD',
|
|
|
|
INTERSTITIAL_LOAD_FAIL: 'admob.interstitial.events.LOAD_FAIL',
|
|
|
|
INTERSTITIAL_OPEN: 'admob.interstitial.events.OPEN',
|
|
|
|
INTERSTITIAL_CLOSE: 'admob.interstitial.events.CLOSE',
|
|
|
|
INTERSTITIAL_EXIT_APP: 'admob.interstitial.events.EXIT_APP',
|
|
|
|
|
|
|
|
REWARD_VIDEO_LOAD: 'admob.rewardvideo.events.LOAD',
|
|
|
|
REWARD_VIDEO_LOAD_FAIL: 'admob.rewardvideo.events.LOAD_FAIL',
|
|
|
|
REWARD_VIDEO_OPEN: 'admob.rewardvideo.events.OPEN',
|
|
|
|
REWARD_VIDEO_CLOSE: 'admob.rewardvideo.events.CLOSE',
|
|
|
|
REWARD_VIDEO_EXIT_APP: 'admob.rewardvideo.events.EXIT_APP',
|
|
|
|
REWARD_VIDEO_START: 'admob.rewardvideo.events.START',
|
|
|
|
REWARD_VIDEO_REWARD: 'admob.rewardvideo.events.REWARD'
|
|
|
|
};
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Watch an event
|
|
|
|
* @param event {string} event name
|
|
|
|
* @return {Observable<any>}
|
|
|
|
*/
|
|
|
|
on(event: string): Observable<any> {
|
|
|
|
return Observable.fromEvent(document, event);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
2017-05-19 07:44:47 -04:00
|
|
|
* Returns the AdMobFreeBanner object
|
2017-03-28 06:49:22 -04:00
|
|
|
* @type {AdMobFreeBanner}
|
|
|
|
*/
|
|
|
|
banner: AdMobFreeBanner = new AdMobFreeBanner();
|
|
|
|
|
|
|
|
/**
|
2017-05-19 07:44:47 -04:00
|
|
|
* Returns the AdMobFreeInterstitial object
|
2017-03-28 06:49:22 -04:00
|
|
|
* @type {AdMobFreeInterstitial}
|
|
|
|
*/
|
|
|
|
interstitial: AdMobFreeInterstitial = new AdMobFreeInterstitial();
|
|
|
|
|
|
|
|
/**
|
2017-05-19 07:44:47 -04:00
|
|
|
* Returns the AdMobFreeRewardVideo object
|
2017-03-28 06:49:22 -04:00
|
|
|
* @type {AdMobFreeRewardVideo}
|
|
|
|
*/
|
|
|
|
rewardVideo: AdMobFreeRewardVideo = new AdMobFreeRewardVideo();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @hidden
|
|
|
|
*/
|
|
|
|
@Plugin({
|
|
|
|
pluginName: 'AdMobFree',
|
|
|
|
plugin: 'cordova-plugin-admob-free',
|
|
|
|
pluginRef: 'admob.banner',
|
|
|
|
})
|
|
|
|
export class AdMobFreeBanner {
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Update config.
|
|
|
|
* @param options
|
|
|
|
* @return {AdMobFreeBannerConfig}
|
|
|
|
*/
|
|
|
|
@Cordova({ sync: true })
|
|
|
|
config(options: AdMobFreeBannerConfig): AdMobFreeBannerConfig { return; }
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Hide the banner.
|
|
|
|
* @return {Promise<any>}
|
|
|
|
*/
|
|
|
|
@Cordova({ sync: true })
|
|
|
|
hide(): Promise<any> { return; }
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Create banner.
|
|
|
|
* @return {Promise<any>}
|
|
|
|
*/
|
|
|
|
@Cordova({ sync: true })
|
|
|
|
prepare(): Promise<any> { return; }
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Remove the banner.
|
|
|
|
* @return {Promise<any>}
|
|
|
|
*/
|
|
|
|
@Cordova({ sync: true })
|
|
|
|
remove(): Promise<any> { return; }
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Show the banner.
|
|
|
|
* @return {Promise<any>}
|
|
|
|
*/
|
|
|
|
@Cordova({ sync: true })
|
|
|
|
show(): Promise<any> { return; }
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @hidden
|
|
|
|
*/
|
|
|
|
@Plugin({
|
|
|
|
pluginName: 'AdMobFree',
|
|
|
|
plugin: 'cordova-plugin-admob-free',
|
|
|
|
pluginRef: 'admob.interstitial',
|
|
|
|
})
|
|
|
|
export class AdMobFreeInterstitial {
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Update config.
|
|
|
|
* @param options
|
|
|
|
* @return {AdMobFreeInterstitialConfig}
|
|
|
|
*/
|
|
|
|
@Cordova({ sync: true })
|
|
|
|
config(options: AdMobFreeInterstitialConfig): AdMobFreeInterstitialConfig { return; }
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Check if interstitial is ready
|
|
|
|
* @return {Promise<any>}
|
|
|
|
*/
|
|
|
|
@Cordova({ sync: true })
|
|
|
|
isReady(): Promise<any> { return; }
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Prepare interstitial
|
|
|
|
* @return {Promise<any>}
|
|
|
|
*/
|
|
|
|
@Cordova({ sync: true })
|
|
|
|
prepare(): Promise<any> { return; }
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Show the interstitial
|
|
|
|
* @return {Promise<any>}
|
|
|
|
*/
|
|
|
|
@Cordova({ sync: true })
|
|
|
|
show(): Promise<any> { return; }
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @hidden
|
|
|
|
*/
|
|
|
|
@Plugin({
|
|
|
|
pluginName: 'AdMobFree',
|
|
|
|
plugin: 'cordova-plugin-admob-free',
|
|
|
|
pluginRef: 'admob.rewardvideo',
|
|
|
|
})
|
|
|
|
export class AdMobFreeRewardVideo {
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Update config.
|
|
|
|
* @param options
|
|
|
|
* @return {AdMobFreeRewardVideoConfig}
|
|
|
|
*/
|
|
|
|
@Cordova({ sync: true })
|
|
|
|
config(options: AdMobFreeRewardVideoConfig): AdMobFreeRewardVideoConfig { return; }
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Check if reward video is ready
|
|
|
|
* @return {Promise<any>}
|
|
|
|
*/
|
|
|
|
@Cordova({ sync: true })
|
|
|
|
isReady(): Promise<any> { return; }
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Prepare reward video
|
|
|
|
* @return {Promise<any>}
|
|
|
|
*/
|
|
|
|
@Cordova({ sync: true })
|
|
|
|
prepare(): Promise<any> { return; }
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Show the reward video
|
|
|
|
* @return {Promise<any>}
|
|
|
|
*/
|
|
|
|
@Cordova({ sync: true })
|
|
|
|
show(): Promise<any> { return; }
|
|
|
|
|
|
|
|
}
|