帮助文档

1      SDK目录结构

1)易接IOS 资料包中"LuaDemo/frameworks/runtime-src/proj.ios_mac/ios/

Yijie"目录下有2个文件:

libYiJieOnlineHelper.a               易接SDK的接口实现

OnlineAHelper.framework                 易接SDKframework

2LuaC++转换文件

 LuaDemo/frameworks/runtime-src/Classes/”下的SFLuaAdaper.hSFLuaAdaper.mm

2     SDK文件添加到工程中

1)将SDK中的“Yijie”文件夹拷贝到应用开发的目录下,右键选择“Add Files to

添加到工程目录中,在弹出的对话框中勾选“Create groups

如下图所示:

 

点击“Build Phase”左上角的“+”按钮,选择“New Copy Files Phase,选择“Frameworks”,将OnlineAHelper.framework  添加进去,效果如图:

2)将SFLuaAdaper.hSFLuaAdaper.mm加入到XCODE工程中

3     添加SDK需要的配置

在游戏的Info.plist中添加如下配置

 

       key:  "com.snowfish.customer"

       value"SNOWFISH"

       key:"com.snowfish.channel"

       value"SNOWFISH"

       key:"com.snowfish.sdk.version"

       value"2"

       key:"com.snowfish.appid"

       value"KEY"

       key: "com.snowfish.channelid"

       value"{4ff036a1-3254eafe}"

 

标红处的KEY值需要替换成在易接用户中心申请获取的APPID

格式如下:{12345678-12345678}

Bundle ID需要替换成和在易接后台申请的Bundle ID一致

效果如下图:

4     Application的修改

AppController.mm文件中加入以下方法

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation NS_AVAILABLE_IOS(4_2){

    BOOL yjResult = [[YJAppDelegae Instance] application:application openURL:url sourceApplication:sourceApplication annotation:annotation];

    return yjResult;

}

- (void)applicationDidEnterBackground:(UIApplication *)application {

     [[YJAppDelegae Instance] applicationDidEnterBackground:application];

}

- (void)applicationWillEnterForeground:(UIApplication *)application {

      [[YJAppDelegae Instance] applicationWillEnterForeground:application];

    }

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    return [[YJAppDelegae Instance] application:application didFinishLaunchingWithOptions:launchOptions];

 

}

- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {   

    [[YJAppDelegae Instance] application:application didRegisterForRemoteNotificationsWithDeviceToken:deviceToken];

}

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {

        [[YJAppDelegae Instance] application:application didReceiveRemoteNotification:userInfo];

}

- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window {

         return [[YJAppDelegae Instance] application:application supportedInterfaceOrientationsForWindow:window];

   }

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url{

    return  [[YJAppDelegae Instance] application:application handleOpenURL:url];

}

5     接口说明

5.1 Lua接口初始化

AppDelegate.cpp中添加如下代码,

        #include "SFLuaAdaper.h"

 

5.2 SDK初始化接口 (必选接口)

#include "SFGameNativeInterface.hpp"

    注意:只需调用一次,

    建议初始化的代码加在 AppController.mm 收到初始化的回调后再显示界面。

    /*首先设置初始化的回调函数*/

    SFGameNativeInterface::setInitCallback(initCallback);

    /*初始化的函数*/

    SFGameNativeInterface::onCreate();

5.3 实例化易接SDK接口(必选接口)

--获取易接接口
 
require "YijieInterface"

local yijie = YijieInterface.new()

5.4 易接用户登陆登出接口

--注册登陆回调

yijie:setLoginListener("loginCallback")
--
调用登陆接口
yijie:login("login")

--调用登出接口
yijie:logout("logout")


--
登陆回调

function loginCallback(jPrama)

         require "json"

         local data = json.decode(jPrama);

         if data["result"] == "success" then--登录成功

                   local productCode = data ["productCode"]

                   local channelId = data ["channelId"]

                   local channelUserId = data ["channelUserId"]

                   local token = data ["token"]

                   local id = data ["id"]

                   local userName = data ["userName"]

         elseif data["result"] == "fail" then--登陆失败            

         elseif data["result"] == "logout" then--登出回调                

         end

end

5.5 定额计费接口 (必选接口)

yijie:pay(

price/*道具价格单位分*/,

name/*道具名称*/,

 1 /*个数默认为1*/,

 "callbackinfo"/*此次支付透传参数*/

 "http://game.pay?id=1"/*游戏接收支付回调地址*/,

"payCallback");

 

