UNPKG

mdindex

Version:
993 lines (709 loc) 32.1 kB
## **<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 |小图描述 || |310 |小图排列 || |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 新建自定义平台 * 示例: ![](https://gw.alicdn.com/tps/TB1pyzzKFXXXXXWXpXXXXXXXXXX-1000-686.png =600x) #### 5.3 配置平台信息 * 示例: ![](https://gw.alicdn.com/tps/TB1b9DuKFXXXXaTXpXXXXXXXXXX-1000-535.png =600x) #### 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@list.alibaba-inc.com>,我们会尽快回复您