nativescript-xz-ad-generation
Version:
NativeScript AdGeneration Plugin
146 lines (145 loc) • 5.91 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var xz_ad_controller_base_1 = require("./xz-ad-controller-base");
var application_1 = require("tns-core-modules/application");
var platform_1 = require("tns-core-modules/platform");
var mainScreen = platform_1.screen.mainScreen;
var XzAdController = (function (_super) {
__extends(XzAdController, _super);
function XzAdController() {
return _super !== null && _super.apply(this, arguments) || this;
}
XzAdController.prototype.getAdListener = function () {
var AdListener = (function (_super) {
__extends(AdListener, _super);
function AdListener() {
var _this = _super.call(this) || this;
return global.__native(_this);
}
AdListener.prototype.onReceiveAd = function (ad) {
var controller = this._owner.get();
if (controller && controller.adItem.type === 'native') {
controller.onReceiveAd(ad);
}
};
AdListener.prototype.onFailedToReceiveAd = function (code) {
var controller = this._owner.get();
console.log("fail loading ad ... " + ("code: " + code));
switch (code) {
case com.socdm.d.adgeneration.ADGConsts.ADGErrorCode.EXCEED_LIMIT:
case com.socdm.d.adgeneration.ADGConsts.ADGErrorCode.NEED_CONNECTION:
case com.socdm.d.adgeneration.ADGConsts.ADGErrorCode.NO_AD:
if (controller) {
controller.onFailed();
}
return;
}
if (controller) {
console.log('retry ... ');
controller.start();
}
};
AdListener.prototype.setOwnerAdController = function (owner) {
this._owner = owner;
};
return AdListener;
}(com.socdm.d.adgeneration.ADGListener));
var listener = new AdListener();
listener.setOwnerAdController(new WeakRef(this));
return listener;
};
XzAdController.prototype.initNativeAd = function (parentView) {
if (parentView == null) {
throw new Error("no parent view!");
}
var targetView = parentView.android;
this._tapTargetView = new WeakRef(targetView);
this._adg = new com.socdm.d.adgeneration.ADG(application_1.android.foregroundActivity);
this._adg.setLocationId("" + this.adItem.locationId);
var adWidth = mainScreen.widthDIPs;
var pl = isNaN(+parentView.style.paddingLeft) ? 0 : +parentView.style.paddingLeft;
var pr = isNaN(+parentView.style.paddingRight) ? 0 : +parentView.style.paddingRight;
adWidth -= (pl + pr);
var adHeight = (this.adItem.height / this.adItem.width) * adWidth;
var adSize = com.socdm.d.adgeneration.ADG.AdFrameSize.valueOf("FREE");
this._adg.setAdFrameSize(adSize.setSize(adWidth, adHeight));
this._adg.setUsePartsResponse(true);
this._adg.setInformationIconViewDefault(false);
this._listener = this.getAdListener();
this._adg.setAdListener(this._listener);
targetView.addView(this._adg);
this._adg.start();
return this;
};
XzAdController.prototype.initWithView = function (view, viewHeight, viewWidth, scale) {
if (this.adItem.type !== "banner") {
return null;
}
this._adg = view;
this._adg.setLocationId("" + this.adItem.locationId);
var adSize = com.socdm.d.adgeneration.ADG.AdFrameSize.valueOf("FREE");
this._adg.setAdFrameSize(adSize.setSize(viewWidth, viewHeight));
this._adg.setAdScale(scale);
this._listener = this.getAdListener();
this._adg.setAdListener(this._listener);
this._adg.start();
return this;
};
XzAdController.prototype.start = function () {
if (this._adg) {
this._adg.start();
}
};
XzAdController.prototype.resumeAd = function () {
};
XzAdController.prototype.dispose = function () {
if (this._adg) {
this._adg.stop();
}
this._adg = null;
this._listener = null;
};
XzAdController.prototype.onReceiveAd = function (ad) {
var data = {
object: null,
eventName: "receiveNativeAd",
locationId: this.adItem.locationId
};
if (ad) {
if (ad.getTitle() != null) {
data.title = ad.getTitle().getText();
}
if (ad.getMainImage() != null) {
data.mainImageUrl = ad.getMainImage().getUrl();
}
if (ad.getIconImage() != null) {
data.iconImageUrl = ad.getIconImage().getUrl();
}
if (ad.getDesc() != null) {
data.description = ad.getDesc().getValue();
}
if (ad.getSponsored() != null) {
data.sponsor = ad.getSponsored().getValue();
}
data.nativeAd = ad;
}
else {
data.isHTML = true;
var targetView = this._tapTargetView.get();
targetView.getLayoutParams().height = this.adItem.height;
}
if (!data.isHTML && this._tapTargetView.get()) {
var targetView = this._tapTargetView.get();
ad.setClickEvent(targetView.getContext(), targetView, null);
}
this.notify(data);
};
XzAdController.prototype.onFailed = function () {
this.notify({
eventName: "fail",
object: null
});
};
return XzAdController;
}(xz_ad_controller_base_1.XzAdControllerBase));
exports.XzAdController = XzAdController;