在应用开发中为了提高应用的收入,一般项目中都会引入广告,而我在开发中用的较多的就是讯飞移动广告平台的接入,下面将介绍讯飞移动广告平台是如何完成接入的。
1.集成说明
1.1申请appid
在/网站中注册成为开发者并创建一款应用,您将获得一个appid,用于标识您的应用。
1.2导入SDK
1.下载最新版SDK的zip包,将其中的libs 文件夹下jar文件复制到本地工程libs子目录下。
2.Eclipse用户右键点击工程根目录,选择Properties-> Java Build Path -> Libraries,然后点击Add External JARs... 选择指向jar的路径,点击OK,即导入成功。
1.3 配置Androidmanifest文件
打开AndroidManifest.xml文件,增加如下权限:
代码示例;
<manifest……><application ……><activity ……/><!--请注意添加单引号--><meta-data android:name="IFLYTEK_APPKEY_AD" android:value="'your_appid'"/></application><uses-permission android:name="android.permission.INTERNET"/><uses-permission android:name="android.permission.READ_PHONE_STATE"/><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/><uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/><uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/><uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/><uses-permission android:name="android.permission.GET_TASKS"/><uses-permission android:name="android.permission.WAKE_LOCK"/></manifest>
1.4组件申明
<manifest……><application ……><serviceandroid:name="com.iflytek.voiceads.update.DownloadService"/></application></manifest>
1.5添加旗帜广告
旗帜广告,即Banner 广告,可以将该广告视图放于任何可以容纳的位置(容纳的容器或位置必须在屏幕内并且尺寸等于或大于广告视图,推荐放在界面的顶部或底部)。旗帜广告具备轮播功能,默认15秒轮播一次。
为了提高应用体验效果,开发者可以为放置广告的Layout自定义背景色或背景图片。
//创建旗帜广告:adId:开发者在广告平台(/)申请的广告位IDIFLYBannerAd bannerAd = IFLYBannerAd.createBannerAd(Activity.this, adId); //设置广告尺寸bannerAd.setAdSize(IFLYAdSize.BANNER); //设置为调试模式bannerAd.setParameter(AdKeys.DEBUG_MODE, "true");//下载广告前,弹窗提示bannerAd.setParameter(AdKeys.DOWNLOAD_ALERT, "true");//请求广告,添加监听器bannerAd.loadAd(mAdListener); LinearLayout layout_ads = (LinearLayout)findViewById(R.id.layout_adview); layout_ads.removeAllViews();layout_ads.addView(bannerAd);IFLYAdListener mAdListener = new IFLYAdListener(){ @Override public void onAdReceive() { //成功接收广告,调用广告展示接口。注意:该接口在回调中才能生效bannerAd.showAd();} @Override public void onAdFailed(AdError error) { // 广告请求失败// error.getErrorCode():错误码, error.getErrorDescription():错误描述} @Override public void onAdClick() { // 广告被点击} @Override public void onAdClose() { // 广告被关闭} };
1.6添加插屏广告
插屏广告,是一种开发者可以在界面过场时请求并根据需要进行展示的间质性广告形式。用户通过点击插屏广告右上角的叉号图片,将广告取消。目前,插屏广告不支持横屏模式。
//创建插屏广告:adId:开发者在广告平台(/)申请的广告位IDIFLYInterstitialAd interstitialAd = IFLYInterstitialAd.createInterstitialAd(Activity.this, adId); //设置广告尺寸interstitialAd.setAdSize(IFLYAdSize.INTERSTITIAL); //点击手机后退键,是否销毁广告:"true":销毁,"false":不销毁,默认销毁interstitialAd.setParameter(AdKeys.BACK_KEY_ENABLE, "true");//添加监听器,请求广告 interstitialAd.loadAd(mAdListener); IFLYAdListener mAdListener = new IFLYAdListener(){ @Override public void onAdReceive() { //成功接收广告,调用广告展示接口。注意:该接口在回调中才能生效interstitialAd.showAd();} @Override public void onAdFailed(AdError error) { // 广告请求失败// error.getErrorCode():错误码,error.getErrorDescription():错误描述} @Override public void onAdClick() { // 广告被点击} @Override public void onAdClose() { // 关闭广告} };
1.7添加全屏广告
全屏广告,一种覆盖整个屏幕进行广告展示的广告类型。广告展示一定时间后退出展示,展示时间可设置。
全屏广告的全屏显示可以通过移除标题栏和状态栏实现,代码参考Demo。
//创建全屏广告:adId:开发者在广告平台(/)申请的广告位IDIFLYFullScreenAd fullScreenAd = IFLYFullScreenAd.createFullScreenAd(Activity.this, adId); //设置广告尺寸fullScreenAd.setAdSize(IFLYAdSize.FULLSCREEN); //设置全屏广告展示时间,单位为ms。默认广告展示5000ms后消失fullScreenAd.setParameter(AdKeys.SHOW_TIME_FULLSCREEN, "6000");//添加监听器,请求广告 fullScreenAd.loadAd(mAdListener); IFLYAdListener mAdListener = new IFLYAdListener(){ @Override public void onAdReceive() { //成功接收广告,调用广告展示接口。注意:该接口在回调中才能生效fullScreenAd.showAd();} @Override public void onAdFailed(AdError error) { // 广告请求失败// error.getErrorCode():错误码,error.getErrorDescription():错误描述} @Override public void onAdClick() { // 广告被点击} @Override public void onAdClose() { // 关闭广告
1.8接口说明
1.8.1错误码
列举了广告请求失败的错误原因,在onAdFailed (AdError error)中返回。
1.8.2广告尺寸
IFLYAdSize表示请求的广告尺寸,具有width和height两个属性,单位为dip。须使用SDK提供的尺寸类型:IFLYAdSize.BANNER,IFLYAdSize.INTERSTITIAL, IFLYAdSize.FULLSCREEN。
1.8.3对外接口
(1) public void setAdSize (IFLYAdSizeadSize)
设置要请求的广告大小(在第一次请求广告前设置)。
(2)publicvoid setParameter (String key, String value)
广告参数设置,请参考2.8.4。
(3) public void loadAd (IFLYAdListenerlistener)
请求广告。
(4) public void showAd ()
展示广告。
1.8.4广告可设置参数
使用示例:
bannerAd.setParameter(AdKeys.APPID, "544e2c99");bannerAd.setParameter(AdKeys.DEBUG_MODE, "true");interstitialAd.setParameter(AdKeys.BACK_KEY_ENABLE, "true");fullScreenAd.setParameter(AdKeys.SHOW_TIME_FULLSCREEN, "6000");bannerAd.setParameter(AdKeys.DOWNLOAD_ALERT, "true");
1.8.5事件监听
添加广告时,可以通过一些监听事件接收广告当前状态。广告监听事件类IFLYAdListener定义的具体事件函数如下表:
2.混淆代码
工程混淆设置:如需打包或者生成Apk的时候进行混淆,在proguard.cfg中添加如下代码:-keep class com.iflytek.voiceads.**{*;}
3.常见问题
1. Q: adUnitId 是什么?
A: adUnitId,即广告位ID,是讯飞移动广告平台为每个广告位分配的唯一标识符。
2. Q: 可以自己设置广告的请求地址吗?
A: 请求地址封装于SDK内部,不允许用户自行设置。
3. Q: SDK 都支持哪些android版本?
A:要求采用android 2.3或更高版本。
4.Q: 如何查看广告SDK版本?
A: 利用Version.getVersion()可获得广告SDK版本号。
4.sdk2.0集成注意事项
1. AndroidManifest.xml中请勿漏写权限声明,请参考2.3。
2.AndroidManifest.xml中需添加DownloadService,请参考2.4。
3.新增设置选项,请参考2.8.4:
1) 广告下载前,可以设置弹出下载提示框,旗帜、插屏、全屏广告设置方式相同。
如:bannerAd.setParameter(AdKeys.DOWNLOAD_ALERT,"true");
2) 全屏广告展示时间设置,有效设置范围为5000~10000和-1。设为-1时,通过点击全屏广告右上角的叉号控件退出广告。
如:fullScreenAd.setParameter(AdKeys.SHOW_TIME_FULLSCREEN,"6000");