mdindex
Version:
markdown index
993 lines (709 loc) • 32.1 kB
Markdown
## **<center>AFP Android SDK集成指南</center>**
### 1. 简介:
* 服务简介:
AFP SDK提供了聚合广告、收入
优化的流量托管等多种广告流量售卖方式,让您流量的策略更加灵活,并可以借助我们提供的人群定向、日志和报表分析等服务来获得最大化的收益。
* SDK 简介:
* 提供 _**<font color='green'>5</font>**_ 种样式: 横幅、全/插屏、开屏、焦点图、信息流。
---
### 2. 建立广告位,获取广告位ID
* 通过网站创建广告位并配置广告平台,获取广告位ID
### 3. SDK的集成
#### 3.1 SDK 目录结构
* alimm_core:基础核心包,所有样式必须集成
* alimm_banner:横幅(Banner)样式包
* alimm_insert:插屏样式包
* alimm_welcome:开屏样式包
* alimm_loopimage:焦点图样式包
* alimm_feed:信息流样式包
* alimm_dependency:聚合广告平台依赖包([对照表](#ad_libs))
注:除基础核心包必须集成外,其余只需按需集成,需要类库 'android-support-v4.jar'
#### 3.2 导入SDK 所需的文件
1. 将`alimm_core`目录中`libs`子目录下jar包复制到本地工程`libs`子目录下。
2. 将`alimm_core`目录中 `assets/mu/`文件夹中的apk文件添加到本地工程的 `assets/mu/`下。
3. 将欲集成样式相对应的目录中`assets/mu/`文件夹中的apk文件添加到本地工程的 `assets/mu/`下,例如:只集成banner样式,则只需将`alimm_banner`中的apk文件添加到本地工程的 `assets/mu/`下
4. 若使用了聚合广告平台,则需要将相应的聚合平台依赖包添加到本地工程`libs`目录下,例如:使用了百度平台,需要将`alimm_dependency`目录中`libs`子目录下`Baidu_MobAds_SDK_v4.4.jar`复制到本地工程`libs`子目录下。([对照表](#ad_libs))
注:不能修改apk文件的名字
#### 3.3 添加渠道 (可选:用户按渠道进行推广)
在`AndroidManifest.xml`文件的`<application>`中添加
##### 3.3.1 添加渠道123 (可选:用户按渠道进行推广)
###### 3.3.2 添加渠道1234 (可选:用户按渠道进行推广)
```
<meta-data android:value="xxxxxxxx" android:name="MUNION_CHANNEL"></meta-data>
```
#### 3.4 添加访问权限
在`AndroidManifest.xml`文件中添加
```
<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_SETTINGS" />
<uses-permission android:name="android.permission.READ_PHONE_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.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
```
注意:这里只列出了必须的权限,若使用聚合广告请根据平台需求添加,请从Demo中的`AndroidManifest.xml`文件中查找对应平台需要的权限。
#### 3.5 添加服务
在`AndroidManifest.xml`文件中添加:
```
<service android:name="com.alimama.mobile.sdk.shell.DownloadingService"
android:process=":alimamaDownload">
<intent-filter>
<action android:name="com.alimama.mobile.sdk.download.action" />
</intent-filter>
</service>
```
#### 3.5 添加应用详情页
在`AndroidManifest.xml`文件中添加:
```
<activity
android:name="com.alimama.mobile.sdk.shell.MMUDetail"
android:configChanges="keyboard|orientation"
android:launchMode="standard"
android:screenOrientation="portrait" />
<activity
android:name="com.alimama.mobile.sdk.shell.MMUBrowserWebView"
android:configChanges="keyboard|orientation"
android:launchMode="standard"
android:screenOrientation="portrait" >
</activity>
```
注意:这里只列出了必须要声明的Activity,若使用聚合广告请根据平台需求添加,请从Demo中的`AndroidManifest.xml`文件中查找对应平台需要的声明。
<h4 id="初始化SDK"> 3.6 初始化SDK</h4>
注意:初始化SDK必须在集成样式的页面之前,如果在首页集成样式,请重写Application,并在Application中进行初始化。
```
MMUSDKFactory.getMMUSDK().init(getApplication());
MMUSDKFactory.registerAcvitity(BannerActivity.class);//注册集成样式页的Activity
```
注意:所有集成广告的Activity页面都需要注册。
### 4. 选择推广样式
下面列出了SDK所支持的所有样式。
#### 4.1 横幅(banner)
步骤1:确定已添加插件apk(如:Banner_plugin-1.0.apk)到项目工程的 `assets/mu/`目录下
步骤2:确定已添加聚合广告平台依赖包到本地工程的`libs`子目录下(该步骤非必须,只有用到聚合广告平台才需添加)
步骤3:在需要添加样式的布局文件中加入一个ViewGroup来给样式定位
* 例如:
```
<RelativeLayout
android:layout_alignParentBottom="true"
android:id="@+id/bannerParent"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal">
</RelativeLayout>
```
步骤4:添加广告代码,添加广告代码前请确定已[初始化SDK](#初始化SDK)
* 属性设置接口说明 - BannerProperties
1.构造方法
```
properties = new BannerProperties(this,slotId, nat);
```
参数说明:slotId:广告位ID,nat:广告展示ViewGroup
2.属性设置
```
1. properties.setStretch(true); //设置横幅广告宽度是否自适应屏幕
2. properties.setManualRefresh(false);//设置为手动刷新模式,默认为false,关闭手动刷新模式
3. properties.setAcct(MmuProperties.ACCT.VIEW);//设置请求方式,SDK方式:MmuProperties.ACCT.VIEW,SDK-数据方式:MmuProperties.ACCT.DATA,注意:需要和后台广告位设置保持一致
4. properties.setMMUListener(adsMogoListener);//设置监听器
5. properties.addCustomAdapter(id, customAdapter); //添加自定义平台Adapter,只有用到自定义平台功能时需要添加
```
* 加载广告接口说明 - MMUSDK
```
mmuSDK = MMUSDKFactory.getMMUSDK();
mmuSDK.init(getApplication());//初始化SDK,该方法必须保证在集成代码前调用,可移到程序入口处调用
mmuSDK.attach(properties); //通过properties属性,开始加载广告
```
* 广告控制接口说明 - BannerController
```
1. mController = properties.getController(); //获取横幅控制器
2. mController.load();//加载下一条广告,当设置为手动刷新模式,该方法才生效
3. mController.show(); //展示广告,默认请求广告成功会自动展示
4. mController.close(); //隐藏广告
5. mController.onBackPressed(); //通知展示广告页面关闭,销毁广告
```
PS:更多设置请参考Demo中集成代码,`com.alimama.mobile.demo.BannerActivity`。
#### 4.2 全/插屏
步骤1:确认已添加插件apk(如:InsertPlugin-1.0.apk)到项目工程的 `assets/mu/`目录下
步骤2:确定已添加聚合广告平台依赖包到本地工程的`libs`子目录下(该步骤非必须,只有用到聚合广告平台才需添加)
步骤3:添加广告代码,添加广告代码前请确定已[初始化SDK](#初始化SDK)
* 属性设置接口说明 - InsertProperties
1.构造方法
```
properties = new InsertProperties(this,slotId);
```
参数说明:slotId:广告位ID
2.属性设置
```
1. properties.setShowMask(true); //设置弹出层背景是否半透明
2. properties.setCanThrough(false); //设置弹出层背景是否能被点穿,false表示不能被点穿,默认值false
3. properties.setManualRefresh(false);//设置手动刷新模式,false表示不开启手动刷新模式,默认值false
4. properties.setAcct(MmuProperties.ACCT.VIEW);//设置请求方式,SDK方式:MmuProperties.ACCT.VIEW,SDK-数据方式:MmuProperties.ACCT.DATA,注意:需要和后台广告位设置保持一致
5. properties.setMMUInterstitialListener(adsMogoListener);//设置监听器
6. properties.addCustomAdapter(id, customAdapter); //添加自定义平台Adapter,只有用到自定义平台功能时需要添加
```
* 加载广告接口说明 - MMUSDK
```
mmuSDK = MMUSDKFactory.getMMUSDK();
mmuSDK.init(getApplication());//初始化SDK,该方法必须保证在集成代码前调用,可移到程序入口处调用
mmuSDK.attach(properties); //通过properties属性,开始加载广告
```
* 广告控制接口说明 - InsertController
```
1. mController = properties.getController(); //获取插屏控制器
2. mController.loadAd();//预加载下一条广告,只有开启手动刷新模式时,该方法才生效
3. mController.show(true);//进入展示机会,参数传入true表,示若调用该方法时没有广告缓存,会一直等待到有缓存广告并展示,false表示调用该方法时若, 没有广告缓存,则此次不会展示广告
4. mController.cancel();//取消展示机会,与show方法是成对, 出现的,若在调用show后一直没有广告展示,此时调用cancel方法,show方法失效即该次不会,在展示广告,如:在游戏开始时广告还没有展示出来,需要调用cancel取消展示机会。
5. mController.close();//关闭插屏广告,广告在屏幕展现时,调用该方法会关闭广告
```
PS:更多设置请参考Demo中集成代码,`com.alimama.mobile.demo.InsertActivity`。
#### 4.3 信息流
步骤1:确认已添加插件apk(如:FeedPlugin-1.0.apk)到项目工程的 `assets/mu/`目录下
步骤2:确定已添加聚合广告平台依赖包到本地工程的`libs`子目录下(该步骤非必须,只有用到聚合广告平台才需添加)
步骤3:开发者需要创建一个或多个广告位,每个广告位对应一个feed
步骤4:添加广告代码,添加广告代码前请确定已[初始化SDK](#初始化SDK)
* 属性设置接口说明 - MMUFeedProperties
1.构造方法
```
properties = new MMUFeedProperties(this, slotId);
```
参数说明:slotId:广告位ID
2.属性设置
```
1. properties.setReqCount(reqCount); //设置请求广告条数,SDK 1.1.0版本以上添加该接口
2. properties.setAdSize(320,100); //设置请求广告尺寸
3. properties.setAcct(MmuProperties.ACCT.VIEW);//设置请求方式,SDK方式:MmuProperties.ACCT.VIEW,SDK-数据方式:MmuProperties.ACCT.DATA,注意:需要和后台广告位设置保持一致
4. properties.setMMUFeedListener(feedListener);//设置监听器
5. properties.addCustomAdapter(id, customAdapter); //添加自定义平台Adapter,只有用到自定义平台功能时需要添加
```
* 加载广告接口说明 - MMUSDK
```
mmuSDK = MMUSDKFactory.getMMUSDK();
mmuSDK.init(getApplication());//初始化SDK,该方法必须保证在集成代码前调用,可移到程序入口处调用
mmuSDK.attach(properties); //通过properties属性,开始加载广告
```
##### 4.3.1 `SDK`方式集成
* 广告模版接口说明 - MMUFeedController
```
1. mController = properties.getController(); //获取信息流控制器
获取广告模版方式一:
2. mController.getFeedView(this, adInfos, params);//使用回调中获取的广告数据获取广告View,参数说明,this:Activity,adInfo:List<MMUAdInfo> 一组广告数据,params:LayoutParams
获取广告模版方式二:
3. mController.getFeedView(this, adInfo, params);//使用回调中获取的广告View,参数说明,this:Activity,adInfo:MMUAdInfo 一个广告数据,params:LayoutParams,SDK 1.1.0版本以上支持
```
说明:方式一为获取`小图排列模版`,方式二为获取其他模版,对应后台配置模版
* 视频广告说明
```
1. 视频广告模版支持Android 4.0及以上版本
2. 视频广告划出屏幕后,需要手动remove掉视频模版View以释放资源
```
注意:SDK 1.1.0及以上版本支持视频模版
* 模版id说明 - MMUAdInfo.rtid
| rtid值 | 模版类型 | 版本说明 |
| -------- |:-------------:||
|1 |标题大图 ||
|9 |小图描述 ||
|3或10 |小图排列 ||
|11 |视频 |1.1.0及以上|
PS:更多设置请参考Demo中集成代码,`com.alimama.mobile.demo.MMUFeedViewActivity`。
##### 4.3.2 `SDK-数据`方式集成
* 数据接口说明 - MMUAdInfo
```
1. adInfo.attachAdView(view); //当广告展示时,必须调用attachAdView()方法并传入展示的View
2. adInfo.onClickAd(); //当广告被点击时,必须调用onClickAd()方法
3. adInfo.onDestroy(); //当广告被销毁时调用onDestroy()方法
4. adInfo.getContentValue(key); //调用getContentValue(),通过key获取对应的数据
5. adInfo.notifyVideoOnStart(); //通知视频开始播放
6. adInfo.notifyVideoOnComplete(); //通知视频播放完成
7. adInfo.onEvent(int eventId,String eventMsg); //自定义事件上报
```
* 信息流数据接口Key-Value说明
| Key | Value | 版本说明 |
| ------------------------- |-------------:||
| MMUAdInfoKey.TITLE | 标题 ||
| MMUAdInfoKey.SUBTITLE | 副标题 ||
| MMUAdInfoKey.PRICE | 价格 ||
| MMUAdInfoKey.PROMOPRICE | 折扣价 ||
| MMUAdInfoKey.SELL | 销量 ||
| MMUAdInfoKey.IMG_SIZE | 图片大小 ||
| MMUAdInfoKey.LINK | 点击地址,当地址为空或空字符串时不需要处理 ||
| MMUAdInfoKey.CLICKTYPE | 点击类型 ||
| MMUAdInfoKey.RATING | 星级 ||
| MMUAdInfoKey.IMAGE_URL | 图片地址 ||
| MMUAdInfoKey.ICON_URL | Icon地址 ||
| MMUAdInfoKey.RATION_NAME | 平台名称 ||
| MMUAdInfoKey.MODEL_TYPE | 模版类型 ||
| MMUAdInfoKey.VIDEO_URL | 视频地址 | 1.1.0 及以上|
| MMUAdInfoKey.AUTO_PLAY | 播放控制,1:手动播放、2:自动播放、3:仅WIFI自动播放 | 1.1.0 及以上|
| MMUAdInfoKey.VIDEO_TIME | 视频播放时长 | 1.1.0 及以上|
* 数据接口补充字段说明 - adInfo.getContent()
| 字段名 | 类型 | 描述 |
| ------------------------- |:-------------:||
| “cid” | String | 广告创意ID|
| “provider” | Map类型 | 创意广告商|
* 字段 provider结构说明
| 字段名 | 类型 | 描述 |
| ------------------------- |:-------------:||
| “name” | String | 广告商名称 |
| “icon” | Map类型 | 广告商角标信息|
* 字段 icon结构说明
| 字段名 | 类型 | 描述 |
| ------------------------- |:-------------:||
| “icu” | String | 角标图片地址 |
| “icpos” | int | 角标位置 |
| “icsz” | Map | 角标尺寸 |
PS:更多设置请参考Demo中集成代码,`com.alimama.mobile.demo.MMUFeedDataActivity`。
#### 4.6 开屏
步骤1:确认已添加插件apk(如:WelcomePlugin-1.0.apk)到项目工程的 `assets/mu/`目录下
步骤2:确定已添加聚合广告平台依赖包到本地工程的`libs`子目录下(该步骤非必须,只有用到聚合广告平台才需添加)
步骤3:添加广告代码,添加广告代码前请确定已[初始化SDK](#初始化SDK)
* 属性设置接口说明 - WelcomeProperties
1.构造方法
```
properties = new WelcomeProperties(context, slotId,
1000, 3000,adsMogoWelcomeListener );
```
参数说明:slotId:广告位ID,adsMogoWelcomeListener:监听器
2.属性设置
```
1. properties.setWelcomeContainer(handleContainer);//设置开屏广告展示容器
2. properties.setStyle(style); //设置开屏广告展示的样式,如:是否展示状态栏
3. properties.setAcct(MmuProperties.ACCT.VIEW);//设置请求方式,SDK方式:MmuProperties.ACCT.VIEW,SDK-数据方式:MmuProperties.ACCT.DATA,注意:需要和后台广告位设置保持一致
4. properties.setAnimations(animation);//设置开屏展示动画
5. properties.addCustomAdapter(id, customAdapter); //添加自定义平台Adapter,只有用到自定义平台功能时需要添加
```
* 加载广告接口说明 - MMUSDK
```
mmuSDK = MMUSDKFactory.getMMUSDK();
mmuSDK.init(getApplication());//初始化SDK,该方法必须保证在集成代码前调用,可移到程序入口处调用
mmuSDK.attach(properties); //通过properties属性,开始加载广告
```
##### 4.6.1 `SDK`方式集成
* 设置说明
```
1. properties.setWelcomeContainer(handleContainer);//设置开屏广告展示容器,必需设置不可以为null
2. properties.setAcct(MmuProperties.ACCT.VIEW);//设置请求方式,注意:后台广告位设置必需为“SDK”
```
PS:更多设置请参考Demo中集成代码,`com.alimama.mobile.demo.WelcomeActivity`。
##### 4.6.2 `SDK-数据`接口方式集成
* 设置说明
```
1. properties.setAcct(MmuProperties.ACCT.DATA);//设置请求方式,注意:后台广告位设置必需为“SDK-数据”
```
* 数据接口说明 - MMUAdInfo
```
1. adInfo.attachAdView(view); //当广告展示时,必须调用attachAdView()方法并传入展示的View
2. adInfo.onClickAd(); //当广告被点击时,必须调用onClickAd()方法
3. adInfo.onDestroy(); //当广告被销毁时调用onDestroy()方法
4. adInfo.getContentValue(key); //调用getContentValue(),通过key获取对应的数据
```
* 开屏数据接口Key-Value说明
| Key | Value |
| ------------------------- |:-------------:|
| MMUAdInfoKey.DISPLAY_TIME | 广告展示时间 |
| MMUAdInfoKey.IMAGE_URL | 图片地址 |
| MMUAdInfoKey.LINK | 点击地址 |
| MMUAdInfoKey.CLICKTYPE | 点击类型 |
| MMUAdInfoKey.RATION_NAME | 平台名称 |
* 数据接口补充字段说明 - adInfo.getContent()
| 字段名 | 类型 | 描述 |
| ------------------------- |:-------------:||
| “cid” | String | 广告创意ID|
| “provider” | Map类型 | 创意广告商|
* 字段 provider结构说明
| 字段名 | 类型 | 描述 |
| ------------------------- |:-------------:||
| “name” | String | 广告商名称 |
| “icon” | Map类型 | 广告商角标信息|
* 字段 icon结构说明
| 字段名 | 类型 | 描述 |
| ------------------------- |:-------------:||
| “icu” | String | 角标图片地址 |
| “icpos” | int | 角标位置 |
| “icsz” | Map | 角标尺寸 |
PS:更多设置请参考Demo中集成代码,`com.alimama.mobile.demo.WelcomeDataActivity`。
#### 4.7 焦点图
步骤1:确认已添加插件apk(如:LoopImagePlugin-1.0.apk)到项目工程的 `assets/mu/`目录下
步骤2:在需要添加样式的布局文件中加入一个ViewGroup来给样式定位
* 示例
```
<android.support.v4.view.ViewPager
android:id="@+id/loop"
android:layout_width="fill_parent"
android:layout_height="140dp" />
```
步骤3:添加广告代码,添加广告代码前请确定已[初始化SDK](#初始化SDK)
* 属性设置接口说明 - LoopImageProperties
1.构造方法
```
properties = new LoopImageProperties(this,slotId);
```
参数说明:slotId:广告位ID
2.属性设置
```
1. properties.setContainer(nat);//设置焦点图广告展示容器
2. properties.setMmuLoopImageListener(listener); //设置监听器
3. properties.setAcct(MmuProperties.ACCT.VIEW);//设置请求方式,SDK方式:MmuProperties.ACCT.VIEW,SDK-数据方式:MmuProperties.ACCT.DATA,注意:需要和后台广告位设置保持一致
4. properties.addCustomAdapter(id, customAdapter); //添加自定义平台Adapter,只有用到自定义平台功能时需要添加
```
* 加载广告接口说明 - MMUSDK
```
mmuSDK = MMUSDKFactory.getMMUSDK();
mmuSDK.init(getApplication());//初始化SDK,该方法必须保证在集成代码前调用,可移到程序入口处调用
mmuSDK.attach(properties); //通过properties属性,开始加载广告
```
##### 4.7.1 `SDK`方式集成
* 设置说明
```
1. properties.setContainer(nat);//设置焦点图广告展示容器,必需设置不可以为null
2. properties.setAcct(MmuProperties.ACCT.VIEW);//设置请求方式,注意:后台广告位设置必需为“SDK”
```
PS:更多设置请参考Demo中集成代码,`com.alimama.mobile.demo.LoopImageActivity`。
##### 4.7.2 `SDK-数据`接口方式集成
* 设置说明
```
1. properties.setAcct(MmuProperties.ACCT.DATA);//设置请求方式,注意:后台广告位设置必需为“SDK-数据”
```
* 数据接口说明 - MMUAdInfo
```
1. adInfo.attachAdView(view); //当广告展示时,必须调用attachAdView()方法并传入展示的View
2. adInfo.onClickAd(); //当广告被点击时,必须调用onClickAd()方法
3. adInfo.onDestroy(); //当广告被销毁时调用onDestroy()方法
4. adInfo.getContentValue(key); //调用getContentValue(),通过key获取对应的数据
```
* 焦点图数据接口Key-Value说明
| Key | Value |
| ------------------------- |:-------------:|
| MMUAdInfoKey.DISPLAY_TIME | 广告展示时间 |
| MMUAdInfoKey.IMAGE_URL | 图片地址 |
| MMUAdInfoKey.LINK | 点击地址 |
| MMUAdInfoKey.CLICKTYPE | 点击类型 |
| MMUAdInfoKey.RATION_NAME | 平台名称 |
* 数据接口补充字段说明 - adInfo.getContent()
| 字段名 | 类型 | 描述 |
| ------------------------- |:-------------:||
| “cid” | String | 广告创意ID|
| “provider” | Map类型 | 创意广告商|
* 字段 provider结构说明
| 字段名 | 类型 | 描述 |
| ------------------------- |:-------------:||
| “name” | String | 广告商名称 |
| “icon” | Map类型 | 广告商角标信息|
* 字段 icon结构说明
| 字段名 | 类型 | 描述 |
| ------------------------- |:-------------:||
| “icu” | String | 角标图片地址 |
| “icpos” | int | 角标位置 |
| “icsz” | Map | 角标尺寸 |
PS:更多设置请参考Demo中集成代码,`com.alimama.mobile.demo.LoopImageDataActivity`。
### 5.自定义广告平台
#### 5.1 简介
* 媒体可以通过自定义广告平台功能,添加自己使用的广告平台到AFP中,实现多广告平台的统一管理。
* 集成步骤:
```
1) 在AFP网站端新建自定义平台
2) 在对应的广告位上,配置新建的三方平台信息,并获取平台ID
3) 按照AFP SDK的协议,实现自定义平台adapter
4) 添加adapter到AFP
```
#### 5.2 新建自定义平台
* 示例:

#### 5.3 配置平台信息
* 示例:

#### 5.4 Adapter代码实现说明
* 横幅Banner(MMUBannerCustomAdapter)
需要继承 MMUBannerCustomAdapter,并实现以下事件
```
/**
* 开始请求单一平台广告方法
*/
public abstract void startRequestAd();
/**
* 展示完毕销毁单一平台广告方法
*/
public abstract void onFinishClearCache();
/**
* 将单一平台的广告视图传递给AFPSDK,由AFPSDK将其添加到界面中
* @param adView 单一平台的广告
*/
public void addAdView(ViewGroup adView);
/**
* 返回在服务器端配置的APPID,以json字符串返回
*
* @return 配置的value
*/
public String getAPPID() ;
/**
* 获取当前activity对象
* @return
*/
public Activity getMMUActivity();
/**
* 提供给开发者调用的 通知AFPSDK广告请求展示失败
*/
public void notifyMMUAdRequestAdFail();
/**
* 提供给开发者调用的 通知AFPSDK广告展示成功
*/
public void notifyMMUAdRequestAdSuccess();
```
参考Demo,`com.alimama.mobile.demo.custom.BaiduBannerAdapter`
* 插屏(MMUInterstitialCustomAdapter)
需要继承 MMUInterstitialCustomAdapter,并实现以下事件
```
/**
* 开始请求单一平台广告方法
*/
public abstract void startRequestAd();
/**
* 开始展示单一平台广告方法
*/
public abstract void startShowAd();
/**
* 展示完毕销毁单一平台广告方法
*/
public abstract void onFinishClearCache();
/******************************** 提供用户直接调用的方法 *****************************************************/
/**
* 返回在服务器端配置的APPID,以json字符串返回
*
* @return 配置的value
*/
public String getAPPID() ;
/**
* 获取当前activity对象
* @return
*/
public Activity getMMUActivity();
/**
* 提供给开发者调用的 通知AFPSDK广告被点击
*/
public void notifyMMUAdClicked();
/**
* 提供给开发者调用的 通知AFPSDK广告被关闭
*/
public void notifyMMUAdCloseed();
/**
* 提供给开发者调用的 通知AFPSDK广告请求展示失败
*/
public void notifyMMUAdRequestAdFail() ;
/**
* 提供给开发者调用的 通知AFPSDK广告请求成功
*/
public void notifyMMUAdRequestAdSuccess();
/**
* 提供给开发者调用的 通知AFPSDK广告展示成功
*/
public void notifyMMUAdShowSuccess() ;
```
参考Demo,`com.alimama.mobile.demo.custom.BaiduInsertAdapter`
* 信息流(MMUFeedCustomAdapter)
需要继承 MMUFeedCustomAdapter,并实现以下事件
```
/**
* 开始请求单一平台广告方法
*/
public abstract void startRequestAd();
/******************************** 提供用户直接调用的方法 *****************************************************/
/**
* 添加信息流数据
*
* @param adInfo 数据结构
* @param adInfoStateReporter 平台展示和点击上报实现
*/
public void addMMUAdInfo(HashMap<String, Object> adInfo,MMUAdInfoStateReporter adInfoStateReporter);
/**
* 返回在服务器端配置的APPID,以json字符串返回
*
* @return 配置的value
*/
public String getAPPID();
/**
* 获取当前activity对象
* @return
*/
public Activity getMMUActivity();
/**
* 提供给开发者调用的 通知AFPSDK广告请求展示失败
*/
public void notifyMMUAdRequestAdFail();
/**
* 提供给开发者调用的 通知AFPSDK广告展示成功
*/
public void notifyMMUAdRequestAdSuccess();
```
参考Demo,`com.alimama.mobile.demo.custom.BaiduFeedAdapter`
* 开屏(MMUWelcomeCustomAdapter)
需要继承 MMUWelcomeCustomAdapter,并实现以下事件
```
/**
* 开始请求单一平台广告方法
*/
public abstract void startRequestAd();
/**
* 展示完毕销毁单一平台广告方法
*/
public abstract void onFinishClearCache();
/******************************** 提供用户直接调用的方法 *****************************************************/
/**
* 返回在服务器端配置的APPID,以json字符串返回
*
* @return 配置的value
*/
public String getAPPID();
/**
* 获取当前activity对象
* @return
*/
public Activity getMMUActivity();
/**
* 返回广告容器,需要把容器加到window上面展示
* @return
*/
public ViewGroup getViewContainer() ;
/**
* 返回广告容器中广告的区域view
* @return
*/
public ViewGroup getAdView();
/**
* 提供给开发者调用的 通知AFPSDK广告被点击
*/
public void notifyMMUAdClicked() ;
/**
* 提供给开发者调用的 通知AFPSDK广告被关闭
*/
public void notifyMMUAdCloseed();
/**
* 提供给开发者调用的 通知AFPSDK广告请求展示失败
*/
public void notifyMMUAdRequestAdFail() ;
/**
* 提供给开发者调用的 通知AFPSDK广告展示成功
*/
public void notifyMMUAdShowSuccess() ;
```
参考Demo,`com.alimama.mobile.demo.custom.BaiduWelcomeAdapter`
#### 5.5 添加Adapter到AFP
```
自定义广告平台Adapter实现完成后,在初始化广告样式时通过以下方式添加Adapter,
示例:
properties.addCustomAdapter(id, adapter);
id: 在后台新建自定义平台后获取的平台id
adapter: 媒体实现的自定义平台adapter
```
参考Demo,`com.alimama.mobile.demo.BannerActivity`
### 6. 备注
#### 6.1 媒体自定义标签
```
媒体自定义标签可以通过广告样式的properties.setTag(tag)的方式来添加。
其中 tag 格式为 属性:标签,标签,.... 多组属性使用分号隔开
```
#### 6.2 权限说明
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tbody><tr>
<th scope="col" width="300">权限</th>
<th scope="col">用途</th>
</tr>
<tr>
<td>android.permission.INTERNET</td>
<td>允许应用程序联网,以便向我们的服务器端发送数据。</td>
</tr>
<tr>
<td>android.permission.ACCESS_NETWORK_STATE</td>
<td>获取用户手机的IMEI,用来唯一的标识用户。(如果您的应用会运行在无法读取IMEI的平板上,我们会将mac地址作为用户的唯一标识,请添加权限: android.permission.ACCESS_WIFI_STATE )</td>
</tr>
<tr>
<td>android.permission.READ_PHONE_STATE</td>
<td>检测网络状态</td>
</tr>
<tr>
<td>android.permission.WRITE_EXTERNAL_STORAGE</td>
<td>将更新的APK临时存在SD卡里。</td>
</tr>
</tbody></table>
<h4 id="ad_libs"> 6.3 广告平台依赖包对应表</h4>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tbody><tr>
<th scope="col" width="300">广告平台</th>
<th scope="col">依赖包</th>
</tr>
<tr>
<td>阿里妈妈</td>
<td>-</td>
</tr>
<tr>
<td>百度</td>
<td>Baidu_MobAds_SDK_v5.6.jar</td>
</tr>
<tr>
<td rowSpan="2">广点通</td>
<td>GDTUnionSDK.4.8.517.min.jar</td>
</tr>
<tr>
<td>android-support-v4.jar</td>
</tr>
<tr>
<td>AdMob</td>
<td>google-play-services-v8.4.87.jar</td>
</tr>
<tr>
<td>Inmobi</td>
<td>InMobi-5.2.1.jar</td>
</tr>
<tr>
<td>亿动智道</td>
<td>SmartMad-SDK-Android_v3.0.4.jar</td>
</tr>
<tr>
<td rowSpan="8">安沃</td>
<td>Adwo_Android_SDK6.2.jar</td>
</tr>
<tr>
<td>assets/libadwo60.png</td>
</tr>
<tr>
<td>armeabi/libAdwoLocker.so</td>
</tr>
<tr>
<td>armeabi/libImmHapticMedia.so</td>
</tr>
<tr>
<td>arm64-v8a/libAdwoLocker.so</td>
</tr>
<tr>
<td>arm64-v8a/libImmHapticMedia.so</td>
</tr>
<tr>
<td>armeabi-v7a/libAdwoLocker.so</td>
</tr>
<tr>
<td>armeabi-v7a/libImmHapticMedia.so</td>
</tr>
<tr>
<td>多盟</td>
<td>domob_v4.6.4.jar.jar</td>
</tr>
</tbody></table>
注意:`-`代表不需要添加依赖包
#### 6.4 混淆
```
-dontwarn android.taobao.**
-dontwarn com.taobao.**
-dontwarn com.alimama.mobile.**
-dontwarn android.app.**
-dontwarn android.support.v4.**
-keepattributes Signature
-keepattributes *Annotation*
-keep class com.taobao.** {*; }
-keep class com.alimama.**{*; }
-keep class com.alimama.mobile.**{*; }
-keep class android.taobao.** {*; }
-keep class android.support.v4.** { *; }
-keep class android.app.**{*;}
-keep class **.R$* {*;}
```
### 7. 技术支持
请发邮件至<afpsupport .alibaba-inc.com>,我们会尽快回复您。