博客> Cocos2dx安卓工程集成Vungle-SDK基础教程(non-sdkbox)
Cocos2dx安卓工程集成Vungle-SDK基础教程(non-sdkbox)
2019-05-24 20:38 评论:0 阅读:2328 dickren123_
sdk Android Vungle Cocos2dx

这两年万戈尔(Vungle)广告平台做的是风生水起,它的eCPM(effective cost per mille)也是水涨船高,今天就来和大家聊聊在cocos2d-js导出的android工程中添加Vungle-SDK的方法。

第一步,申请APP ID 首先登陆 Vungle平台 注册一个发布者(Publish)账号,填好必要的信息后为您的APP申请一个Application ID,作为应用唯一标识符号,以备后续集成SDK参数使用。 在Vungle的APP管理界面中,APP ID位置如下所示:  QQ截图20160517213638.png 注意:测试的时候,为保证能够正常接收广告,请将APP的状态置为活跃(Active)。

第二步,选择集成Vungle-SDK方式 对于cocos2dx的安卓工程来说,集成Vungle-SDK有两种方法,一种是non-sdkbox方式,即在cocos2d-js构建导出的传统安卓工程中直接添加SDK包文件,并在java文件中添加调用语句;另一种是sdkbox方式,即通过集成sdkbox中的Vungle-Plugin,直接在cocos2d-js工程中的脚本文件中配置和调用Vungle。对于安装包体积压缩要求比较高,且未集成sdkbox其他Plugin的工程来说,通过non-sdkbox方式直接集成比较得当。本文在此先介绍non-sdkbox方式,后续的博文也会介绍sdkbox方式,大家可以根据实际情况做一比较。

第三步,集成Vungle-SDK

  1. 重要的题外话!开发环境版本选择 关于选择JDK、Android-SDK、NDK、ANT、Google Play Service的版本搭配 尝试了很多种,填了各种Google埋下的坑,才找到了这几个版本的最佳搭配,推荐大家使用,否则会走很多很多弯路: -JDK:Java SE Development Kit 8u91 -Android-SDK:Android 4.4 KitKat (API level 19) -Android-NDK:r10d -ANT:Apache ANT 1.9.7 Released -Google Play Service:google_play_services_6171000_r25(r25是与Android-SDK-API-19一致的,十分重要, 各版本请点击 ) -Vungle-SDK: 3.3.5

  2. 加入Vungle-SDK库 开发环境如上搭建完毕后,将Vungle-SDK目录中的三个库: -dagger-[version].jar -javax.inject-[version].jar -vungle-publisher-[version].jar 复制到安卓工程根目录下的libs文件夹中;如果您的工程仅仅刚构建完成,还未编译,可先自行在根目录建立libs文件夹,然后再复制进去即可。

  3. 更改AndroidManifest.xml文件 更改工程Manifest配置文件,有2部分: -在字段之外增加广告权限需求 <application> </application> <uses android:name="android.permission.INTERNET"> <uses android:name="android.permission.ACCESS_NETWORK_STATE"> <uses android:name="android.permission.WRITE_EXTERNAL_STORAGE"> -在字段之内增加广告播放的Activity <application> ... <activity android:name="com.vungle.publisher.FullScreenAdActivity" android:configChanges="keyboardHidden|orientation|screenSize" android:theme="@android:style/Theme.NoTitleBar.Fullscreen"> </application>

  4. 集成Google Play Service 重要!虽然官方文档中将此步骤建议为可选项,但是如果不集成,会出现Vungle无法初始化的重要错误(报错日志:W/VungleDevice(3476): no device ID available E/VungleProtocol(3476): error sending session start),所以在这里,必须为工程添加Google Play Service,添加方法很简单,具体如下: -将google_play_services/libproject下的google-play-services_lib文件夹复制到安卓工程中,建议将该文件夹复制到与安卓工程并列的位置。 -设置工程从属关系,可以使用命令行进行配置: android update project --target <target> --path <安卓工程根目录> --library <google> 命令执行后,工程根目录下的project.properties文件就会根据工程引用情况进行更新: android.library.reference.2=../../runtime-src/google-play-services_lib -添加元数据,在AndroidManifest.xml的字段内添加如下meta-data <application> &lt;meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" /&gt; </application>

  5. 初始化Vungle-SDK和播放广告 基础框架搭建完毕,剩下的就是修改Activity了。 Cocos2dx导出的安卓工程默认只有一个包含Cocos2dxGLSurfaceView的AppActivity,用于承载Cocos2dx编辑的各个场景视图,具体位置如下:工程根目录\src\org\cocos2dx\javascript 该目录仅包含一个AppActivity.java文件。 -Vungle初始化: 1) 引入Vungle-Pulish库:com.vungle.publisher.VunglePub 2) 获取实例:final static VunglePub vunglePub = VunglePub.getInstance(); 3) 设置APP ID:final String app_id = "896d8s5d6f3c2q6298e5"; 4) 初始化Vungle:vunglePub.init(this, app_id); 5) 覆盖(如果Activity中没有则需自行添加)onPause 和 onResume 方法,保证Vungle在APP焦点变化时能够暂停或恢复。 -Vungle广告播放: 我们需要在cocos2dx的js脚本编辑中播放Vungle的广告,这需要通过反射直接在js中调用java的静态方法,在js脚本需要播放广告的位置添加如下语句: showVungleAds : function(){ jsb.reflection.callStaticMethod("org/cocos2dx/javascript/AppActivity", "playAds", "()V"); } 三个参数说明: 1) "org/cocos2dx/javascript/AppActivity":为包名路径+类名 2) "playAds":为在java类中实现的静态方法 3) "()V":为该静态方法的参数类型,因为仅仅调用广告,这里表示无参数无返回值类型的方法。 相应地,需要在AppActivity中实现playAds的静态方法,用来播放Vungle广告。方法如下: public static void playAds(){ vunglePub.playAd(); } 由于是静态方法,因此使用的实例变量vunglePub在声明时应为静态方式(static)。 完整初始化和播放的AppActivity.java代码如下:

    package org.cocos2dx.javascript; import org.cocos2dx.lib.Cocos2dxActivity; import org.cocos2dx.lib.Cocos2dxGLSurfaceView; //引入Vungle-Publish库 import com.vungle.publisher.VunglePub;

    public class AppActivity extends Cocos2dxActivity { //获取实例,注意这里需要设置为静态变量 final static VunglePub vunglePub = VunglePub.getInstance();

    @Override
    public Cocos2dxGLSurfaceView onCreateView() {
        Cocos2dxGLSurfaceView glSurfaceView = new Cocos2dxGLSurfaceView(this);
        // TestCpp should create stencil buffer
        glSurfaceView.setEGLConfigChooser(5, 6, 5, 0, 16, 8);
    
        //添加APP ID
        final String app_id = "896d8s5d6f3c2q6298e5";
      //初始化Vungle
        vunglePub.init(this, app_id);
    
        return glSurfaceView;
     }
    
     @Override
     protected void onPause() {
           super.onPause();
        //失去焦点,暂停Vungle
           vunglePub.onPause();       
     }
    
     @Override
     protected void onResume() {
           super.onResume();
        //获取焦点,恢复Vungle
           vunglePub.onResume();
     }
    
     //播放广告,为静态方法
     public static void playAds(){
           vunglePub.playAd();
     }

    }

    6.测试注意事项: -可在静态方法中打印必要的日志,用于jsb调用java的用跟口测试; -前面已经提到,测试时需要在管理界面中将APP状态更改为活跃(Active); -如果长时间未检测到广告播放,可尝试链接国外VPN测试。

开始和Vungle一起赚钱吧:P) 如有任何问题,可与我们联系,也欢迎在游戏开发方面有所合作:nuttystudio8@gmail.com  QQ截图20160517215200.png

收藏
0
sina weixin mail 回到顶部