cocos2dx平台对接(Amazon IAP,Chartboost,Email)

写在前面


主要目的是备忘,如果有幸能帮上其他朋友,那最好了

我的游戏使用的是cocos2dx 2.2.5,当然,使用2.1.x ~ 2.2.5版本都是可以的,没有什么变动。

 

Java调用C++


1、在JAVA项目中,声明一个带“native”的静态函数,比如 (假设包名是 com.ooxx.mygame

class MyActivity{
    //...
    //other code
    //...
    public static native int onIAPCallback(int select);
    //...
    //other code
    //...
}

 

在JAVA项目中,你就当这个函数是一个普通的静态函数来调用就可以了。

2、打开jni下面的main.cpp,照着里面的那些函数的样子,写上

jint Java_com_ooxx_mygame_MyActivity_onIAPCallback(JNIEnv*  env, jobject thiz,jint select)
{
    //call your cpp code
}

 

C++调用JAVA


1、在JAVA项目中,声明一个普通的静态函数,比如 (假设包名是 com.ooxx.mygame)

class MyActivity{
    //other code
    //...
    
    public static void onBuySomething(int itemID){
    //do what you wanna
    }
    
    //other code
    //...
}

 

2、在C++项目中,调用这个函数

//包含JniHelper.h
#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) 
#include "platform/android/jni/JniHelper.h" 
#endif

//调用JAVA中的静态函数

#elif (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) 
    JniMethodInfo t; 
    if (JniHelper::getStaticMethodInfo(t, "com/ooxx/mygame/MyActivity", "onBuySomething", "(I)V")) 
    { 
        t.env->CallStaticVoidMethod(t.classID, t.methodID,itemID); 
        t.env->DeleteLocalRef(t.classID); 
    } 
#endif //

 

这里附上AndroidJNI说明 请走这里  足以解答你的疑惑

 

点击某个按钮,打开玩家机器上的邮件,可以拿来做好友邀请,游戏反馈等


public static void sendEmail(String sendTo,String subject,String body){ 
    Intent email = new Intent(android.content.Intent.ACTION_SEND); 
    email.setType("plain/text"); 
    String[] emailReciever = new String[]{sendTo}; 
    email.putExtra(android.content.Intent.EXTRA_EMAIL, emailReciever); 
    email.putExtra(android.content.Intent.EXTRA_SUBJECT,subject); 
    email.putExtra(android.content.Intent.EXTRA_TEXT, body); 
    GameActivity.Self.startActivity(Intent.createChooser(email, "Choose Email Client")); 
} 

 

打开Amazon商店


public static void onOpenInMarketClient(String id){ 
    Intent intent = new Intent(Intent.ACTION_DEFAULT); 
    Uri content_url = Uri.parse("amzn://apps/android?asin="+id);   
    intent.setData(content_url); 
    GameActivity.Self.startActivity(intent); 
}

 

注意:大部分ANDROID市场是使用 market://apps/android?id= 来做前缀。但Amazon很蛋疼。  上面的代码可以正确打开玩家手机上的Amazon商店

至于asin码如何而来,请走这里

 

Amazon IAP支付


直接下载Amazon IAP来改就可以了,不需要做太多工作

 

Chartboost


比Amazon还简单,下载SDK,有一个Sample,把代码弄进来,改改ID和函数调用就可以咯。

 

收工~~

posted @ 2014-10-13 00:53  麒麟子MrKylin  阅读(1205)  评论(0)    收藏  举报