1      SDK目录结构

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

libYiJieOnlineHelper.a          易接SDK的接口实现

OnlineAHelper.framework                 易接SDKframework

CustomAppController.h         定制的UnityAppController的头文件

CustomAppController.mm        定制的UnityAppController,继承并重写了默认的UnityAppController的方法,加入了易接的接口;

2     SDK文件添加到工程中

SDK中的“Yijie”文件夹中的4个文件拷贝到\Assets\Plugins\ios

目录下。

3     添加SDK需要的配置

u3d生成的xcode项目中的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     接口说明

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

    /**

     * onCreate_listener   接口用于初始化回调

     * @param context      未用到的参数,为与android的接口保持一致,可以传固定的值

     * @param gameObject   游戏场景中的对象

     * @param listener     退出的监听函数,隶属于gameObject对象的运行时脚本的方法名称,该方法会在收到通知后触发

     * */

[DllImport("__Internal")] 

private static extern void onCreate_listener(IntPtr context,string gameObject, string listener);

4.2 用户登陆登出接口(必选接口)

1、登陆接口

/**

* login接口用于SDK登陆

     * @param context      未用到的参数,为与android的接口保持一致,可以传固定的值

* @param customParams 自定义参数

     * */

[DllImport("__Internal")]

privatestatic extern void login(IntPtr context, string customParams);

   2、登出接口

    /**

     * logout接口用于SDK登出

     * @param context      未用到的参数,为与android的接口保持一致,可以传固定的值

     * @param customParams 自定义参数

     * */

         [DllImport("__Internal")] 

         private static extern void logout (IntPtr context, string customParams);

   3、登入登出监听

/**

     *  setLoginListener方法用于设置登陆监听

     * 初始化SDK

     *  @param context      未用到的参数,为与android的接口保持一致,可以传固定的值

     *  @param gameObject   游戏场景中的对象,SDK内部完成登陆登出逻辑后,把结果通知到Unity,故游戏开发者需要指定一个游戏对象和该对象的运行脚本,用于侦听SDK的登入登出结果

     * @param listener      登录的监听函数,隶属于gameObject对象的运行时脚本的方法名称,该方法会在收到通知后触发 */

         [DllImport("__Internal")]

         private static extern void setLoginListener (IntPtr context, string gameObject, string listener);

该接口方法用于设置登陆监听;

         参数描述:

参数名称

类型

注释

context

IntPtr

未用到的参数,为与android的接口保持一致,可以传固定的值

gameObject

string

游戏场景中的对象,SDK内部完成登陆登出逻辑后,把结果通知到Unity,故游戏开发者需要指定一个游戏对象和该对象的运行脚本,用于侦听SDK的登入登出结果

listener

string

登陆监听函数,隶属于gameObject对象的运行时脚本的方法名称,该方法会在收到通知后触发

调用用例

setLoginListener((IntPtr)1,"Main Camera", "LoginResult");

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

/**

     * pay接口用于用户触发定额计费

     * @param context      未用到的参数,为与android的接口保持一致,可以传固定的值

     * @param gameObject   游戏场景中的对象

     * @param unitPrice    游戏道具单位价格,单位-

     * @param unitName     虚拟货币名称

     * @param count        商品或道具数量

     * @param callBackInfo 由游戏开发者定义传入的字符串,会与支付结果一同发送给游戏服务器,

     *                     游戏服务器可通过该字段判断交易的详细内容(金额角色等)

     * @param callBackUrl  将支付结果通知给游戏服务器时的通知地址url,交易结束后,

     *                  系统会向该url发送http请求,通知交易的结果金额callbackInfo等信息

     * @param payResultListener  支付监听接口,隶属于gameObject对象的运行时脚本的方法名称,该方法会在收到通知后触发

     * */

[DllImport("__Internal")]

private static extern void pay(IntPtr context, string gameObject,

intunitPrice, string unitName, int count, string callBackInfo, string callBackUrl, string payResultListener);

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

参数描述:

参数名称

类型

注释

context

IntPtr

未用到的参数,为与android的接口保持一致,可以传固定的值

unitName

string

商品名(虚拟货币名称)

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

unitPrice

int

当前1个商品名(虚拟货币名称)需要支付金额,单位为人民币分

count

int

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

callBackInfo

string

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

callBackUrl

string

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

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

gameObject

string

游戏场景中的对象,SDK内部完成计费逻辑后,并把计费结果通知到Unity,故游戏开发者需要指定一个游戏对象和该对象的运行脚本,用于侦听SDK的计费结果。

payResultListener

string

支付监听函数,隶属于gameObject对象的运行时脚本的方法名称,该方法会在收到通知后触发

 

调用用例:

pay((IntPtr)1, "Main Camera", 100,  "100金币", 1, "购买金币", "http://192.168.0.224:8980/omsdk-cp/user/paylog/sync", "PayResult");        

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

