# GHOME SDK 开发手册 for Unity C#

# 1. 前言

本文用于指导游戏开发商接入GHome -Unity PC 版本SDK,文中包含客户端的接入说明;

# 2. SDK接入流程概述

  • 完成隐私政策展示逻辑(请务必在完成隐私的展示逻辑之后再进行调用初始化)

  • 初始化SDK

  • 调用账号功能相关接口

  • 用户在进行购买时,调用支付功能相关接口

  • 其他功能接口,可根据业务需要适时调用

  • 注意:sdk内挂载UI prefab的节点默认是Canvas,需要改为游戏中自己的ui挂载点(如果游戏自己的不为Canvas的话),可以调用如下接口进行修改:

    GHSDK.Instance.GSetUIPrefabParent("Canvas");
    
    1

# 3. 开发环境要求

# 3.1. 集成SDK文件到游戏工程

  • 导入ghome-unity_[日期]_v[版本号].unitypackage包的所有内容到游戏unity项目中

# 4. 隐私政策功能

游戏可调用该接口展示隐私政策同意与否弹框

  • 接口:

    GPrivacyAgreement(string appId, GCallback gCallback);

  • 参数说明:

    appId: 游戏的appId

    gCallback: 回调对象,用来回调执行结果,详情请参考代码事例。

  • 注意事项:

    请确保隐私政策功能接口成功之后再调用其他接口。

  • 代码示例:

            GHSDK.Instance.GPrivacyAgreement("791000008", (code, msg, dicData) =>
            {
                if (code == 0)
                {
                    //同意隐私 初始化
                    if (!isInit)
                    {
                        GHSDK.Instance.GInit("791000008", (code1, msg1, dicData1) =>
                        {
                            if (code1 == 0)//初始化成功
                            {
                                isInit = true;
                                //...
                                GHomeUtils.ShowToastUI(msg1);
                            }
                            else
                            {
                                GHomeUtils.ShowToastUI(msg1);
                            }
                        });
                    }
                }
                else
                {
                    //不同意则退出游戏
                    Application.Quit();
                }
            });
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28

# 5. 基础功能(必接)

# 5.1. SDK初始化接口

游戏在初始场景调用,初始化接口返回成功方可调用后续的登录等功能接口

  • 接口:

    GInit(string appId, GCallback gCallback);

  • 参数说明:

    appId: 游戏的appId

    gCallback: 回调对象,用来回调执行结果,详情请参考代码事例。

  • 注意事项:

    请确保初始化接口成功之后再调用其他接口。

  • 代码示例:

GHSDK.Instance.GInit("791000008",(code,msg,dicData)=>
    {
        if (code == 0) {
            isInit = true;
            //...
            GHomeUtils.ShowToastUI(msg);
        } else {
            GHomeUtils.ShowToastUI(msg);
        }
    });
1
2
3
4
5
6
7
8
9
10

# 6. 账号功能(必接)

# 6.1. 客户端登录

游戏客户端可以调用登录接口为玩家提供登录功能。若用户第一次登录,将显示登录和注册的界面。若用户上次使用账号成功登录过,则调用登录接口之后会用该账号自动登录。

  • 接口:

    GLogin(GCallback gCallback)

  • 参数说明:

    gCallback: 回调对象,用来回调执行结果,详情请参考代码事例。

  • 代码示例:

GHSDK.Instance.GLogin((code, msg, dicData) => {
            if (code == 0)
            {
                GHomeUtils.ShowToastUI(msg + ", userid: " + dicData["userid"] + ", ticket: " + dicData["ticket"]);


                //请求区数据
                GetAreaInfo();
            }
            else if (code == GUnityConstants.ERROR_CODE_LOGIN_CANCEL)
            {
                GHomeUtils.ShowToastUI(msg);
            }
            else
            {
                GHomeUtils.ShowToastUI(msg);
            }
        }
        );
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

# 6.2. 客户端注销接口

游戏客户端可以在游戏内需要注销账号的地方调用该接口,执行成功将删除自动登录的记录信息,玩家下次登录后将不再自动登录,而是显示出登录界面。

  • 接口:

    GLogout(GCallback gCallback)

  • 参数说明:

    gCallback: 回调对象。

  • 代码示例:

GHSDK.Instance.GLogout((code, msg, dicData) => {
            if (code == 0)
            {
                GHomeUtils.ShowToastUI(msg);
                //跳转去登录主页
                SceneManager.LoadScene("LoginScene");
            }
            else { }
        }
        );
1
2
3
4
5
6
7
8
9
10

# 7. 支付功能(必接)

# 7.1. 客户端支付接口

