万普平台Android版SDK开发者手册
(标准版Ver1.8.4)
平台简介
万普世纪移动营销服务平台(以下称为“万普平台”)的Android 版SDK 提供了一套现成的开发包及Demo源代码,便于开发者在Android应用中方便的集成万普平台的各项功能,包括万普统计、虚拟货币、推荐列表、互动广告、迷你广告、插屏广告、自定义广告等功能。
本文档描述了标准版SDK的用途与用法,并提供了示例代码。您仅需要在现有的应用中加入少量新代码,就可以集成万普平台的各项功能,轻松获得用户量和收入的倍增。
使用步骤
1.加入jar包
将AppOffer_1.8.4.jar 包放入工程指定的libs目录
注意:万普SDK从1.8.2版SDK开始已更换了包名,原所有com.waps.*包名已更换为cn.waps.*,如使用老版本SDK直接升级的,请注意修改相关代码及配置文件。
2.修改AndroidManifest.xml文件
⑴确保应用具有以下几项Permission权限:
<uses-permission android:name="android.permission.INTERNET" /> |
⑵在<application>段内添加以下内容:
<activity android:name="cn.waps.OffersWebView" android:configChanges="keyboardHidden|orientation"/> <!--以下属性为应用ID,从万普后台获取--> <!--以下属性为分发渠道ID,编码表参见本文档末附表--> |
WAPS_ID(或APP_ID)为应用标识,该值由万普平台添加应用后自动生成,点击“应用详情”获取;
WAPS_PID(或APP_PID)为分发渠道标识,上传到万普平台的版本填“WAPS”,分发给其他渠道的版本填写相应值(比如“Google”)后重新打包即可;不同的分发包应填写不同的渠道标识,才能在万普统计平台区分来自不同渠道的数据。该值必须由英文字母和数字组成,不能是纯数字,不能包含空格或中文。常见WAPS_PID编码表请参见本文档附表《常用渠道编码表》。
开发者可以通过代码实现来替代本段设置,详见本文档第4节《自定义代码模式》
⑶如果应用进行了混淆编译,需要在混淆的配置文件中加入以下代码,避免SDK被二次混淆编译,才能确保SDK功能正常使用。如果开发者使用了定制名的SDK,也需要对相应的包名加入类似代码。
-keep public class cn.waps.** {*;} -keep public interface cn.waps.** {*;} |
3.接口代码
(一)数据统计接口
该接口是所有其他接口能正常使用的基础,在每次应用启动时,必须调用该接口,才能保证获得准确的统计数据。
步骤1:在的应用中第一个Activity类中(启动的第一个类),添加下面一行代码:
//方式①:通过AndroidManifest文件读取WAPS_ID和WAPS_PID AppConnect.getInstance(this); //必须确保AndroidManifest文件内配置了WAPS_ID //方式②:通过代码设置WAPS_ID和WAPS_PID AppConnect.getInstance("WAPS_ID","WAPS_PID",this); |
步骤2:在程序退出的处理方法中, 添加下面一行代码:
//以下方法将用于释放SDK占用的系统资源 AppConnect.getInstance(this).finalize(); |
(二)虚拟货币接口
在应用中合理设置虚拟货币及消费机制,可促进用户参与应用内购买或参与广告活动,增强应用粘性,大幅提升收益。如果您的应用使用了虚拟货币功能,需使用此接口与服务器同步用户的虚拟货币余额。
⑴获取用户虚拟货币
步骤1: 从服务器端获取用户点数/虚拟货币余额:
AppConnect.getInstance(this).getPoints(this); |
步骤2: 确保在this类中实现UpdatePointsNotifier接口,实现下面的两个回调方法,用于异步接收服务器返回的结果:
public void getUpdatePoints(String currencyName, int pointTotal);//获取成功 public void getUpdatePointsFailed(String error);//获取失败 |
⑵花费用户虚拟货币
AppConnect.getInstance(this).spendPoints(int amount,this); |
调用此方法的响应结果将通过this中实现的UpdatePointsNotifier接口返回
⑶奖励用户虚拟货币
AppConnect.getInstance(this).awardPoints(int amount,this); |
调用此方法的响应结果将通过this中实现的UpdatePointsNotifier接口返回
注意,所有通过万普广告获得的虚拟货币将自动给予到用户,无需调用该接口。该接口仅用于用户完成了开发者指定的其他任务的情况下额外给予用户虚拟货币。
(三)推荐列表接口
推荐列表(也称Offer,广告墙)是万普平台提供的一种集中展示型广告。开发者可在应用中合适的位置加入“推荐应用”、“免费赚积分”等类似字样的功能,获取更高的广告收益。添加如下代码,即可显示万普平台推荐应用列表:
AppConnect.getInstance(this).showOffers(this); |
说明:以上方法调用的为综合推荐列表。从1.6.6版本开始,新增加了showAppOffers(this)和showGameOffers(this)接口,用于单独调用推荐软件列表和推荐游戏列表。
提示:开发者可通过万普后台的【广告设置】功能,手动设置推荐列表的显示样式和广告内容。
(四)互动广告接口
互动广告是一个显示在应用内固定位置高度为50像素广告条,将自动显示万普平台提供的广告。结合虚拟货币功能使用,可获得最佳的广告效果和用户体验。
步骤1: 复制如下代码到相应Activiy的Layout文件中,并放置在合适的位置:
<LinearLayout android:id="@+id/AdLinearLayout" android:layout_width="fill_parent"
|
步骤2: 在调用样式文件的Activity类中, 添加下面的代码:
LinearLayout container =(LinearLayout)findViewById(R.id.AdLinearLayout); new AdView(this,container).DisplayAd(); |
(五)插屏广告接口
插屏广告是1.8版本SDK开始推出的一种新型广告形式,以全屏对话框的新式显示广告,支持透明背景和浮层特效。和传统Banner广告相比,显示效果更炫,转化率更高,而且具有良好的用户体验。不占用固定广告位,特别适用于应用启动、游戏通关等场景使用。
⑴始化(预先加载)广告数据
AppConnect.getInstance(this).initPopAd(this); |
说明:该方法将通过异步方式预先加载3-5条插屏广告到本地缓存,以便应用内调用插屏广告时能立即显示广告。如果事先未通该方法初始化广告,或者在数据未加载完成的情况下直接显示插屏广告,将重新异步加载一次数据,等待数据加载完成后才能显示出广告,会造成一定的延时。
⑵显示插屏广告
AppConnect.getInstance(this).showPopAd(this); |
该方法将更根据应用当前场景,用自适应方式显示插屏广告。为避免频繁调用影响用户体验,SDK限制该方法3分钟内只能调用一次。
可以使用showPopAd的另一个重载方法以指定样式(android.R.style.Theme_*)显示插屏广告。无特殊要求的情况下,不需自定义样式。指定插屏广告样式的调用方法:
AppConnect.getInstance(this).showPopAd(this, theme); |
⑶获取插屏广告对话框(可选)
Dialog popAdDialog = AppConnect.getInstance(this).getPopAdDialog(); |
该方法仅用于先通过调用showPodAd方法正常显示出插屏广告后,获取到插屏广告对话框实例,实现对插屏广告的显示过程灵活控制,比如监听广告关闭事件、定时自动关闭广告等自定义效果,但不能用于取代showPodAd方法直接显示插屏广告。当插屏广告尚未正常显示时,该方法可能会获取到空值。
⑷获取插屏广告内嵌布局(可选)
//获取默认宽高的插屏广告布局 View popAdDialog = AppConnect.getInstance(this).getPopAdView(this);//默认400*400 //获取可自定义宽高的插屏广告布局 View popAdDialog = AppConnect.getInstance(this).getPopAdView(this, width, height); |
该接口可用于将插屏广告灵活插入到应用内,用于实现开屏广告、退屏广告、界面内嵌入式广告等灵活的广告形式。随本文档提供的Demo程序中,提供了一份完整的开屏广告和退屏广告的实现样例和源码,开发者可直接引用,也可进行任意修改用于实现更多的广告形式。
(六)自定义广告接口
开发者可通过自定义广告广告接口获取所有可用广告的元数据,自定义广告的展现方式,便于让广告内容完全和您的应用UI融合,可显著提升广告效果。
⑴初始化(预先加载)广告数据
AppConnect.getInstance(this).initAdInfo(); |
说明:该接口将在首次调用时,需要预先将所有可用广告的元数据(通常20条左右)全部获取到手机内存,便于程序随时快速调用。广告数据首次加载时间视网络情况决定,通常需要花几秒钟时间,因此,如果应用内需要使用自定义广告功能,建议在程序启动后,尽早先调用initAdInfo()方法预先异步加载一次元数据,便于后续调用getAdInfo()或getAdInfoList()方法时能立即获得数据。
⑵随机获取一条广告的元数据
AdInfoadInfo = AppConnect.getInstance(this).getAdInfo();//每次调用将自动轮换广告 String adId = adInfo.getAdId(); //广告id String adName = adInfo.getAdName(); //广告标题 String adText = adInfo.getAdText(); //广告语文字 Bitmap adIcon = adInfo.getAdIcon(); //广告图标(48*48像素) int adPoint = adInfo.getAdPoints(); //广告积分 String description = adInfo.getDescription(); //应用描述 String version = adInfo.getVersion(); //程序版本 String filesize = adInfo.getFilesize(); //安装包大小 String provider = adInfo.getProvider(); //应用提供商 String[] imageUrls = adInfo.getImageUrls(); //应用截图的url数组,每个应用2张截图 String adPackage = adInfo.getAdPackage();//广告应用包名 String action = adInfo.getAction(); //用于存储“安装”或“注册”的字段 |
⑶获取所有可用广告的元数据
List<AdInfo> adInfoList = AppConnect.getInstance(this).getAdInfoList(); |
⑷自定义广告事件处理接口
//当广告被点击时,显示广告详情 AppConnect.getInstance(this).clickAd(adInfo.getAdId()); //当用户确认要下载广告应用时,启动下载(仅适用于应用下载类广告) AppConnect.getInstance(this).downloadAd(adInfo.getAdId()); |
(七)迷你广告接口
迷你广告是一种基于自定义广告的广告形式,每个广告由一个微缩图标和文字链组成,高度仅为24像素,文字颜色、背景颜色及透明度可自定义,特别适用于广告位空间有限的游戏类应用。和传统的Banner大广告条相比,迷你广告采用了流量压缩和本地缓存方式轮换广告,不仅省广告位,而且非常省流量,广告轮换频率更高,相比传统Banner广告条有更高的收益。
步骤 1:复制如下代码到相应Activiy的Layout文件中,并放置在合适的位置:
<LinearLayout android:id="@+id/miniAdLinearLayout" |
步骤 2:在调用样式文件的Activity类中, 添加下面的代码:
//设置迷你广告背景颜色 AppConnect.getInstance(this).setAdBackColor(Color.argb(50, 120, 240, 120)); //设置迷你广告广告语颜色 AppConnect.getInstance(this).setAdForeColor(Color.YELLOW); //若未设置以上两个颜色,则默认为黑底白字 LinearLayout miniLayout =(LinearLayout)findViewById(R.id.miniAdLinearLayout); new MiniAdView(this, miniLayout).DisplayAd(10); //默认10秒切换一次广告 |
(八)工具组件接口
⑴用户反馈接口
在应用内增加用户反馈功能可收集用户意见反馈,便于改进用户体验;开发者可通过管理后台查看用户的反馈信息。添加以下代码收集用户反馈:
AppConnect.getInstance(this).showFeedback(); |
⑵自家应用列表
自家应用列表可采用类似推荐列表的形式,列出将开发者自己在万普平台发布的所有应用供用户下载,便于开发者自家应用之间相互推荐。添加以下代码显示开发者自家应用列表:
AppConnect.getInstance(this).showMore(this); |
1.8.2版本增加重载方法showMore(this, app_id),第二参数app_id为开发者指定的某个应用的WAPS_ID,调用该方法,可直接展示该应用的下载详情页面。调用方法如下:
AppConnect.getInstance(this).showMore(this, app_id); |
⑸ 在线配置接口
//String value=AppConnect.getInstance(this).getConfig(String key);//不推荐使用该方式 Stringvalue=AppConnect.getInstance(this).getConfig(String key, String defaultValue); |
开发者可以通过万普平台管理后台的“在线配置”功能设置各种参数值,便于在线修改应用的各项配置。其中参数key为在线配置的参数ID,通过此方法可获取到对应的值。
注意:该方法将在统计器初始化时返回所有参数值,缓存到本地调用,因此需在统计器初始化完成后再调用该方法,才能保障可靠获取到在线参数值。开发者可自行定义一个缺省值defaultValue,如果在第一次统计器未初始化完成时调用,将使用该默认值来替代在线参数进行操作,避免造成线程阻塞。
系统同时提供了一个同步获取在线参数的接口(该方法会阻塞进程),每次都从服务器获取参数值:
Stringvalue=AppConnect.getInstance(this).getConfig_Sync(String key); |
⑷错误报告接口
开发者可通过代码开启错误报告功能,并通过管理后台的“错误报告”功能随时查看收集到的错误报告,以便及时进行修正。
AppConnect.getInstance(this).setCrashReport(false);//默认值true开启,设置false关闭 |
⑸自动更新接口
自动更新功能可以检查程序的最新版本,提醒用户下载升级程序。开发者在万普平台【应用详情】中勾选了“检查新版本”选项,每次应用启动时将自动检查新版本。开发者也可以关闭自动检查新版本功能,使用以下代码实现手动检查新版本:
AppConnect.getInstance(this).checkUpdate(this); |
4.自定义代码模式
某些不便于在AndroidManifest内添加配置的情况下,可使用自定义代码模式取代原有的配置。原有的常规配置方式为:
<activity android:name="cn.waps.OffersWebView" android:configChanges="keyboardHidden|orientation"/> <meta-data android:name="WAPS_ID" android:value="WAPS_ID" /> <meta-data android:name="WAPS_PID" android:value="WAPS_PID" /> |
使用自定义代码模式替代以上配置的方法:
步骤1:自定义一个OffersWebView类的子类(类名任意指定):
public class MyAdView extends cn.waps.OffersWebView { } |
步骤2:在AndroidManifest内注册该子类,在<application>段内添加:
<activity android:name="MyPackage. MyAdView" android:configChanges="keyboardHidden|orientation"/> |
其中“MyPackage.MyAdView”值要替换为具体的包名和类名,比如“cn.waps.MyAdView”
步骤3:使用以下方式替代AppConnect.getInstance(this)方法初始化统计器:
//AppConnect.getInstance("WAPS_ID",this); //仅设置WAPS_ID |
此外,也可以通过另外一种在AndroidManifest文件内添加配置的方式,来替代以上步骤3的代码:
<meta-data android:name="ADVIEW" android:value=" MyPackage. MyAdView " /> <meta-data android:name="APP_ID" android:value="应用标识" /> <meta-data android:name="APP_PID" android:value="分发渠道标识" /> |
注意,自定义代码模式仅用于不便于在AndroidManifest文件内添加配置的情况。上传到万普平台的版本建议不要使用该方式,不然可能无法通过万普平台的自动审核。
5.常用渠道编码表
对用于每个分发渠道的安装包设置一个不同的WAPS_PID(渠道标识),可便于统计各渠道的用户数。万普平台的广告将针对各种主流分发渠道进行优化,在分发包内使用正确的指定渠道标识,可获得更好的推广效果;如果未设置正确的渠道标识,可能会导致无法通过部分应用商店的审核。
WAPS_PID |
渠道名称 |
|
WAPS_PID |
渠道名称 |
WAPS |
万普平台(默认) |
|
|
腾讯应用 |
|
GooglePlay市场 |
|
3G |
3G安卓市场 |
91 |
91手机助手 |
|
360 |
360应用 |
hiapk |
安卓市场 |
|
baidu |
百度应用 |
gfan |
机锋市场 |
|
sohu |
搜狐应用 |
goapk |
安智市场 |
|
163 |
网易应用 |
appChina |
掌上应用汇 |
|
UC |
UC应用商店 |
mumayi |
木蚂蚁市场 |
|
dangle |
当乐游戏中心 |
eoe |
优亿市场 |
|
samsung |
三星乐园 |
nduo |
N多市场 |
|
moto |
摩托智件园 |
feiliu |
飞流下载 |
|
xiaomi |
小米市场 |
crossmo |
十字猫商店 |
|
lenovo |
联想乐商店 |
huawei |
华为智汇云 |
|
nearme |
NearMe商店 |
万普平台: 技术支持:小万 QQ:909155540 电话:4006-178-378