--支付回调

function payCallback(jPrama)

         require "json"

         local data = json.decode(jPrama);

         if data["result"] == "success" then--支付成功

         elseif data["result"] == "oderno" then--支付订单

                   print("支付订单号", data["remain"])

         elseif data["result"] == "fail" then--支付失败

         end

end

参数描述:

 

参数名称

类型

注释

unitPrice

int

游戏道具价格,单位为人民币分

unitName

constchar*

商品名(虚拟货币名称)

注意:商品名在游戏内一定要保证唯一性!不能出现多个商品名相同。

count

int

用户选择购买道具界面的默认道具数量。(总价 count*unitPrice

callBackInfo

constchar*

由游戏开发者定义传入的字符串,会与支付结果一同发送给游戏服务器,游戏服务器可通过该字段判断交易的详细内容(金额角色等)

callBackUrl

constchar*

将支付结果通知给游戏服务器时的通知地址url,交易结束后,系统会向该url发送http请求,通知交易的结果金额callbackInfo等信息

这里的回调地址可以填也可以为空字串,如果填了则以这里的回调地址为主,如果为空则以易接开发者中心设置的回调地址为准。

说明:网游的支付结果请以服务器端的同步结果为准,因为某些SDK客户端没有支付结果的回调。

5.6 非定额计费接口

yijie:charge (

"100"/*道具名称*/,

100/*价格单位分*/,

1/*道具个数*/,

"test callbackinfo"/*此次支付透传参数*/

"http://game.pay?id=1"/*游戏接收支付回调地址*/,

"payCallback"/*支付回调函数*/,);

参数描述:

 

参数名称

类型

注释

unitPrice

int

游戏道具价格,单位为人民币分

unitName

constchar*

商品名(虚拟货币名称)

注意:商品名在游戏内一定要保证唯一性!不能出现多个商品名相同。

count

int

用户选择购买道具界面的默认道具数量。(总价 count*unitPrice

callBackInfo

constchar*

由游戏开发者定义传入的字符串,会与支付结果一同发送给游戏服务器,游戏服务器可通过该字段判断交易的详细内容(金额角色等)

callBackUrl

constchar*

将支付结果通知给游戏服务器时的通知地址url,交易结束后,系统会向该url发送http请求,通知交易的结果金额callbackInfo等信息

这里的回调地址可以填也可以为空字串,如果填了则以这里的回调地址为主,如果为空则以易接开发者中心设置的回调地址为准。

说明:网游的支付结果请以服务器端的同步结果为准,因为某些SDK客户端没有支付结果的回调。

5.7 设置角色基本数据(必选接口)

游戏登陆完成后根据用户选择的角色调用此接口,切记游戏内用户切换角色也需要调用

yijie:setRoleData(

"001"/*角色唯一标识*/,

"法师"/*角色名*/,

"30"/*角色等级*/,

"1000"/*区域唯一标识*/,

"一区"/*区域名称*/);

参数描述:

参数名称

类型

注释

roleId

constchar*

角色唯一标识

roleName

constchar*

角色名

roleLevel

constchar*

角色等级

zoneId

constchar*

区域唯一标识

 

zoneName

constchar*

区域名称

5.8 用户登陆验证(必选接口)

由于有些SDK要求SDK登录成功以后必须做登录验证,为接入规范,必须接入登录验证,只有登录验证成功才算真正的登录成功。

    渠道sdk登录成功以后,客户端做登录验证请求的时候只需要把以下四个参数拼接进去就行了。

参数

获取方式

类型

注释

appId

userInfo["productCode"]

String

易接平台创建的游戏IDappId请使用URLEncoder编码

channelId

userInfo["channelId"]

String

易接平台标示的渠道SDK ID请使用URLEncoder编码

userId

userInfo["channelUserId"]

String

渠道SDK标示的用户ID

请使用URLEncoder编码

token

userInfo["token"]

String

渠道SDK登录完成后的Session ID请使用URLEncoder编码

特别提醒:部分渠道这些参数会包含特殊值如‘+’,空格之类的,故不能直接使用URL参数传输到游戏服务器请求校验,请对四个参数分别使用URLEncoder进行编码

    调用用例:参考demo中的

     function loginCheck(userInfo)