帮助文档

1      SDK目录结构

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

Yijie"目录下有2个文件:

libYiJieOnlineHelper.a               易接SDK的接口实现

OnlineAHelper.framework                 易接SDKframework

2Cocos JSC++转换文件

 CocosJsDemo/frameworks/runtime-src/Classes”下的yijie.hpp yijie.cpp

3yijiesdkconst.js

   CocosJsDemo/src/yijiesdkconst.js

2     SDK文件添加到工程中

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

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

如下图所示:

 

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

2)将yijie.hpp yijie.cpp加入到XCODE工程中

3)将yijiesdkconst.js加入到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 接口初始化

AppDelegate.cppsc->start();之前添加如下代码:

         #include "yijie.hpp"

         sc->addRegisterCallback(register_all_yijie);

         修改之后效果图如下:

 

5.2 实例化易接SDK接口

//例化易接SDK,全局唯一
 self.gameNativeInterface = new SFGameNativeInterface();

5.3 设置初始化回调接口

注:在易接初始化的时候调用不带回调接口,这里不需要设置

//设置初始化回调

self.gameNativeInterface.setInitCallback(self.initListener, self);

//初始化回调

initListener: function(result,msg) {

     var self = this;
       self.tipinlogoui(result);    },

5.4 易接用户登陆接口(必选接口)

//设置登陆回调
self.gameNativeInterface.setLoginCallback(self.loginListener, self);

//调用登陆接口
self.gameNativeInterface.login("");

//易接用户登陆回调
loginListener: function(result, user, remain){
   
var self = this;
   
if  (result == YiJieLoginResultCode.YJLoginSuccess) {
       
/*收到登陆成功消息后,请求登陆校验,具体流程如下:
           1 
游戏客户端请求游戏服务器
           2 
游戏服务器请求易接服务器
        */
       
var appid = user.getProductCode();
         /*易接平台用来标示应用的ID 格式如: {XXXXXXXX-XXXXXXXX}*/
       
var sdkid = user.getChannelId();
         /*易接平台标示的渠道的ID 格式如: {XXXXXXXX-XXXXXXXX}*/
       
var userid = user.getChannelUserId();
         /*渠道的用户ID 游戏开发者可以根据 sdkid & userid 标示唯一用户,
         部分渠道sdkuserid中可能包含特殊字符,如& 数据传输时请加密处理*/
       
var token = user.getToken();
         /*会话标示 部分渠道sdktoken中可能包含特殊字符
         ,如& 数据传输时请加密处理*/
        
         //此处游戏可以处理请求游戏服务器做登陆校验
    } else if (result == YiJieLoginResultCode.YJLoginFail) {
       
self.tipinlogoui("登陆失败");
    }
else if (result == YiJieLoginResultCode.YJLoginOut) {
       
self.tipinlogoui("切换账号");
       
self.login();/*收到切换账号信息,游戏需主动调用此接口 切换账号*/
   
}
},

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

部分渠道SDK不支持定额支付接口,即:用户在支付界面时可以修改支付金额,所以游戏支付成功的标准一定以服务支付回调回来的金额为准
this.gameNativeInterface.setPayResultCallback(self.payListener, self);
this.gameNativeInterface.pay(
parseInt(price)/*道具价格单位分*/, 
name/*道具名称*/,
 1 /*个数默认为1*/,
 "callbackinfo"/*此次支付透传参数*/
 "http://game.pay?id=1"/*游戏接收支付回调地址*/);

 

//支付回调
payListener: function(result, msg) {
   
var self = this;
   
switch (result) {
       
case YiJiePayResultCode.YJPaySuccess:
           
break;
       
case YiJiePayResultCode.YJPayFail:
           
break;
       
case YiJiePayResultCode.YJPayOderNo:
           
break;
    }
},

参数描述:

参数名称

类型

注释

unitPrice

int

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

unitName

constchar*

商品名(虚拟货币名称)

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

count

int

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

callBackInfo

constchar*

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

callBackUrl

constchar*

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

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

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

5.6 非定额计费接口(可选接口)

非定额支付接口,即:用户在支付界面时可以修改支付金额,所以游戏支付成功的标准一定以服务支付回调回来的金额为准

this.gameNativeInterface.setPayResultCallback(self.payListener,self);
this.gameNativeInterface.charge(
"100"/*道具名称*/,
100/*价格单位分*/,
1/*道具个数*/, 
"test callbackinfo"/*此次支付透传参数*/
"http://game.pay?id=1"/*游戏接收支付回调地址*/);

参数描述:

参数名称

类型

注释

unitPrice

int

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

unitName

constchar*

商品名(虚拟货币名称)

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

count

int

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

callBackInfo

constchar*

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

callBackUrl

constchar*

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

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

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

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

游戏登陆完成后根据用户选择的角色调用此接口,切记游戏内用户切换角色也需要调用
this.gameNativeInterface.setRoleData(
"001"/*角色唯一标识*/, 
"法师"/*角色名*/,
"30"/*角色等级*/,
"1000"/*区域唯一标识*/,
"一区"/*区域名称*/);

参数描述:

参数名称

类型

注释

roleId

constchar*

角色唯一标识

roleName

constchar*

角色名

roleLevel

constchar*

角色等级

zoneId

constchar*

区域唯一标识

 

zoneName

constchar*

区域名称

                              

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

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

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

参数

获取方式

类型

注释

appId

User.productCode

char

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

channelId

User.channelId

char

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

userId

User.channelUserId

char

渠道SDK标示的用户ID

请使用URLEncoder编码

 

token

User.token

char

渠道SDK登录完成后的Session ID

请使用URLEncoder编码

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

调用用例:参考demo中的 logincheck: function(param)