敬告:此 DEMO 演示为开放测试页面,仅用于开发者快速测试体验应用功能,请严格遵守开发者协议,了解更多。
♦ JS-SDK 引用方式:
♦ 普通网页 script 方式加载:下载最新版 jsBridge-v20250116.zip,请在页面上调用 jsBridge 接口之前引用 jsbridge-mini.js 库;
♦ js module 方式引用:npm install ym-jsbridge 具体请参考 npm package
♦ 今日头条 穿山甲GroMore,去申请接入 GroMore;
事件监听
• 如需接口调用事件,请设置此监听器;
jsBridge.ttGm.setListener(function(event, data) { switch (event) { //激励视频 jsBridge.ttGm.reward(...) case "reward": { switch (data.action) { //加载功取 case "onRewardVideoAdLoad": { break; } //缓冲完成 case "onRewardVideoCached": { break; } //加载失败,data.message 为失败说明 case "onRewardVideoLoadFail": { break; } //激励达成 case "onRewardVerify": { break; } //点击 case "onRewardClick": { break; } //关闭 case "onRewardedAdClosed": { break; } //展示 case "onRewardedAdShow": { break; } //展示失败 case "onRewardedAdShowFail": { break; } //跳过 case "onSkippedVideo": { break; } //播放完成 case "onVideoComplete": { break; } //视频错误 case "onVideoError": { break; } } break; } //插全屏 jsBridge.ttGm.interstitialFull(...) case "interstitialFull": { switch (data.action) { //加载功取 case "onInterstitialFullAdLoad": { break; } //缓冲完成 case "onInterstitialFullCached": { break; } //加载失败,data.message 为失败说明 case "onInterstitialFullLoadFail": { break; } //激励达成 case "onRewardVerify": { break; } //此方法会在用户点击打开其他应用(例如 Google Play)时于 onAdOpened() 之后调用 case "onAdLeftApplication": { break; } case "onAdOpened": { break; } //点击 case "onInterstitialFullClick": { break; } //关闭 case "onInterstitialFullClosed": { break; } //展示 case "onInterstitialFullShow": { break; } //展示失败 case "onInterstitialFullShowFail": { break; } //跳过视频播放(针对全屏广告) case "onSkippedVideo": { break; } //视频播放完毕(针对全屏广告) case "onVideoComplete": { break; } //视频播放失败(针对全屏广告) case "onVideoError": { break; } } break; } //Banner jsBridge.ttGm.banner(...) case "banner": { switch (data.action) { //加载成功 case "onAdLoaded": { break; } //加载失败,data.message 为失败说明 case "onAdFailedToLoad": { break; } //点击 case "onAdClicked": { break; } //关闭 case "onAdClosed": { break; } //此方法会在用户点击打开其他应用(例如 Google Play)时于 onAdOpened() 之后调用 case "onAdLeftApplication": { break; } case "onAdOpened": { break; } //展示 case "onAdShow": { break; } //展示失败 case "onAdShowFail": { break; } } break; } } //此函数仅用于显示回调参数在本 DEMO 页面上 showResult({ event: event, data: data }); }); //请拉到页面底部查看回调数据信息 $('html,body').animate({ scrollTop: $('#view').offset().top }, 500); /** 回调参数说明: event - 事件代码,字符串 data - 事件数据,JSON 对象 **/
//移除监听器,不会再收到回调通知 //在需要时可重新调用 setListener jsBridge.ttGm.removeListener();
//非必须的,即使没有权限也不影响广告展示 //但建议请求权限,可优化投放广告精准度和用户的交互体验,提高eCPM jsBridge.ttGm.requestPermissionIfNecessary();
展示广告
codeId:
orientation:
//如果拉起广告失败,请参考 错误码 说明 jsBridge.ttGm.reward({ //字符串,广告位 ID codeId: "{{reward.codeId}}", //字符串,屏幕方向,与广告位的设置一致 //VERTICAL 竖屏 //HORIZONTAL 横屏 orientation: "{{reward.orientation}}", //字符串,激励奖品名称 rewardName: "金币", //数字,激励奖品数量 rewardAmount: 5, //字符串,用户ID userId: "user123", //字符串,任意自定义数据 //一般用于 激励视频回调 customData: "" }, function(succ, res) { if (!succ) { alert(JSON.stringify(res)); } });
codeId:
orientation:
jsBridge.ttGm.interstitialFull({ //字符串,广告位 ID codeId: "{{interstitialFull.codeId}}", //字符串,屏幕方向,与广告位的设置一致 //VERTICAL 竖屏 //HORIZONTAL 横屏 orientation: "{{interstitialFull.orientation}}", //字符串,激励奖品名称 rewardName: "金币", //数字,激励奖品数量 rewardAmount: 5, //字符串,用户ID userId: "user123" }, function(succ, res) { if (!succ) { alert(JSON.stringify(res)); } });
codeId:
jsBridge.ttGm.banner({ //字符串,广告位 ID codeId: "{{banner.codeId}}", //数字,到顶部的距离 top : 20, //数字,宽度 请参考 width : 320, //数字,高度 height: 100, //字符串,用户ID userId: "user123" }, function(succ, res) { if (!succ) { alert(JSON.stringify(res)); } });
codeId:
jsBridge.ttGm.banner({ //字符串,广告位 ID codeId: "{{banner.codeId}}", //数字,到底部的距离 bottom: 20, //数字,宽度 请参考 width : 320, //数字,高度 height: 100, //字符串,用户ID userId: "user123" }, function(succ, res) { if (!succ) { alert(JSON.stringify(res)); } });
jsBridge.ttGm.banner({ remove: true }, function(succ, res) { if (!succ) { alert(JSON.stringify(res)); } });
//一般情况在穿山甲后台开启广告位预缓存功能使用 show/close 缓存机制就可以了 //本 preload 接口主要用于冷启动 APP 时预加载首次展示广告,具体说明请参考这里 jsBridge.ttGm.preload({ //激励视频 //参数应跟调用 reward 接口时一致,否则无法命中缓存 参见这里 reward: { //激励视频广告位 ID 列表 codeIdList: [ "1111111111", "2222222222" ], orientation: "VERTICAL", rewardName: "金币", rewardAmount: 5, userId: "user123", customData: "" }, //插全屏、全屏视频 //参数应跟调用 interstitialFull 接口时一致,否则无法命中缓存 参见这里 interstitialFull: { //插全屏、全屏视频广告位 ID 列表 codeIdList: [ "3333333333", "4444444444" ], orientation: "VERTICAL", rewardName: "金币", rewardAmount: 5, userId: "user123" }, //并行加载的广告位数,默认值为2,合法值为[1,20] parallelNum: 2, //时间间隔,默认值为2s,合法值为[1,10] interval: 2 }, function(succ, res) { alert(succ ? "处理成功" : `处理失败 ${JSON.stringify(res)}`); });
监听回调数据: