在AndroidManifest.xml中配置友盟cocos2dx游戏统计参数

1

首先在AndroidManifest.xml中的application中添加需要在c++层调用的属性。
    <meta-data android:value="559a907d67e58e3e08001af6" android:name="UMENG_APPKEY">meta-data>
    <meta-data android:value="X001" android:name="UMENG_CHANNEL">meta-data> 

2

由于这两个属性在游戏中不会更改,所以选择在init的时候直接保存在变量里。
try {
            ApplicationInfo appInfo;
            appInfo = getPackageManager()
                     .getApplicationInfo(getPackageName(),
             PackageManager.GET_META_DATA);
            String msg=appInfo.metaData.getString("UMENG_APPKEY");
            appkey = msg;
            Log.d(TAG, " UMENG_APPKEY == " + msg );
            msg=appInfo.metaData.getString("UMENG_CHANNEL");
            Channel = msg;
            Log.d(TAG, " UMENG_CHANNEL == " + msg );
        } catch (NameNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

3

在需要配置友盟的地方通过jni调用如下函数
public static void ConfigUmeng(){
Cocos2dxActivity.getinstance().get_Cocos2dxGLSurfaceView().get_Cocos2dxRenderer().ConfigUmeng(appkey,Channel);  
    }
在Cocos2dxRenderer中添加ConfigUmeng方法
public void ConfigUmeng(final String appkey,final String channelId) {
    Cocos2dxRenderer.nativeConfigUmeng(appkey,channelId);
}
private static native void nativeConfigUmeng(final String appkey,final String channelId);

在main.cpp中实现jni调用的c++配置

void Java_org_cocos2dx_lib_Cocos2dxRenderer_nativeConfigUmeng(JNIEnv*  env, jobject thiz,jstring appkey,jstring channelId)
{
    const char *appkeyName = env->GetStringUTFChars(appkey, NULL);
    const char *channelIdName = env->GetStringUTFChars(channelId, NULL);
    MOBCLICKCPP_START_WITH_APPKEY_AND_CHANNEL(appkeyName, channelIdName);
    env->ReleaseStringUTFChars(appkey, appkeyName);
    env->ReleaseStringUTFChars(channelId, channelIdName);
}

关于jni的实现参考 http://codingnow.cn/cocos2d-x/992.html

你可能感兴趣的:(cocos2dx,android,cocos2dx)