QUICK-COCOS2DX 2.2.3接入短信SDK教程
Posted 放梦追逐-李超
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了QUICK-COCOS2DX 2.2.3接入短信SDK教程相关的知识,希望对你有一定的参考价值。
说实话 ,其实接SDK相对来说还是比较简单的,但是如果遇到问题,还是需要我们去考虑和分析。
例如说我们在用COCOS2DX-LUA开发的时候,我们接android的SDK,必须要调用JAVA的方法,
那么我们可以直接用LUA 调用Java,也可以用LUA先调用C++,然后再用C++调用JAVA,那么这两种方法都是
可以的,不过我们既然直接能用LUA调用JAVA,用JAVA调用LUA,我们何必不这样做呢?
不过在这里还是非常感谢这个博主的
源地址:http://dualface.github.io/blog/2013/01/01/call-java-from-lua/#E5B08620lua20function20E4BD9CE4B8BAE58F82E695B0E4BCA0E98092E7BB9920java20E696B9E6B395
那么我们在接SDK的时候,别人都会给你几个文见,有加入权限,配置,.JAR包等等,那么还会有一个说明文档,你只需要
按着他的说明文档一个个做就行,基本上不会有太多的问题。
1、首先打开工程的AndroidMainfest.xml文件,在标签内写入
权限和配置信息,例如:
<!-- 接入短信SDK 权限 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
........
<!-- 需要的权限配置 -->
<service android:name="com.lyhtgh.pay.services.SmsStatusService"></service>
<service android:name="com.lyhtgh.pay.services.SmsDataService"></service>
..........
这里省略了很多,你把你自己需要的直接考进来就行,别搞错就行。
2、把解压下载回来的包,将里面的.jar文件夹考到android工程下的libs文件夹中。这个文件别人会给你的,放心吧。
3、接下来,打开AppActivity.java文件,在onCreate中加入(也可以是其他的.java文件,如果是cocos的话,应该是继承至
Cocos2dxActivity):
那么我自己新建了一个PaySDK.java的文件,然后里面有一个init的方法,我们在AppActivity.java中调用它,
public class AppActivity extends Cocos2dxActivity
@Override
public void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
PaySDK.init(this);
4、我的PaySDK.java文件代码是:
public class PaySDK
private static Cocos2dxActivity mContent = null;
public static void init(Cocos2dxActivity activity)
System.out.println("调用sdk这个初始化方法");
mContent = activity;
public static void payMoney(final String str,final int money , final int luaFunctionId)
System.out.println("调用成功 payMoney : "+str+" money : "+money);
//SDK接口方法
Pay.getInstance(mContent).start(new IPayCallback()
@Override
public void onFailure()
System.out.println("调用成功 payMoney : onFailure");
// TODO Auto-generated method stub
//这里是Java调用Lua的方法,并给Lua返回一个字符串
Cocos2dxLuaJavaBridge.callLuaFunctionWithString(luaFunctionId, "failed");
Toast.makeText(mContent, "onFailure", Toast.LENGTH_LONG).show();
@Override
public void onSuccess()
// TODO Auto-generated method stub
System.out.println("调用成功 payMoney : onSuccess");
//这里是Java调用Lua的方法,并给Lua返回一个字符串
Cocos2dxLuaJavaBridge.callLuaFunctionWithString(luaFunctionId,"success");
Toast.makeText(mContent, "onSuccess", Toast.LENGTH_LONG).show();
, mContent, "1", "lichao", "lichao", str, money, "1", "1");
5、我这边PayInsertSDK.lua文件的代码为
local PayInsertSDK = class("PayInsertSDK")
--JAVA 类的名称
local className = "com/uborm/littleworld/PaySDK"
--支付
function PayInsertSDK:everyDayPay()
--发送之前初始化为false
isSuccessPay = false
local function callback(result)
if result == "success" then
print('调用成功的方法')
isSuccessPay = true
elseif result == "failed" then
print('调用失败以后的回调方法')
isSuccessPay = false
else
print('Java返回未知错误信息')
end
end
--1 1000
local args =
"1",--计费点编号
1000,--计费价格
callback
local sig = "(Ljava/lang/String;II)V"--参数:整数、浮点数,返回值:字符串 (I F Z Ljava/lang/String V)
-- local sig = "(II)I"
if device.platform == "android" then
--调用JAVA方法
local ok , ret = luaj.callStaticMethod(className,"payMoney",args,sig)
if not ok then
print('调luaj error : '..ret)
elseif ret == nil then
print('调用 luaj 成功 ,返回值为空,正确返回了')
else
print('调用 成功 ret :'..ret)--输出
end
end
end
这样基本上就调用成功了,不过我们要注意两个点,一个是返回值和传递的值,还有一个就是看报错信息具体是啥,否则不好调试
签名使用“(依次排列的参数类型)返回值类型”的格式,几个例子如下:
签名 | 解释 |
---|---|
()V | 参数:无,返回值:无 |
(I)V | 参数:int,返回值:无 |
(Ljava/lang/String;)Z | 参数:字符串,返回值:布尔值 |
(IF)Ljava/lang/String; | 参数:整数、浮点数,返回值:字符串 |
这里列出不同类型对应的 Java 签名字符串:
类型名 | 类型 |
---|---|
I | 整数,或者 Lua function |
F | 浮点数 |
Z | 布尔值 |
Ljava/lang/String; | 字符串 |
V | Void 空,仅用于指定一个 Java 方法不返回任何值 |
错误代码定义如下:
错误代码 | 描述 |
---|---|
-1 | 不支持的参数类型或返回值类型 |
-2 | 无效的签名 |
-3 | 没有找到指定的方法 |
-4 | Java 方法执行时抛出了异常 |
-5 | Java 虚拟机出错 |
-6 | Java 虚拟机出错 |
~
只要相互之间调用成功了,就一切OK了,暂时到这里 ,急着下班,有问题欢迎留言。。。
以上是关于QUICK-COCOS2DX 2.2.3接入短信SDK教程的主要内容,如果未能解决你的问题,请参考以下文章
quick-cocos2dx 之transition.execute()的缓动效果
Quick-Cocos2dx-Community lua绑定,lua调用C++ 类
[quick-cocos2dx]找不到具体位置的错误,逐一替换原文件尝试,缩小问题范围
COCOS2DX-LUA 脚本开发之八不用CCHttpClient而转用quick-cocos2d-x或cocos2dx-LuaProxy的Lua框架实现Lua-Http网络交互!
COCOS2DX-LUA 脚本开发之六利用Lua强转函数解决使用CCNode报错或无法正常使用以及简单介绍 quick-cocos2d-x 与 OpenQuick 两款Lua免费开源框架