游戏客户端可以在购买道具的地方调用该接口。这将打开支付界面,引导玩家支付该订单。用户结束支付操作后,SDK会回调游戏客户端,告知支付结果是否已经成功。

  • 接口:

    GPay(string orderId, string groupId, string areaId, string productId, string extend, GCallback gCallback)

  • 参数说明:

    orderId: 必传,游戏订单号。如果游戏需要记录订单号,可以传入唯一的字符串来标识此订单。

    groupId: 必传,组ID。没有则传空串

    areaId: 必传,在手游直通车平台上设置的区服的ID 区服ID不可为0

    productId: 必传,在手游直通车平台上设置的商品的ID

    extend: 扩展参数,游戏可用于自行扩展,平台发货通知时将原样返回给游戏服务器,无需要则传空。

    gCallback: 回调对象,用来回调执行结果,详情请参考代码事例。

  • 注意事项:

    由于可能发生网络延迟等等原因,有时候客户端返回的支付结果可能与实际情况有出入,所以最终订单是否支付成功,建议以平台服务器端的通知为准,客户端的通知结果仅作为参考。

  • 代码示例:

GHSDK.Instance.GPay("order123456123456", "1", "1", "test.1", "payextentstr", (code,msg,dicData)=>
    {
        if (code == 0) {
            //......
            GHomeUtils.ShowToastUI(msg);
        } else {
            GHomeUtils.ShowToastUI(msg);
        }
    }
    );
1
2
3
4
5
6
7
8
9
10

# 8. 扩展功能(可选)

# 8.1. 客户端获取游戏区服列表接口

游戏客户端可以调用该接口获取游戏在G家平台登记的区服配置。

  • 接口:

    GGetAreas(GCallback<List<GHAreaInfoDetail>> gCallback)

  • 参数说明:

    gCallback: 回调对象,用来回调执行结果,详情请参考代码事例。

  • 代码示例:

GHSDK.Instance.GGetAreas((code,msg,data)=>
    {
        if (data != null) {
            areaData = data;
            foreach(GHAreaInfoDetail areaInfo in data)
            {
                OptionData temoData = new OptionData
                {
                    text = areaInfo.name
                } ;
                mAreas.options.Add(temoData);
            }
            mAreas.captionText.text = data[0].name;
            selectedAreaId = data[0].area_code;
            selectedGroupId = data[0].group_id;
        }
    });
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

# 8.2. 客户端设置区服信息接口

游戏客户端需要在选择了区服之后调用该接口上报一下区服信息

  • 接口:

    GSetLoginArea(string areaId, string groupId)

  • 参数说明:

    areaId: 区服id。 groupId: 组id。

  • 代码示例:

//上报选择的区服信息
GHSDK.Instance.GSetLoginArea(selectedAreaId, selectedGroupId);
1
2

# 8.3. 客户端获取游戏商品列表接口

游戏客户端可以调用该接口获取游戏在G家平台登记的商品配置。

  • 接口:

    GGetProducts(GCallback<List<GHProductInfoDetail>> gCallback)

  • 参数说明:

    gCallback: 回调对象,用来回调执行结果,详情请参考代码事例。

  • 代码示例:

GHSDK.Instance.GGetProducts((code,msg,data)=>
    {
        if (data != null) {
            foreach(GHProductInfoDetail productInfo in data)
            {
                Debug.Log("productName: " + productInfo.item_name);
            }
        }
    });
1
2
3
4
5
6
7
8
9

# 8.4. 客户端获取一次性票据接口

游戏客户端可以调用该接口获取用于游戏登录的一次性票据。

  • 接口:

    GGetTicket(GCallback gCallback)

  • 参数说明:

    gCallback: 回调对象,用来回调执行结果,详情请参考代码事例。

  • 代码示例:

GHSDK.Instance.GGetTicket((code, msg, dicData) => {
            Debug.Log("ticket: " + dicData["ticket"]);
        });
1
2
3

# 8.5. 客户端获取隐私政策和用户协议url

游戏客户端可以调用该接口获取隐私政策 和用户协议的 url链接。

  • 接口:

    GGetAgreementUrl(GCallback gCallback)

  • 参数说明:

    gCallback: 回调对象,用来回调执行结果,详情请参考代码事例。

  • 代码示例:

GHSDK.Instance.GGetAgreementUrl((err, msg, data) =>
            {
                Debug.Log("servicerAgreement html Url: " + data["servicerAgreementUrl"]);
                Debug.Log("privacyPolicy html url: " + data["privacyPolicyUrl"]);

                privacyUrl = data["privacyPolicyUrl"];
                serviceUrl = data["servicerAgreementUrl"];

            });
1
2
3
4
5
6
7
8
9
Last Updated: 2024/8/7 07:53:35