在我们实际开发过程中,经常会遇到需要使用第三方SDK的情况。比如我们常用的:友盟,TalkingData之类的统计分析SDK;移动MM,电信爱游戏之类的计费SDK;个推,百度推送之类的推送SDK。诸如此类的在iOS平台也有一大堆。那么在使用Quick-Cocos2d-x的过程中怎么把它们接入到游戏中呢?我们这几篇文章就来介绍下。

  • 引擎版本: Quick-Cocos2d-x 3.3
  • 开发系统: Windows 7 64bit

目前接入方式

目前接入SDK的方式有很多种,我们这里只说下对Cocos2d-x常用的几种:

  1. 使用AnySDK来接入;
  2. 使用第三方SDK提供的Cocos2d-x版本来接入;
  3. 使用第三方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版本。

  1. 注册账号

    打开友盟官方网站:http://www.umeng.com/。注册账号并且申请一个应用,如果所示:

    这里需要注意的是如果你是使用Cocos2d-x版本的话最好把那个“使用Cocos2dx插件”的选项勾上,避免产生不必要的错误。

    信息填写完成后点击“提交并获取AppKey”,会显示一些创建出来的游戏的信息。

    这里的信息就是我们需要在游戏里使用的appkey。

  2. 下载SDK

    在账号注册完成后,我们打开友盟的SDK下载界面:http://dev.umeng.com/game_analytics/game-c2d/sdk-download,点击“SDK下载”,下载SDK到本地。

  3. 集成到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文件中添加以下权限

      1
      2
      3
      4
      <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代码
      1
      MobClickCppHelper.init( this );
      • 在游戏主main.cpp中加入如下代码:
      4
      5
      6
      7
      8
      9
      10
      11
      #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版本的友盟。

Cocos2d-Lua(Quick-Cocos2d-x)集成第三方SDK一的更多相关文章

  1. 适用于iOS和路线的Google Maps SDK

    解决方法库中有一些东西不在文档中,所以如果你正在寻找一个功能,那么值得下载SDK并查看标题.然而,在当前版本1.0.2中,我没有看到任何路由–搜索路线或绘制路线.目前,您唯一的选择可能是使用其他GoogleApi来查找路径,然后正如Lee所说,使用折线绘制它们.

  2. openURL崩溃:iOS 9中可能存在Facebook SDK错误

    也许Facebook的SDK在这个特例上有错误?解决方法我找到了答案看起来它只是一个发布模式问题.通过启用Xcode运行发布版本,我能够调试我的问题.它是由参数sourceApplication引起的,在发布模式下显然需要解包.不知道为什么,但至少我得到它的工作.

  3. 使用最新的Flurry SDK和ios4重新启动应用程序

    我真的希望这对我来说只是一个愚蠢的错误.我很高兴使用Flurry但这样的事情会导致我的应用被拒绝.解决方法我写了关于这个的Flurry,他们很快回到我身边,他们会调查这个.大约一个星期后,他们回信并表示他们已经在v2.6中修复了它,现在可用了.我似乎无法重现这个问题.不是说我很棒或者什么,但我还是单枪匹马地解决了这个问题.

  4. ios – Interface Builder无法确定“Main.storyboard”的类型.这可能是由于缺少SDK

    解决方法这没有你想象的那么复杂.该错误是因为您在Main.storyboard的源代码上输错了一些内容,例如我不小心在Main.storyboard的第一个打开标记之前放了一个“”.1)你必须做的是删除Main.storyboard2)转到垃圾箱,将Main.storyboard移动到桌面,用任何文本编辑器打开并修复代码;然后“全选”和“复制”.3)在Xcode上,创建一个全新的Main.storyboard,然后按右键单击文件并选择OpenAs–>源代码,然后粘贴您在剪贴板上的固定代码.4)右键单击文件

  5. iOS:安装Google移动广告SDK的错误说明?

    为什么我必须在此版本中安装Firebase/Core?

  6. 如何使用iOS SDK保存LinkedIn访问令牌?

    我在我的iOS应用程序中使用LinkedIn.我想保存访问令牌以供将来使用.令牌属于非属性类型,无法直接保存在NSUserDefaults中.我尝试使用NSKeyedArchiver,但我得到了输出:令牌中的文本即将到来,但值将为空.代码段1:我也尝试像这样保存,但结果是一样的:代码段2:我的编码或访问令牌有什么问题需要一些特殊技术来保存吗?请建议.解决方法这就是我拯救的方式.它对我有用.希望它有所帮助以这种方式使用保存的responseBody我希望这次我很清楚

  7. 在ios上使用来自框架的boost :: filesysystem路径

    我一直在使用Boost作为PeteGoodliffe脚本构建的框架已有一段时间了.效果很好.最近我遇到了一个问题,可以通过将以下代码放入另一个全新的XCode项目中的视图控制器的viewDidLoad中来重现:当路径对象被销毁时会导致EXC_BAD_ACCESS.有没有其他人遇到这个问题?

  8. ios8 – iOS 8上的ptrace

    我试图在ptrace上调用一个像thisptrace一样的函数;但是当我尝试使用#include导入它时,Xcode会给我一个错误’sys/ptrace.h’文件找不到.我错过了什么,我是否需要导入一个库,或者这在iOS上根本不可用?

  9. ios – 具有较低基础sdk的应用程序如何工作?

    在XCode中,我可以指定BaseSDK.我想知道幕后工作是怎么做的?如果我正在运行应用程序,例如,在具有iOS7且我的基础SDK是iOS6的设备上,那么应用程序为何具有旧的“外观和感觉”?XCode是否编译了较旧的SDK并将其包含在我的应用程序中,或者新版本的iOS是否附带较旧的库/SDK?

  10. 通过cocoapods安装适用于iOS的Google Maps SDK会导致链接器错误

    我正在尝试使用cocoapods安装适用于iOS版本1.3.0的GoogleMapsSDK.实际上安装过程很成功,但是当我尝试使用框架时,app构建过程会返回链接器错误,例如:由于某种原因,链接器无法找到框架.我的cocoapods版本是0.20.1.XCode4.6.2.除了谷歌地图SDK,我的项目还有另外两个通过cocoapods添加的库.这是我的Podfile:提前致谢.解决方法您应该看到一个文件“Pods.xcconfig”,其中包含pod正在使用的框架.将应用程序的目标配置更改为基于CocoaP

