123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178 |
- import Utils from "../utils/Utils";
- export default class ADManager {
- private static _ins: ADManager = null;
- public static get ins(): ADManager {
- return ADManager._ins ??= new ADManager();
- }
- /* ... */
- // view AD steps is [1,2,3,5,6,7], click AD steps is [1,2,3,6,7,5,4]
- callbackFunc = {
- // Indicates load ad resource from OpenAD platform, false will be returned if there is no resource to be loaded for the publisher slot/zone
- onAdResourceLoad: (e) => {
- // 'step1', e = true / false
- },
- // Indicates the interactive ad is opening
- onAdOpening: (e) => {
- // 'step2', e = true / false
- console.log("onAdOpening:", e);
- },
- // Indicates the interactive ad is opened,
- onAdOpened: (e) => {
- // 'step3', e = true / false
- console.log("onAdOpened:", e);
- },
- // indicates the interactive ad task is finished, the task is defined by publisher
- onAdTaskFinished: (e) => {
- // 'step5', e = true / false
- console.log("onAdTaskFinished:", e);
- },
- // Indicates the interactive ad is closing
- onAdClosing: (e) => {
- // 'step6',e = true / false
- console.log("onAdClosing:", e);
- },
- // Indicates the interactive ad is closed
- onAdClosed: (e) => {
- // 'step7', e = view / click / close
- // close: user manually closed ads. client side can not get any rewards.
- if (e === "close") {
- // do sth ...
- }
- // view: viewed Ad completed, not clicked, not manually closed ads; client side needs to get rewards level 1.
- if (e === "view") {
- // do sth ...
- }
- // click: clicked Ad completed, include viewed Ad, not manually closed ads; client side needs to get rewards level 2.
- // If your app is 'WEB3' or 'WEB', can add codes below; 'LMA' or 'LWA' can not write codes here.
- if (e === "click") {
- // do sth ...
- }
- console.log("onAdClosed:", e);
- },
- // Indicates clicked and jumps
- onAdClick: (e) => {
- // 'step4', e = true / false
- console.log("onAdClick:", e);
- },
- };
- clickReward = async () => {
- // maybe this is a ajax, maybe a ws, or somthing. async mode.
- // let res = await getRewardsLevel2Method;
- console.log("点击广告的clickReward");
- if (this.getSuccess) {
- this.getSuccess.call(null);
- }
- };
- getSuccess: Function;
- // 展示Google广告
- public showGoogleAD(callBack: Function) {
- this.getSuccess = callBack;
- if (Utils.getQueryString("ad") == "1") {
- callBack(true);
- return;
- }
- console.log("showGoogleAD:", callBack);
- //@ts-ignore
- if (!window.googletag) {
- console.log("googletag not init");
- return;
- }
- //@ts-ignore
- const googletag = window.googletag || { cmd: [] };
- var that = this;
- googletag.cmd.push(() => {
- console.log(
- "googletag.enums.OutOfPageFormat.REWARDED:",
- googletag.enums.OutOfPageFormat.REWARDED
- );
- const rewardedSlot = googletag
- .defineOutOfPageSlot(
- "/23296944437/rewarded",
- googletag.enums.OutOfPageFormat.REWARDED
- )
- .addService(googletag.pubads());
- console.log("rewardedSlot:", rewardedSlot);
- googletag.enableServices();
- googletag.pubads().addEventListener("rewardedSlotReady", function (evt) {
- // if (confirm("want to see a rewarded ad?")) {
- var result = evt.makeRewardedVisible();
- console.log("makeRewardedVisible return:", result);
- });
- googletag
- .pubads()
- .addEventListener("rewardedSlotGranted", function (evt) {
- console.error("granted123! " + JSON.stringify(evt.payload));
- // {type:"",amount:0}
- if (that.getSuccess) {
- that.getSuccess.call(evt.payload);
- }
- });
- googletag.pubads().addEventListener("rewardedSlotClosed", function (evt) {
- console.error("Closed by the user!");
- googletag.destroySlots([rewardedSlot]);
- });
- googletag.display(rewardedSlot);
- // googletag.display("div-gpt-ad-1747208248493-0");
- });
- }
- // 展示Line广告
- //@ts-ignore
- public showInterLineAD(callBack: Function) {
- this.getSuccess = callBack;
- console.log("showInterLineAD:", callBack);
- /* ... */
- const LineAD = {
- adInfo: {
- zoneId: 430, // int, This is an example zoneId, please get your own code parameters
- publisherId: 15, // int, This is an example publisherId, please get your own code parameters
- },
- adParams: {
- line: {
- type: "LMA", // LMA, LWA
- liffId: "2007001592-ozOgMXpb", // when type = LMA / LWA, liffId is required
- //@ts-ignore
- prototype: window.liff, // when type = LMA / LWA, prototype is required. line.prototype must contain two methods: getProfile and openWindow, whether you are using liff SDK js or npm installation package;
- },
- wallet: {
- // If you have a web3 wallet components, Optional
- type: "eth", // eth: eth wallet, kaia: line wallet, ton: ton wallet;
- provider: null, // here is a provider object after wallet initialization.
- components: "", // web3 wallet components name
- },
- },
- };
- /* ... */
- //@ts-ignore
- window.OpenADLineJsSDK.interactive.init({ ...LineAD }).then((res) => {
- console.log("window.OpenADLineJsSDK.interactive:", res);
- if (res.code === 0) {
- // you can callback 'getRender' function, user can load an interactive ad;
- //@ts-ignore
- window.OpenADLineJsSDK.interactive.getRender({
- adInfo: LineAD.adInfo,
- cb: this.callbackFunc,
- clickReward: this.clickReward,
- });
- } else {
- console.error("no ad!");
- // you can't callback 'getRender' function, user can't load an interactive ad;
- }
- });
- }
- /* ... */
- }
|