一直没有写博客的习惯,第一篇
lua语言完成游戏逻辑,移植到ios 接入支付宝 完成lua和object-c的交互(各个模块独立)
1.移植到iOS
本游戏是用lua脚本开发的,是一种跨平台的语言,移植到iOS非常简单,打开 工程名/frameworks/runtime-src/proj.ios_mac下的xcodeproj文件即可,可能会出现缺少框架文件类似的问题,只需要按照错误提示添加相应的框架文件即可。
2.iOS接入支付宝 完成lua和object-c 的交互
(1)问题
因为我们游戏的逻辑主要是用Lua实现的(前面已经做过假设),而SDK是用Objective-C实现,所以这里我们需要解决Lua与Objective-C的交互问题,即最终希望达到的目标是,在Lua层面“调用”Objective-C的代码(注意这里的调用是加引号的,间接的调用),而当Objective-C层面收到SDK的回调,再通知Lua。我们知道,Lua并没有简单的方法直接和Objective-C交流,但是Lua可以通过Lua Binding和C/C++交流,而我们又知道,C++和Objective-C可以混编,即C++可以直接调用(这里调用没引号,是真的直接调用)Objective-C的代码。
根据上面的分析,我们可以用如下图表达我们的思路,我们这里将语言交互的过程分成了4个小部分:
整个语言交互的过程可以总结为:Lua调用Lua Binding的C++接口,C++接口调用混编的Objective-C接口,而Objective-C通过block形式的回调,将结果通知给C++,C++通过Lua的C API将最终结果返回给Lua。这样一趟下来,就完成了Lua与Objective-C的整个交互过程。
基本做法:
可以分为几块:1⃣️ object-c接入支付宝(独立模块 与iOS项目接入支付宝完全一样)
2⃣️lua层接收到游戏中传来的参数(独立模块 lua层的操作)
3⃣️lua层将接受到的参数传递到oc层(将lua层和oc层链接)
总的来说就是 lua层接收到游戏中的与支付相关的参数 将参数通过luaoc传递到oc层 再发送给支付宝 支付成功后支付宝给后台服务器发送一个支付成功的消息 ,于此同时客户端也给服务器发送了一个支付的消息,在服务器端根据两个消息验证,验证成功 … 完成.
(2)接入支付宝
1⃣️下载sdk 与demo
2⃣️按照支付宝官方文档的步骤导入sdk 添加框架 添加路径
文档地址
https://doc.open.alipay.com/doc2/detail.htm?spm=0.0.0.0.KXemyF&treeId=59&articleId=103676&docType=1
1.导入adk和框架依赖库
此配置适配ios9中对http访问的限制
代替的简单做法:
在info.plist文件中加入
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key><
true
/>