4.4 非定额计费接口

/**

     * charge接口用于用户触发非定额计费

     * @param context      未用到的参数,为与android的接口保持一致,可以传固定的值

     * @param gameObject   游戏场景中的对象

     * @param itemName     虚拟货币名称

     * @param unitPrice    游戏道具单位价格,单位-

     * @param count        商品或道具数量

     * @param callBackInfo 由游戏开发者定义传入的字符串,会与支付结果一同发送给游戏服务器,

     *                     游戏服务器可通过该字段判断交易的详细内容(金额角色等)

     * @param callBackUrl  将支付结果通知给游戏服务器时的通知地址url,交易结束后,

     *                  系统会向该url发送http请求,通知交易的结果金额callbackInfo等信息

     * @param payResultListener  支付监听接口,隶属于gameObject对象的运行时脚本的方法名称,该方法会在收到通知后触发

     * */

         [DllImport("__Internal")] 

         private static extern void charge (IntPtr context, string gameObject, string itemName, int unitPrice,

int count, string callBackInfo, string callBackUrl, string payResultListener);

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

参数描述:

参数名称

类型

注释

context

IntPtr

未用到的参数,为与android的接口保持一致,可以传固定的值

 

itemName

string

商品名(虚拟货币名称)

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

unitPrice

int

当前1个商品名(虚拟货币名称)需要支付金额,单位为人民币分

count

int

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

callBackInfo

string

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

callBackUrl

string

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

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

gameObject

string

游戏场景中的对象,SDK内部完成计费逻辑后,并把计费结果通过Unity内部API(com.unity3d.player.UnityPlayer.UnitySendMessage(String gameObject,StringruntimeScriptMethod,Stringargs)通知到Unity,故游戏开发者需要指定一个游戏对象和该对象的运行脚本,用于侦听SDK的计费结果。

payResultListener

string

支付监听函数,隶属于gameObject对象的运行时脚本的方法名称,该方法会在收到通知后触发

 

调用用例:

charge((IntPtr)1, "Main Camera", "200金币", 200, 1, "购买金币", "http://192.168.0.224:8980/omsdk-cp/user/paylog/sync", "PayResult");

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

/**

     *  public static void setRoleData(Context context, String roleId

     *  String roleName, String roleLevel, String zoneId, String zoneName)

     * 

     *  @param context   未用到的参数,为与android的接口保持一致,可以传固定的值

     *  @param roleId    角色唯一标识

     *  @param roleName  角色名

     *  @param roleLevel 角色等级

     *  @param zoneId    区域唯一标识

     *  @param zoneName  区域名称

     * */

[DllImport("__Internal")]

private static extern voidsetRoleData(IntPtr context, string roleId, 

stringroleName, string roleLevel, string zoneId, string zoneName);

部分渠道如UC渠道,要对游戏人物数据进行统计,而且为接入规范,

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

参数描述:

参数名称

类型

注释

context

IntPtr

未用到的参数,为与android的接口保持一致,可以传固定的值

roleId

string

角色唯一标识

roleName

string

角色名

roleLevel

string

角色等级

zoneId

string

区域唯一标识

 

zoneName

string

区域名称

4.6 回调消息定义

回调采用Json方式传递参数,定义如下:

1.  登陆回调

回调返回的Json键值定义对应表:

Key

值类型

注释

"result"

string

登入登出类型

"customParams"

string

自定义参数

"userinfo"

SFJSONObject

登陆账户信息

键值定义对应表2.4.2.6.1

键值"result"Value值定义如下表:

名称

注释

LoginResult.LOGOUT

"0"

登出

LoginResult.LOGIN_SUCCESS

"1"

登入成功

LoginResult.LOGIN_FAILED

"2"

登入失败

键值"result"值定义对应表2.4.2.6.2

键值" userinfo "Value值定义如下表:

参数

键值

类型

注释

id

"id"

long

易接内部userid,该值可能为0,请不要以此参数作为判定。

channelId

"channelid"

String

易接平台标示的渠道SDK ID

ChannelUserId

"channeluserid"

String

渠道SDK标示的用户ID

UserName

"username"

 

渠道SDK的用户名称。

 

 

Token

"token"

String

渠道SDK登录完成后的Session ID

特别提醒:部分渠道此参数会包含特殊值如‘+’,空格之类的,如直接使用URL参数传输到游戏服务器请求校验,请使用URLEncoder编码。

ProductCode

"productcode"

string

易接平台创建的游戏IDappId



 

 

 

 

 

 

 

 

键值"userinfo "值定义对应表2.4.2.6.2

详细代码请参考Unity3DDemo

2.  支付回调:

名称

注释

PayResult. PAY_SUCCESS

"0"

支付成功

PayResult. PAY_FAILURE

"1"

支付失败

PayResult. PAY_ORDER_NO

"2"

返回支付订单号

                   使用方法参见unity3DDemo

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

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

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

参数

获取方式

类型

注释

appId

user.getProductCode()

String

易接平台创建的游戏IDappId

请使用URLEncoder编码

channelId

user.getChannelId ()

String

易接平台标示的渠道SDK ID

请使用URLEncoder编码

userId

user.getChannelUserId ()

String

渠道SDK标示的用户ID

请使用URLEncoder编码

token

user.getToken ()

String

渠道SDK登录完成后的Session ID

请使用URLEncoder编码

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

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”,将libYiJieOnlineHelper.aOnlineAHelper.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     接口说明

4.1 导入头文件

#import <OnlineAHelper/YiJieOnlineHelper>

4.2 SDK初始化接口

调用方式

[YiJieOnlineHelperinitSDKWithListener : (id)initListener];

参数说明

initListener:初始化回调,请参考后面的说明

接口说明

初始化接口

 

    AppDelegate.m文件中加入以下方法

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

    BOOL yjResult = [[YJAppDelegae Instance] application:applicationopenURL:urlsourceApplication:sourceApplicationannotation:annotation];

returnyjResult;

}

