在我們實際開發過程中,經常會遇到需要使用第三方SDK的情況。比如我們常用的:友盟,TalkingData之類的統計分析SDK;移動MM,電信愛遊戲之類的計費SDK;個推,百度推送之類的推送SDK。諸如此類的在iOS平臺也有一大堆。那麼在使用Quick-Cocos2d-x的過程中怎麼把它們接入到遊戲中呢?我們這幾篇文章就來介紹下。
- 引擎版本: Quick-Cocos2d-x 3.3
- 開發系統: Windows 7 64bit
目前接入方式
目前接入SDK的方式有很多種,我們這裏只說下對Cocos2d-x常用的幾種:
- 使用AnySDK來接入;
- 使用第三方SDK提供的Cocos2d-x版本來接入;
- 使用第三方SDK提供的Java或者OC版本。
AnySDK是Cocos2d-x官方提供的一套很完善的接入第三方SDK的工具。它接入簡單、方便、快捷,而且支持衆多的SDK,能夠實現一鍵式的接入。官網請點擊這裏,另外它還有非常詳盡的文檔,請點擊這裏。如果是企業用戶的話,推薦使用AnySDK,它本身已經支持了諸如斯凱、移動遊戲基地、GooglePlay、91等渠道,也支持用戶、支付、廣告、分享、統計和推送的大量SDK。對於打包和加固也基本上是一次配置,全程通用了。因爲企業渠道的打包往往是幾十上百個包,如果使用AnySDK,在一次配置完成之後,每次都只需要輕輕一點就能夠在旁邊喝茶。這樣無疑爲企業節約了大量的開發時間和人力成本。
而對於個人或者小團隊來說,往往支持的渠道有限,限於開發成本的原因,需要支持的SDK比較少,而且對包的限制也會比較大,這種時候使用2,3種方式相對來說顯得更爲經濟和簡單,並且也更爲靈活和方便。難點在於需要自己編寫集成代碼。對於第2種方法,如果是使用C++語言的話來編寫遊戲的話使用會很方便,如果是使用Lua的話,需要自己寫一層C++到Lua的封裝。而目前很多的第三方SDK都提供了Cocos2d-x的版本。大部分時候我們都只需要下載一個第三方SDK的C++版本。然後簡單的集成一下,就可以在C++代碼中直接調用了。
但是又的情況下第三方SDK C++版本對接口的支持可能不如對原生平臺版本(Java或者OC)支持的完善,那麼這個時候我們更多的可能會使用原生平臺版本,中間自己提供一層接口來供C++調用,這也就是我們這裏的第3種方式。
接入示例
接下來我們以友盟爲例來講下怎麼使用。AnySDK的講解我們在這裏先不講,大家可以參考官方網站上的文檔。
接入Cocos2d-x版本的友盟
首先我們來看下怎麼接入友盟的Cocos2d-x版本。
-
註冊賬號
打開友盟官方網站:http://www.umeng.com/。註冊賬號並且申請一個應用,如果所示:
這裏需要注意的是如果你是使用Cocos2d-x版本的話最好把那個“使用Cocos2dx插件”的選項勾上,避免產生不必要的錯誤。
信息填寫完成後點擊“提交併獲取AppKey”,會顯示一些創建出來的遊戲的信息。
這裏的信息就是我們需要在遊戲裏使用的appkey。
-
下載SDK
在賬號註冊完成後,我們打開友盟的SDK下載界面:http://dev.umeng.com/game_analytics/game-c2d/sdk-download,點擊“SDK下載”,下載SDK到本地。
-
集成到C++裏
-
Android
-
將libMobClickCpp文件夾複製到[COCOS2DX_ROOT]/external目錄下,並且將mobclickcpphelper.jar複製到Android工程的libs目錄中,
-
改你的工程Android.mk文件在LOCAL_WHOLE_STATIC_LIBRARIES := cocos2dx_static後添加LOCAL_WHOLE_STATIC_LIBRARIES += mobclickcpp_static,在$(call import-module,cocos2dx)後添加$(call import-module,libMobClickCpp)。如果你的工程沒有使用libcurl庫,還要在相應位置添加$(call import-module,cocos2dx/platform/third_party/android/prebuilt/libcurl)(cocos2d-x 3.0以上請替換爲$(call import-module,curl/prebuilt/android))和LOCAL_WHOLE_STATIC_LIBRARIES += cocos_curl_static
- 添加權限
在AndroidMainfest.xml文件中添加以下權限
1234<uses-permission android:name=
"android.permission.ACCESS_NETWORK_STATE"
></uses-permission>
<uses-permission android:name=
"android.permission.INTERNET"
></uses-permission>
<uses-permission android:name=
"android.permission.READ_PHONE_STATE"
></uses-permission>
<uses-permission android:name=
"android.permission.ACCESS_WIFI_STATE"
></uses-permission>
- 添加Java代碼
1MobClickCppHelper.init(
this
);
- 在遊戲主main.cpp中加入如下代碼:
1234567891011#include "MobClickJniHelper.h"
...
extern
"C"
{
jint JNI_OnLoad(JavaVM *vm,
void
*reserved)
{
JniHelper::setJavaVM(vm);
umeng::MobClickJniHelper::setJavaVM(vm);
return
JNI_VERSION_1_4;
}
}
-
-
iOS
iOS的集成就簡單很多了。
-
所需文件: libMobClickCpp.a(請查看C++ Standard Library的設置,xcode默認的Compiler Default是libstdc++,如果您的項目正在使用libc++編譯請使用libMobClickCppWithLibCpp.a) MobClickCpp.h
- 請在你的工程目錄結構中,右鍵選擇Add->Existing Files…,選擇這兩個文件。或者將這兩個文件拖入XCode工程目錄結構中,在彈出的界面中勾選Copy items into destination group's folder(if needed), 並確保Add To Targets勾選相應的target。 如果你的工程沒有使用libcurl庫,還要把[COCOS2DX_ROOT]/external/curl/prebuilt/ios/libcurl.a)按照上面的方法加入到工程中。
-
集成到這裏就算搞定了,接下來的就是使用了。使用的話可以直接參考官方的API文檔。
-
好了,我們先說到這裏,後面的章節我們將會將怎麼把C++接口轉成Lua接口,和怎麼在Lua中直接調用Java版本的友盟。