cocos2dx之友盟统计(android/ios)

一、玩家登录,在lua代码中获取玩家的帐号信息

---------账号登录统计---------------  
if device.platform == "android" then
    local args = { 1,  tostring(PlayerId),1 }
    local luaj = require "cocos.cocos2d.luaj"
    local sigs = "(ILjava/lang/String;I)I"
    local className = "com/cocos2dx/sample/LuaJavaBridge"
    local ok,ret  = luaj.callStaticMethod(className,"sendLuaToJavaProfileSignIn",args,sigs)
    if not ok then
        print("luaj error:", ret)
    else
        print("The ret is:", ret)
    end

elseif device.platform == "ios" then
    iosProfileSignInWithPUID(tostring(PlayerId))
    -- iosProfileSignInWithPUID("playerID_str_param")
end
---------账号登录统计---------------  

lua中获取信息后,通过不同平台来调用不同平台的方法。
android中,lua(–>c/c++)–>LuaJavaBridge–>java(android)
ios中,lua(–>c/c++)–>oc(iOS)

android情况:项目文件下,src–>com.cocos2dx.sample–>LuaJavaBridge.java

//  账号登录统计
public static int sendLuaToJavaProfileSignIn(int type,String UserID,final int luaFuncID){
    //System.out.printf("%n","sendLuaToJavaProfileSignIn **********************************");

    //Log.d("tag", "正sendLuaToJavaProfileSignIn播放中");
    MobclickAgent.onProfileSignIn(UserID);   //友盟账号登录统计的方法

    return 1;
}

调用了友盟统计登录的方法即可。
还需要的一些代码编写以及配置情况:在src–>org.cocos2dx.lua–>AppActivity.java

@Override
protected void onResume() {
    super.onResume(); 

    //添加友盟的部分
    MobclickAgent.onResume(this);
}
@Override
public void onPause(){
    super.onPause();

    //添加友盟的部分
    MobclickAgent.onPause(this);
}

在项目文件下,找到如下,在其中添加

<application>

    
    <meta-data android:value="584e516aa3251114e10012a3" android:name="UMENG_APPKEY"/>
    <meta-data android:value="umeng" android:name="UMENG_CHANNEL"/>
    
application>

“584e516aa3251114e10012a3”:在友盟后台申请的应用Appkey(根据自己申请的来填写)。

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>

添加权限。

iOS情况:AppDelegate.h中,声明函数

//友盟统计登录
static int iosProfileSignInWithPUID(lua_State *L);

AppDelegate.cpp中,applicationDidFinishLaunching里面,lua注册函数

lua_register(L, "iosProfileSignInWithPUID", iosProfileSignInWithPUID);

以及实现函数

// lua 调用 c 友盟账号统计
int AppDelegate::iosProfileSignInWithPUID(lua_State *L)
{
    if(CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
    {
        //从lua处得到账号信息,lua里面会调用已经注册的该函数iosProfileSignInWithPUID
        std::string playerId = lua_tostring(L, 1);
        printf("玩家的playerID: %s\n", playerId.c_str());
        //新建一个接口,这个接口能被c/c++函数iosProfileSignInWithPUID调用,接口中又可以调用oc代码,lua代码又可以调用该函数iosProfileSignInWithPUID
        UMProfile::profileSignInWithPUID(playerId.c_str());
    }
    return 1;
}

创建该接口
新建一个类UMProfile,有UMProfile.h文件和UMProfile.mm文件.h文件中声明函profileSignInWithPUID,
.mm文件实现函数,(.mm文件里面既可以写oc代码也可以写c/c++代码)

// 实现文件 UMProfile.cpp
#include "UMProfile.h"
//导入友盟sdk
#import "UMMobClick/MobClick.h"

//--------------------------------------------------
void UMProfile::profileSignInWithPUID(const char* userID)
{
#if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
    //获取用户账号后转换string类型
    NSString *strNSString = [[NSString alloc] initWithUTF8String:userID];
    //调用友盟iOS统计函数即可。 
    [MobClick profileSignInWithPUID:strNSString];
#endif
}

你可能感兴趣的:(cocos2dx)