- (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:applicationdidFinishLaunchingWithOptions:launchOptions];

 

}

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

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

}

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

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

}

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

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

   }

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

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

}

4.3 用户登陆接口

调用方式

[YiJieOnlineHelper login:(NSString*) remain];

参数说明

登陆接口

接口说明

调用登陆接口之前请先设置回调调用登陆接口之前请先设置回调[YiJieOnlineHelpersetLoginListener: (id)loginListener];

登陆成功回调回来的YiJieOnlineUser参数描述如下,

用于服务器登录校验:

参数

获取方式

类型

注释

appId

user.productCode

NSString

易接平台创建的游戏IDappId

channelId

user.channelId

NSString

易接平台标示的渠道SDK ID

userId

user.channelUserId

NSString

渠道SDK标示的用户ID

 

 

 

token

user.token

NSString

渠道SDK登录完成后的SessionID

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

4.4 登陆验证接口

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

调用用例:参考demo中的

-(void) onLoginCheck : (YiJieOnlineUser*) user

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

调用方式

[YiJieOnlineHelpersetRoleData:roleData];

参数说明

roleDatajson数据

接口说明

部分渠道要对游戏人物数据进行统计,而且为接入规范,所以为必选接口

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

参数描述:

参数KEY

类型

注释

roleId

NSString

角色唯一标识

roleName

NSString

角色名

roleLevel

NSString

角色的等级

zoneId

NSString

角色所在区域唯一标识

zoneName

NSString

角色所在区域名称

4.6 退出接口

当游戏退出前必须调用该方法,进行清理工作。如果游戏直接退出,而不调用该方法,可能会出现未知错误,导致程序崩溃。

调用方式

[YiJieOnlineHelper exit: (id) exitListener];

参数说明

exitListener:退出的回调,参考后面的说明

接口说明

退出接口

4.7 定额计费接口

该接口用于定额支付的接口函数。

 

调用方式

[YiJieOnlineHelper pay:(int32_t) unitPrice : (NSString*) unitName : (int32_t) count : (NSString*) callBackInfo : (NSString*) callBackUrl : (id) payResultListener];

参数说明

 

接口说明

支付接口

 

 

参数名称

类型

注释

unitPrice

int

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

itemName

NSString

商品名(虚拟货币名称)

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

count

int

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

callBackInfo

NSString

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

callBackUrl

NSString

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

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

payResultListener

YiJieOnlinePayResultDelegate

支付回调接口

 

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

4.8 非定额计费接口

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

 

调用方式

  [YiJieOnlineHelper charge:(NSString*) itemName : (int32_t) unitPrice : (int32_t) count : (NSString*) callBackInfo : (NSString*) callBackUrl : (id) payResultListener];

参数说明

 

接口说明

非定额支付接口

 

参数描述:

 

参数名称

类型

注释

itemName

NSString

商品名(虚拟货币名称)

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

unitPrice

int

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

count

int

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

callBackInfo

NSString

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

callBackUrl

NSString

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

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

payResultListener

YiJieOnlinePayResultDelegate

支付回调接口

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

4.9 扩展接口1

扩展接口,有些SDK要求必须接角色升级的接口,用户可以使用此接口调用,具体可以参考易接工具上的SDK的参数填写帮助。

调用方式

[YiJieOnlineHelpersetData : (NSString*) key : (NSString*)value];

参数说明

 

接口说明

扩展接口

 

4.10 实现SDK delegate

为了获得SDK 的回调通知,需要并实现以下表中的方法:

 

1、初始化回调YiJieOnlineInitDelegate

-(void) onResponse:(NSString*) tag : (NSString*) value

tag"success"//初始化成功的回调

tag