随机推荐

  1. 【cocos2d-x 3.x 学习笔记】对象内存管理

    Cocos2d-x的内存管理cocos2d-x中使用的是上面的引用计数来管理内存,但是又增加了一些自己的特色。cocos2d-x中通过Ref类来实现引用计数,所有需要实现内存自动回收的类都应该继承自Ref类。下面是Ref类的定义:在cocos2d-x中创建对象通常有两种方式:这两中方式的差异可以参见我另一篇博文“对象创建方式讨论”。在cocos2d-x中提倡使用第二种方式,为了避免误用第一种方式,一般将构造函数设为protected或private。参考资料:[1]cocos2d-x高级开发教程2.3节[

  2. 利用cocos2dx 3.2开发消灭星星六如何在cocos2dx中显示中文

    由于编码的不同,在cocos2dx中的Label控件中如果放入中文字,往往会出现乱码。为了方便使用,我把这个从文档中获取中文字的方法放在一个头文件里面Chinese.h这里的tex_vec是cocos2dx提供的一个保存文档内容的一个容器。这里给出ChineseWords,xml的格式再看看ChineseWord的实现Chinese.cpp就这样,以后在需要用到中文字的地方,就先include这个头文件然后调用ChineseWord函数,获取一串中文字符串。

  3. 利用cocos2dx 3.2开发消灭星星七关于星星的算法

    在前面,我们已经在GameLayer中利用随机数初始化了一个StarMatrix,如果还不知道怎么创建星星矩阵请回去看看而且我们也讲了整个游戏的触摸事件的派发了。

  4. cocos2dx3.x 新手打包APK注意事项!

    这个在编译的时候就可以发现了比较好弄这只是我遇到的,其他的以后遇到再补充吧。。。以前被这两个问题坑了好久

  5. 利用cocos2dx 3.2开发消灭星星八游戏的结束判断与数据控制

    如果你看完之前的,那么你基本已经拥有一个消灭星星游戏的雏形。开始把剩下的两两互不相连的星星消去。那么如何判断是GameOver还是进入下一关呢。。其实游戏数据贯穿整个游戏,包括星星消除的时候要加到获得分数上,消去剩下两两不相连的星星的时候的加分政策等,因此如果前面没有做这一块的,最好回去搞一搞。

  6. 利用cocos2dx 3.2开发消灭星星九为游戏添加一些特效

    needClear是一个flag,当游戏判断不能再继续后,这个flag变为true,开始消除剩下的星星clearSumTime是一个累加器ONE_CLEAR_TIME就是每颗星星消除的时间2.连击加分信息一般消除一次星星都会有连击信息和加多少分的信息。其实这些combo标签就是一张图片,也是通过控制其属性或者runAction来实现。源码ComboEffect.hComboEffect.cpp4.消除星星粒子效果消除星星时,为了实现星星爆裂散落的效果,使用了cocos2d提供的粒子特效引擎对于粒子特效不了

  7. 02 Cocos2D-x引擎win7环境搭建及创建项目

    官网有搭建的文章,直接转载记录。环境搭建:本文介绍如何搭建Cocos2d-x3.2版本的开发环境。项目创建:一、通过命令创建项目前面搭建好环境后,怎样创建自己的Cocos2d-x项目呢?先来看看Cocos2d-x3.2的目录吧这就是Cocos2d-x3.2的目录。输入cocosnew项目名–p包名–lcpp–d路径回车就创建成功了例如:成功后,找到这个项目打开proj.win32目录下的Hello.slnF5成功了。

  8. 利用cocos2dx 3.2开发消灭星星十为游戏添加音效项目源码分享

    一个游戏,声音也是非常的重要,其实cocos2dx里面的简单音效引擎的使用是非常简单的。我这里只不过是用一个类对所有的音效进行管理罢了。Audio.hAudio.cpp好了,本系列教程到此结束,第一次写教程如有不对请见谅或指教,谢谢大家。最后附上整个项目的源代码点击打开链接

  9. 03 Helloworld

    程序都有一个入口点,在C++就是main函数了,打开main.cpp,代码如下:123456789101112131415161718#include"main.h"#include"AppDelegate.h"#include"cocos2d.h"USING_NS_CC;intAPIENTRY_tWinMain{UNREFERENCED_ParaMETER;UNREFERENCED_ParaMETER;//createtheapplicationinstanceAppDelegateapp;return

  10. MenuItemImage*图标菜单创建注意事项

    学习cocos2dx,看的是cocos2d-x3.x手游开发实例详解,这本书错误一大把,本着探索求知勇于发现错误改正错误的精神,我跟着书上的例子一起调试,当学习到场景切换这个小节的时候,出了个错误,卡了我好几个小时。

返回
顶部