1      SDK目录结构

易接IOS SDK"Yijie"目录下带有2个文件:

libYiJieOnlineHelper.a          易接SDK的接口实现

OnlineAHelper.framework                 易接SDKframework

2     SDK文件添加到工程中

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

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

如下图所示:

 

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

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 导入头文件

#include "SFGameNativeInterface.hpp"

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

注意:只需调用一次

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

SFGameNativeInterface::setInitCallback(initCallback);

    /*初始化的函数*/

SFGameNativeInterface::onCreate();

5.3 用户登陆接口(必选接口)

staticvoid SFGameNativeInterface::login(constchar* params);

该方法用于登陆,调用用例:

                   SFGameNativeInterface::setLoginCallback(&loginCallback);//设置回调函数

                   SFGameNativeInterface::login("login");

5.4 用户登出接口

staticvoid SFGameNativeInterface::logout(constchar* params);

该方法用于登出,调用用例:

                   SFGameNativeInterface::setLoginCallback(&loginCallback);//设置回调函数

           SFGameNativeInterface::logout("logout");

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

staticvoid SFGameNativeInterface::pay(int unitPrice, constchar*  unitName,

                            int count, constchar*  callBackInfo, constchar* callBackUrl);

该接口用于定额支付的接口函数。合作伙伴在需要使用定额支付的时候使用该接口。

参数描述:

参数名称

类型

注释

unitPrice

int

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

unitName

constchar*

商品名(虚拟货币名称)

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

count

int

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

callBackInfo

constchar*

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

callBackUrl

constchar*

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

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

 

调用用例:

                   SFGameNativeInterface::setPayResultCallback(&payCallback);

                   SFGameNativeInterface::pay(1, "100金币", 1, "购买金币",

“http://192.168.0.224:8980/omsdk-cp/user/paylog/sync”);

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

5.6 非定额计费接口

staticvoid SFGameNativeInterface::charge(constchar* itemName, int unitPrice, int count,constchar* callBackInfo, constchar* callBackUrl);

该接口用于用户触发计费进行付费行为的入口函数。合作伙伴可以在需要计费的地方调用此接口进行计费。该接口用于非定额计费。

参数描述:

参数名称

类型

注释

itemName

constchar*

商品名(虚拟货币名称)

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

unitPrice

int

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

count

int

用户选择购买道具界面的默认道具数量.(count*unitPrice)

callBackInfo

constchar*

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

callBackUrl

constchar*

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

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

 

调用用例:

         SFGameNativeInterface::setPayResultCallback(&payCallback);//设置回调

SFGameNativeInterface::charge("200金币", 2, 1, "购买金币", “http://192.168.0.224:8980/omsdk-cp/user/paylog/sync”);

5.7 登陆验证接口(必选接口)

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

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

参数

获取方式

类型

注释

appId

user->productCode

String

易接平台创建的游戏IDappId

请使用URLEncoder编码

channelId

user->channelId

String

易接平台标示的渠道SDK ID

请使用URLEncoder编码

userId

user->channelUserId

String

渠道SDK标示的用户ID

请使用URLEncoder编码

token

user->token

String

渠道SDK登录完成后的Session ID

请使用URLEncoder编码

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

调用用例:参考demo中的onLoginSuccess回调中的处理

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

staticvoid SFGameNativeInterface::setRoleData(constchar* roleId, constchar* roleName,constchar* roleLevel, constchar* zoneId, constchar* zoneName);

部分渠道要对游戏人物数据进行统计,为接入规范,要求游戏中必须接入此接口。

调用时间:在游戏登录验证成功后

参数描述:

参数名称

类型

注释

roleId

constchar*

角色唯一标识

roleName

constchar*

角色名

roleLevel

constchar*

角色等级

zoneId

constchar*

区域唯一标识

 

zoneName

constchar*

区域名称

5.9 初始化回调类

class SFNativeOnlineInitCallback

{

public:

         SFNativeOnlineInitCallback() {};

virtual~SFNativeOnlineInitCallback(){};

virtualvoidonResponse(constchar* r, constchar* remain) = 0;

};

设置接口为:

staticvoid SFGameNativeInterface::setInitCallback(

SFNativeOnlineInitCallback * callback);

示例:

/*游戏初始化回调类*/

class SFNativeOnlineInitCallbackImpl: public SFNativeOnlineInitCallback {

         virtualvoidonResponse(constchar* r, constchar* remain) {

                            log("初始化:%s", r);

         }

};

SFNativeOnlineInitCallbackImpl*initCallback=newSFNativeOnlineInitCallbackImpl();

SFGameNativeInterface:: setInitCallback (initCallback);

5.10 登陆登出回调类

class SFNativeOnlineLoginCallback

{

public:

                  SFNativeOnlineLoginCallback() {};

                   virtual~SFNativeOnlineLoginCallback() {};

                   //用户调用SFGameNativeInterface::logout时,会被调用

                   virtualvoidonLogout(constchar* remain) = 0;

//用户调用SFGameNativeInterface::login登陆成功时,会被调用

// user为登陆时返回相关参数包含id token 渠道号等

                   virtualvoidonLoginSuccess(SFNativeOnlineUser* user, constchar* remain) = 0;

//用户调用SFGameNativeInterface::login登陆失败时,会被调用

                   virtualvoidonLoginFailed(constchar* r, constchar* remain) = 0;

};

登陆回调类需要在登陆之前设置,可以只设置一次。设置接口为:

staticvoid SFGameNativeInterface::setLoginCallback(

SFNativeOnlineLoginCallback* callback);

5.11 支付回调类

class SFNativeOnlinePayResultCallback

{

public:

         SFNativeOnlinePayResultCallback() {};

virtual~SFNativeOnlinePayResultCallback() {};

//用户支付失败时,会被调用

virtualvoidonFailed(constchar* remain) = 0;

//用户支付成功时,会被调用

virtualvoidonSuccess(constchar* remain) = 0;

//用户支付过程中,创建订单号时会被调用

virtualvoidonOderNo(constchar* orderNo) = 0;

};

支付回调类需要在支付之前设置,可以只设置一次。设置接口为:

staticvoid SFGameNativeInterface::setPayResultCallback (

SFNativeOnlinePayResultCallback * callback);