跳到主要内容

接入穿山甲广告

Egret Native 可以通过原生扩展能力接入第三方原生SDK,本文将为开发者介绍如何接入广告系统。

穿山甲是字节跳动提供的广告接入SDK,提供了多种广告样式,具体信息可以参见其官方文档

穿山甲平台准备

进入穿山甲平台官网,完成注册登录,并按照平台要求完成应用和代码位的创建,具体操作可参照平台帮助中心的说明。

Android

下载示例 Demo

白鹭引擎已经为开发者提供了示例 Demo,开发者可以直接基于该 Demo 学习如何接入穿山甲广告SDK。demo项目包含一个egret工程,一个android工程,一个debug安装包。


|-- openadsdk # 这是白鹭项目

|-- openadsdk-android # 这是白鹭发布的 EgretNative项目

|-- openadsdk_demo.apk # 这是生成的APK文件,开发者可以直接安装预览效果


工程配置

参考穿山甲官方接入文档,或直接修改使用提供的android工程,并在Adcode.java文件中对应设置好应用id和代码位code。

使用方法

步骤1:导入egret示例项目中的src/openadsdk
步骤2:在您的egret项目中恰当的位置直接调用相关静态方法

目前包含五种广告接入

  1.    SplashAd: 开屏广告

设置您安卓工程中的AndroidManifest.xml文件,将SplashActivity作为启动,并在需要的情况下修改该文件的goToMainActivity()方法跳转到您指定的活动。值得注意的是,虽然sdk中提供了调起开屏广告的api,但不应该这样做,它并不像其他广告类型那样需要主动唤起。


<activity

android:name=".sdk.SplashActivity"

android:configChanges="keyboard|orientation|screenSize"

android:screenOrientation="portrait"\>

<intent-filter\>

<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />

</intent-filter\>

</activity\>


  1.    RewardVideoAd:激励视频广告

激励广告需要设置如下参数,当回调事件参数的event属性值为"onRewardVerify"时,会返回您需要的数据,如"verify",它表示奖励是否有效。


//激励广告

const data = {

is_horizontal: false,//是否为横屏广告

userID: "user0",//用户id

rewardAmount: 1,//奖励数量

rewardName: "金币"//奖励名称

}

openadsdk.RewardVideoAd((json) => {

console.log("激励广告事件:" + json)

const data = JSON.parse(json);

if(data.event === "onRewardVerify"){

const verify =data.verify;//是否有效

const amount =data.amount;//奖励数量

const name =data.name;//奖励名称

}else if(data.event === "onAdShow"){

console.log("广告显示")

}else if(data.event === "onAdVideoBarClick"){

console.log("点击banner")

}else if(data.event === "onAdClose"){

console.log("关闭广告")

}else if(data.event === "onVideoComplete"){

console.log("视频播放完毕")

}else if(data.event === "onVideoError"){

console.log("视频播放错误")

}else if(data.event === "onSkippedVideo"){

console.log("跳过")

}

}, this, JSON.stringify(data))


  1.    FullScreenVideoAd: 全屏视频广告

设置参数:是否为横屏。


//全屏广告

const data = {

is_horizontal: false,//是否为横屏广告

}

openadsdk.FullScreenVideoAd((json) => {

console.log("全屏广告事件:" + json)

}, this, JSON.stringify(data))


  1.    BannerExpressAd: banner广告

参数包括是否在屏幕顶部,宽度,高度,【尺寸请和平台设置保持一致】。


//banner广告

const data = {

is_top:false,

width:600,

height:90

}

openadsdk.BannerExpressAd((json) => {

console.log("banner广告事件:" + json)

}, this, JSON.stringify(data))


  1.    InteractionAd: 插屏广告

参数包括宽度,高度,【尺寸请和平台设置保持一致】。


//插屏广告

const data = {

width:900,

height:900

}

openadsdk.InteractionAd((json) => {

console.log("插屏广告事件:" + json)

}, this, JSON.stringify(data))


步骤3:发布到对应android工程中

关于返回事件

在egret项目中,广告回调的参数为json格式的字符串,其中event属性说明了该事件的类型,类型说明如下,这边只是转发了穿山甲sdk原生的协议回调,并不是所有类型广告都包含如下事件类型,如:激励广告无法跳过,banner广告没有视频类消息,ios和android也不尽相同,提供的原生工程对广告的封装实现也是直接复制了穿山甲提供的工程源码,所以,请严格测试,参考原生代码,合理使用回调事件。


onAdClicked //广告点击

onAdShow //广告出现

onAdDismiss //插屏广告关闭

onError //错误

onSelected //banner关闭按钮

onCancel //点击取消

onAdVideoBarClick //视频类bar点击

onAdClose //广告关闭

onVideoComplete //视频类播放完成

onVideoError //视频类错误

onRewardVerify //激励确认

onSkippedVideo //视频类跳过


IOS

下载示例Demo

白鹭引擎已经为开发者提供了示例 Demo,开发者可以直接基于该 Demo 学习如何接入穿山甲广告SDK。demo项目包含一个egret工程,一个iOS工程


|-- openadsdk # 这是白鹭项目

|-- openadsdk-ios # 这是白鹭发布的 EgretNative项目


工程配置

参考穿山甲官方接入文档,或直接修改使用提供的ios工程,这里详细走一遍官方提供的CocoaPods流程

步骤一:安装cocoapods
gem install cocoapods


步骤二:下载Git LFS ,解压,安装

sudo sh install.sh


步骤三:cd到你的xcode工程中创建Podfile文件写入如下,这里的'openadsdk'是xcode工程的项目target,也就是egret发布中填写的应用名称

source 'https://github.com/CocoaPods/Specs.git'

platform :ios, '8.0'

target 'openadsdk' do

pod 'Bytedance-UnionAD'

end


步骤四:pod install


pod install


注:不同网络环境下pod的安装速度会有较大差异,首次安装会有大概2G左右的文件下载,请耐心等待,并通过活动监视器查看下载速度,若速度过慢,请考虑设置git代理,或自行clone可用仓库到本地。

步骤五:打开ios-template.xcworkspace
步骤六:参照官方接入中心iOS-SDK接入文档中的《Xcode编译选项设置》完成剩余工程配置
步骤七:文件修改

1:将示例 iOS 工程中的ios-template/sdk文件夹导入到您的 iOS 工程中
2:参照示例ios工程中的AppDelegate.h修改您ios工程的对应文件
3:为AppDelegate.mm添加如下两个方法


-(void)initJSEvent:(EgretNativeIOS*)native{

NSLog(@"InitJSEvent");

}

-(void)InitAD:(UIViewController*)root{

NSLog(@"InitAD");

}


并在didFinishLaunchingWithOptions中调用


//init

[self initJSEvent:_native];

[self InitAD:viewController];

return true;


4:在sdk/AdManager.h文件中设置您的广告信息,如appKey,XXX_ID

使用方法

目前包含五种广告接入

  1. SplashAd: 开屏广告

开屏广告的入口函数调用位于:


AppDelegate-Category.m ## 文件

-(void)setupBUAdSDK{} ## 方法

[self addSplashAD]; ## 语句


请根据需要注释或保留,值得注意的是,虽然sdk中提供了调起开屏广告的api,但不应该这样做,它并不像其他广告类型那样需要主动唤起

  1. 其他请参考安卓文档中使用方法关于其他类型广告的说明

注:代理会影响广告的下载,请在测试时关闭代理