# GHome Sdk 开发手册 for Cocos c++

  _______  __    __    ______   .___  ___.  _______
 /  _____||  |  |  |  /  __  \  |   \/   | |   ____|
|  |  __  |  |__|  | |  |  |  | |  \  /  | |  |__
|  | |_ | |   __   | |  |  |  | |  |\/|  | |   __|
|  |__| | |  |  |  | |  `--'  | |  |  |  | |  |____
 \______| |__|  |__|  \______/  |__|  |__| |_______|
1
2
3
4
5
6

# 接入

# Android 接入

按照 GHOME SDK 开发手册 for Android | GHOME SDK 文档 - 支付中心 (opens new window) 完成 GHOME SDK 接入

GHomeBridge.h/cpp 拷贝到 Classes 目录中,然后在 CMakeLists.txt 中加入编译, GHomeBridge.h 是所有调用的入口

# ...
list(APPEND GAME_HEADER
            Classes/GHomeBridge.h
            )

if(ANDROID)
    list(APPEND GAME_SOURCE
    # ...
         Classes/GHomeBridge.cpp
         )
elseif(LINUX)
1
2
3
4
5
6
7
8
9
10
11

在 Android 工程中,把 GHomeBridge.java 拷贝到 com.shengqu.cocos.ghome 下,不能是其他路径,必须保持一致。

# iOS 接入

手游直通车 SDK 开发手册 for IOS | GHOME SDK 文档 - 支付中心 (opens new window) 完成 GHOME SDK 接入 iOS 相关配置

# 基础功能(必接)

# 调用 sdk 的隐私协议展示功能

  • 接口: static void DoPrivacyAgreement(std::string appId, const GHomeCallback &callback);

  • 参数说明

    参数名 说明
    appId 游戏在手游直通车平台上申请得到的 ID
    callback 回调对象,用来回调执行结果,详情请参考代码事例。
  • 注意事项: 如游戏是自己实现隐私协议相关弹框展示功能则无需调用该接口, 否则必接

GHOME::GHomeBridge::DoPrivacyAgreement(
    "791000008",
    [=](int code, std::string message,
        std::unique_ptr<std::unordered_map<std::string, std::string>> params) {
        log("DoPrivacyAgreement callback, code: %d, message: %s, ", code,
            message.c_str());
        if (GHOME::ERROR_CODE_SUCCESS == code) {
            // 调用了sdk的隐私政策功能并得到同意,可继续游戏后续运行逻辑
        } else {
            // 不同意隐私政策,退出
            Toast::ShowToast("玩家不同意隐私政策");
        }
    });
1
2
3
4
5
6
7
8
9
10
11
12
13

# 获取是否需要展示隐私协议弹框

  • 接口: static void GetAgreementStatus(std::string appId, bool isForLogin, const GHomeCallback &callback);

  • 参数说明

    参数名 说明
    appId 游戏在手游直通车平台上申请得到的 ID
    isForLogin 是否是在去调用 login 接口之前的查询(true),(对应于启动游戏时的查询-false)
    callback 回调对象,用来回调执行结果,详情请参考代码事例。
  • 注意事项 如游戏是自己实现隐私协议相关弹框展示功能则必接,否则请勿调用该接口; 并且在同意与否的操作时 需要调用隐私协议结果反馈接口

GHOME::GHomeBridge::GetAgreementStatus(
    "791000008", false, CC_CALLBACK_3(HelloWorld::onAgreementCallback, this));

void HelloWorld::onAgreementCallback(
    int code, std::string message,
    std::unique_ptr<std::unordered_map<std::string, std::string>> params) {
    auto iter = params->find("status");
    if (GHOME::ERROR_CODE_SUCCESS == code && iter != params->end() &&
        "1" == iter->second) {
        // 游戏自己处理隐私协议展示
        auto content = params->find("privacyContent");

        auto size = getContentSize();
        auto dialog =
            CustomPrivacyDialog::create(Color4B::WHITE, size.width * 0.6,
                                        size.height * 0.5, content->second);
        dialog->setAnchorPoint(Vec2::ANCHOR_MIDDLE);
        dialog->setIgnoreAnchorPointForPosition(false);
        dialog->setCallback([=](bool isAgree) {
            if (isAgree) {
                initButton->setEnabled(true);
                GHOME::GHomeBridge::OnUserAgreement(true, true);
            } else {
                GHOME::GHomeBridge::OnUserAgreement(true, false);
                Director::getInstance()->end();
            }
        });
        dialog->setPosition(size / 2);
        addChild(dialog);
    } else {
        Toast::ShowToast("无需弹框,走已同意处理");
        initButton->setEnabled(true);
        GHOME::GHomeBridge::OnUserAgreement(false, true);
    }
}
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
29
30
31
32
33
34
35

# 隐私协议结果反馈接口

  • 接口: static void OnUserAgreement(bool isUserAction, bool isAgreed);

  • 参数说明

    参数名 说明
    isUserAction 是否用户主动同意隐私协议(主动选择 true,其他选择或者选第一次选择之后后面默认选项 false)
    isAgreed 是否同意隐私协议
  • 注意事项 如游戏没有隐私协议弹窗,则需要在后台配置参数,弹出 SDK 自带隐私协议弹窗。

GHOME::GHomeBridge::OnUserAgreement(false, true);
1

# SDK 初始化(需要在调用隐私接口用户同意之后调用)

  • 接口: static void Initialize(std::string gameId, const GHomeCallback &callback);

  • 参数说明

    参数名 说明
    gameId 游戏在手游直通车平台上申请得到的 ID。
    callback 回调对象,用来回调执行结果,详情请参考代码事例。
  • 注意事项

    游戏在启动游戏时需对设备网络进行判断,若无网络的情况下,游戏需实现对用户的弹框提示。

    如果没有特别说明,在初始化接口成功之前调用其他接口都有可能出现错误,请确保初始化接口成功之后再调用其他接口。

GHOME::GHomeBridge::Initialize(
    "791000008",
    CC_CALLBACK_3(HelloWorld::onGHomeBridgeInitializeCallback, this));

void HelloWorld::onGHomeBridgeInitializeCallback(
    int code, std::string message,
    std::unique_ptr<std::unordered_map<std::string, std::string>> params) {

    if (GHOME::ERROR_CODE_SUCCESS == code) {
        Toast::ShowToast("初始化成功");
    } else if (GHOME::EVENT_ACCOUNT_LOGOUT == code) {
        // 这里已经注销账号了,游戏需要在这里处理自己注销账号的逻辑(可在注销之后调用登录接口拉登录界面)
    } else if (GHOME::EVENT_ACCOUNT_CHANGED == code) {
        // 此处切换账号已经成功,游戏可以使用此处获得的userid和ticket去游戏服务端做登陆数据验证
        // 如果游戏需要,可以在登录成功后,通过data获取到以下信息。
        // userid是该玩家在我们平台的用户id号;
        // ticket是本次登录得到的票据,用来给游戏服务器向平台服务器验证本次登陆是否合法;
    } else if (GHOME::EVENT_ACCOUNT_LOGOUT_ONLY == code) {
        // 这里已经注销账号了,游戏需要在这里处理自己注销账号的逻辑(注销即可,不调登录)
    } else if (GHOME::EVENT_EXIT_GAME == code) {
        //当通过渠道悬浮窗点退出游戏,悬浮窗已退出通知游戏做退出游戏操作。游戏不需要弹退出确认框
    } else {
        Toast::ShowToast("初始化失败");
    }
}
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

# 账号踢下线上报接口

  • 接口: static void KickOff();
  • 注意事项 建议在用户被踢下线时调用该接口
GHOME::GHomeBridge::KickOff();
1

# 客户端登录接口

游戏客户端可以调用登录接口为玩家提供登录功能。若用户第一次登录,将显示登录和注册的界面。若用户上次使用账号成功登录过,则会用该账号自动登录。 (重要:如果游戏使用自己的隐私政策弹框功能, 则需要在调用 login 之前调用查询是否需要弹隐私政策的接口,查询接口说明请参考GHOME SDK 开发手册 for Android | GHOME SDK 文档 - 支付中心 (opens new window)

  • 接口: static void login(const GHomeCallback &callback);

  • 参数说明

    参数名 说明
    callback 回调对象,用来回调执行结果,详情请参考代码事例。
GHOME::GHomeBridge::login(CC_CALLBACK_3(HelloWorld::onLoginCallback, this));

void HelloWorld::onLoginCallback(
    int code, std::string message,
    std::unique_ptr<std::unordered_map<std::string, std::string>> params) {
    if (GHOME::ERROR_CODE_SUCCESS == code) {
        if (params->empty())
            return;
        std::string userId;
        if (params->find(KEY_USER_ID) != params->end()) {
            userId = params->at(KEY_USER_ID);
        }
        UserStorage::setUserId(userId);
        std::string isGuest;
        if (params->find(KEY_IS_GUEST) != params->end()) {
            isGuest = params->at(KEY_IS_GUEST);
        }
        UserStorage::setIsGuest(isGuest);
        std::string ticket;
        if (params->find(KEY_TICKET) != params->end()) {
            ticket = params->at(KEY_TICKET);
        }
        verifyTicket(ticket);
    } else if (GHOME::ERROR_CODE_LOGIN_CANCEL == code) {
        Toast::ShowToast(message);
    } else if (GHOME::ERROR_INIT_NOT_FINISHED == code) {
        GHOME::GHomeBridge::Initialize(
            gameIdBtn->getString(),
            CC_CALLBACK_3(HelloWorld::onGHomeBridgeInitializeCallback, this));
    } else {
        Toast::ShowToast(message);
    }
}
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
29
30
31
32
33

# 客户端登出接口

  • 接口: static void logout(const GHomeCallback &callback);

  • 参数说明

    参数名 说明
    callback 回调对象,用来回调执行结果,详情请参考代码事例。
GHOME::GHomeBridge::logout(
    [](int code, std::string message,
        std::unique_ptr<std::unordered_map<std::string, std::string>> params) {
        if (GHOME::ERROR_CODE_SUCCESS == code) {
            Toast::ShowToast("登出成功");
        } else {
            Toast::ShowToast("登出失败");
        }
    });
1
2
3
4
5
6
7
8
9

# 切换账号接口

  • 接口: static void SwitchAccount(const GHomeCallback& agreementCallback, const GHomeCallback& onSwitchAccountCallback);

  • 参数说明

    参数名 说明
    agreementCallback 用于接收隐私协议弹框的通知,收到该回调时游戏根据 status 状态弹出自己的隐私弹框,切记如果游戏方使用的 sdk 的隐私弹框功能则该参数传 null 对象 或 不传)
    onSwitchAccountCallback 回调对象,用来回调执行结果,详情请参考代码事例。
GHOME::GHomeBridge::SwitchAccount(
    [=](int code, std::string message,
        std::unique_ptr<std::unordered_map<std::string, std::string>> params) {
        if (GHOME::ERROR_CODE_SUCCESS == code) {
            auto iter = params->find("status");
            if (iter != params->end()) {
                auto status = iter->second;
                if ("1" == status) {
                    // 模拟游戏方自己处理隐私政策展示功能
                } else {
                    GHOME::GHomeBridge::OnUserAgreement(false, true);
                }
            }
        }
    },
    [=](int code, std::string message,
        std::unique_ptr<std::unordered_map<std::string, std::string>> params) {
        if (GHOME::ERROR_CODE_SUCCESS == code) {
            auto userId = params->find("userid");
            auto iter = params->find("ticket");
        } else {
            Toast::ShowToast("切换账号失败");
        }
    });
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

# 客户端注销删除账号接口

  • 接口: static void WrittenOff(const GHomeCallback &callback);

  • 参数说明

    参数名 说明
    callback 回调对象,用来回调执行结果,详情请参考代码事例。
GHOME::GHomeBridge::WrittenOff(
    [=](int code, std::string message,
        std::unique_ptr<std::unordered_map<std::string, std::string>> params) {
        if (GHOME::ERROR_CODE_SUCCESS == code) {
            Toast::ShowToast("注销账号成功");
        } else {
            Toast::ShowToast("code: " + std::to_string(code) +
                             ", message: " + message);
        }
    });
1
2
3
4
5
6
7
8
9
10

# 客户端支付接口

  • 接口: static void Pay(std::string groupId, std::string orderId, std::string areaId, std::string productId,std::string extend, const GHomeCallback &callback);

  • 参数说明

    参数名 说明
    groupId 组 ID。没有该实际数据则传空(“”)
    orderId 游戏订单号。如果游戏需要记录订单号,可以传入唯一的字符串来标识此订单。
    areaId 在 GPOP 上设置的区服的 ID , 区服 ID 不可为 0
    productId 在 GPOP 上设置的商品的 ID
    extend 扩展参数,游戏可用于自行扩展,平台发货通知时将原样返回给游戏服务器。
    callback 回调对象,用来回调执行结果,详情请参考代码事例。
  • 入参必要性说明

    1. 支付接口入参信息流转(例如 groupId、areaId 等):游戏 APP 客户端 -> Ghome SDK -> 支付服务端 -> 游戏服务端 -> 玩家信息数据库
    2. 入参是否必须,入参数据是否有特别要求,主要有 【支付服务端 -> 游戏服务端】决定
    3. 不同游戏可能存在不同的数据要求,因此游戏客户端研发对这些入参的 value 有疑虑时,需要向 Ghome SDK 服务端 & 游戏服务端 研发负责人确认 value 的必须性和合理性
  • 注意事项 由于可能发生网络延迟等等原因,有时候客户端返回的支付结果可能与实际情况有出入,所以最终订单是否支付成功,建议以平台服务器端的通知为准,客户端的通知结果仅作为参考。

GHOME::GHomeBridge::Pay(groupId, orderId, areaId, product.productCode, "",
                        CC_CALLBACK_3(PayScene::onPayCallback, this));

void PayScene::onPayCallback(
    int code, std::string message,
    std::unique_ptr<std::unordered_map<std::string, std::string>> params) {
    isPaying = false;
    if (GHOME::ERROR_CODE_SUCCESS == code) {
        Toast::ShowToast("支付成功");
    } else {
        scheduleOnce([=](float time) { Toast::ShowToast("支付失败"); }, 0.1,
                     "pay");
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14

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

  • 接口: static void GetAreaConfig(const GHomeCallback &callback);

  • 参数说明

    参数名 说明
    callback 回调对象,用来回调执行结果,详情请参考代码事例。
GHOME::GHomeBridge::GetAreaConfig(CC_CALLBACK_3(SelectAreaScene::onAreaCallback,
                                                this));

void SelectAreaScene::onAreaCallback(
    int code, std::string message,
    std::unique_ptr<std::unordered_map<std::string, std::string>> params) {
    if (GHOME::ERROR_CODE_SUCCESS == code && !params->empty()) {
        auto data = params->find("data");
        if (data != params->end()) {
            auto areaData = data->second;
            CCLOG("areaData: %s", areaData.c_str());
        }
    } else {
        Toast::ShowToast("获取区服失败,请稍后再试");
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

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

  • 接口: static void GetProductConfig(const GHomeCallback &callback);

  • 参数说明

    参数名 说明
    callback 回调对象,用来回调执行结果,详情请参考代码事例。
  • 注意事项

GHOME::GHomeBridge::GetProductConfig(CC_CALLBACK_3(PayScene::onProductCallback,
                                                   this));

void PayScene::onProductCallback(
    int code, std::string message,
    std::unique_ptr<std::unordered_map<std::string, std::string>> params) {
    if (GHOME::ERROR_CODE_SUCCESS == code && !params->empty()) {
        auto data = params->find("data");
        if (data != params->end()) {
            auto payData = data->second;
            CCLOG("payData: %s", payData.c_str());
        }
    } else {
        Toast::ShowToast("获取区服失败,请稍后再试");
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

# 客户端获取一次性登录票据接口

  • 接口: static void GetTicket(std::string appId, std::string areaId, const GHomeCallback &callback);

  • 参数说明

    参数名 说明
    appId 需要使用该票据完成登录的应用 ID。
    areaId 需要使用该票据完成登录的应用区 ID,如果该应用没有区的概念可以传“0”
    callback 回调对象,用来回调执行结果,详情请参考代码事例。
  • 注意事项 必须在登录成功之后才可以使用该接口

GHOME::GHomeBridge::GetTicket(
    appId, areaId,
    [=](int code, std::string message,
        std::unique_ptr<std::unordered_map<std::string, std::string>> params) {
        if (GHOME::ERROR_CODE_SUCCESS == code) {
            if (params->empty()) {
                Toast::ShowToast("网络出错,请稍后再试");
            } else {
                auto iter = params->find("ticket");
                if (iter != params->end()) {
                    ticketText->setString(iter->second);
                }
                if (verify) {
                    // do verify
                }
            }
        } else {
            Toast::ShowToast("code: " + std::to_string(code) +
                             ", message: " + message);
        }
    });
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

# 打开二维码扫码

  • 接口: static void ScanQRCode(std::string extend, const GHomeCallback &callback);

  • 参数说明

    参数名 说明
    extend 扩展字段,该字段会在扫码 PC 端二维码成功之后原样返回。
    callback 回调对象,用来回调执行结果,详情请参考代码事例。
  • 注意事项 必须在登录成功之后才可以使用该接口。

GHOME::GHomeBridge::ScanQRCode(
    "",
    [=](int code, std::string message,
        std::unique_ptr<std::unordered_map<std::string, std::string>> params) {
        std::shared_ptr<std::unordered_map<std::string, std::string>> data =
            std::move(params);
        // 延迟执行,避免从Android回到Cocos界面错乱
        scheduleOnce([=](float time) { onScanCallback(code, message, data); },
                     0.1, "scan");
    });

void GameScene::onScanCallback(
    int code, std::string message,
    std::shared_ptr<std::unordered_map<std::string, std::string>> params) {
    CCLOG("scan callback, code: %d, message: %s", code, message.c_str());
    switch (code) {
    case GHOME::ERROR_CODE_QR_LOGIN_SUCCESS:
        Toast::ShowToast("已授权我是测试账号001在桌面版登录");
        break;
    case GHOME::ERROR_CODE_QR_PAY_SUCCESS:
        Toast::ShowToast("扫码支付成功");
        break;
    case GHOME::ERROR_PAY_FAILED:
        Toast::ShowToast("支付失败,请稍候再试。");
        break;
    case GHOME::ERROR_CODE_QR_RESULT: {
        std::string toast = std::move(message);
        if (!params->empty()) {
            auto iter = params->find("qrdata");
            if (iter != params->end()) {
                toast = iter->second;
            }
        }
        Toast::ShowToast(toast);
    } break;
    case GHOME::ERROR_CODE_QR_CANCELED:
        Toast::ShowToast("扫码取消");
        break;
    case GHOME::ERROR_USER_NOT_LOGIN:
        Toast::ShowToast("请先登陆!");
        break;
    }
}
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43

# 客户端上报游戏区接口

  • 接口: static void LoginArea(std::string areaId, std::string groupId);

  • 参数说明

    参数名 说明
    areaId 用户进入游戏所选择的区 ID。
    groupId 组 ID, 没有该实际数据则传空(“”)
GHOME::GHomeBridge::LoginArea(area.areaCode, area.groupId);
1

# 客户端显示/隐藏悬浮窗接口

  • 接口: static void ShowFloatIcon(bool show, int position);

  • 参数说明

    参数名 说明
    show true 显示悬浮窗、false 隐藏悬浮窗。
    position 悬浮窗显示位置(部分渠道不支持悬浮窗位置设置,指定该参数可能没有效果)。
GHOME::GHomeBridge::ShowFloatIcon(false, GHOME::FloatPosition::LeftTop);
1

# 第三方渠道 SDK 扩展接口

  • 接口: static void DoExtend(int command, std::unique_ptr<std::unordered_map<std::string, std::string>> params,const GHomeCallback &callback);

  • 参数说明

    参数名 说明
    command 扩展接口编号(如: IGHomeApi.EXTEND_COMMAND_SUBMIT_EXTEND_DATA)
    params 请求参数,类型为 Map<String, String>
    callback 回调对象,用来回调执行结果,详情请参考代码事例。
  • 注意事项 请严格按照文档要求在游戏内各个节点接入该接口。

GHOME::GHomeBridge::DoExtend(
    GHOME::EXTEND_COMMAND_EXIT_PAGE, std::move(map),
    [](int code, std::string message,
       std::unique_ptr<std::unordered_map<std::string, std::string>> params) {
        if (GHOME::ERROR_CODE_SUCCESS == code) {
            Director::getInstance()->end();
        } else {
            Toast::ShowToast(
                "(demo toast)SDK不支持退出页,请游戏(demo)自己弹退出框");
        }
    });
1
2
3
4
5
6
7
8
9
10
11

# 获取一级渠道号

  • 接口: static std::string GetApplicationSuperChannel();
  • 注意事项 在初始化完成前或完成后调用都可以。
std::string superChannelCode = GHOME::GHomeBridge::GetApplicationSuperChannel();
1

# 获取二级渠道号

  • 接口: static std::string GetCPSChannelCode();
std::string channelCode = GHOME::GHomeBridge::GetCPSChannelCode();
Toast::ShowToast(channelCode);
1
2

# 获取 G 家设备 id

  • 接口: static std::string GetGHomeDeviceId();
std::string gDeviceId = GHOME::GHomeBridge::GetGHomeDeviceId();
Toast::ShowToast("G家设备ID: " + gDeviceId);
1
2

# 获取用户条款和隐私政策(选接)

  • 接口: static void GetAgreement(std::string appId, const GHomeCallback &callback);

  • 参数说明

    参数名 说明
    appId 游戏在 GPOP 上申请得到的 ID。
    callback 回调对象,用来回调执行结果,详情请参考代码事例。
GHOME::GHomeBridge::GetAgreement(
    "791000008",
    [](int code, std::string message,
       std::unique_ptr<std::unordered_map<std::string, std::string>> params) {
        if (GHOME::ERROR_CODE_SUCCESS == code) {
            auto iter = params->find("data");
            if (iter != params->end()) {
                auto &content = iter->second;
            }
        }
    });

GHOME::GHomeBridge::GetAgreementContent(
    "791000008",
    [](int code, std::string message,
       std::unique_ptr<std::unordered_map<std::string, std::string>> params) {
        if (GHOME::ERROR_CODE_SUCCESS == code) {
            auto iter = params->find("data");
            if (iter != params->end()) {
                auto &content = iter->second;
            }
        }
    });
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

# 登录账号更换绑定手机号(选接)

  • 接口: static void ChangeThirdBindPhone(std::string appId, const GHomeCallback &callback);

  • 参数说明

    参数名 说明
    appId 游戏在 GPOP 上申请得到的 ID。
    callback 回调对象,用来回调执行结果,详情请参考代码事例。
GHOME::GHomeBridge::ChangeThirdBindPhone(
    appId,
    [](int code, std::string message,
       std::unique_ptr<std::unordered_map<std::string, std::string>> params) {
        if (GHOME::ERROR_CODE_SUCCESS == code) {
            Toast::ShowToast("关联成功");
        } else {
            Toast::ShowToast("关联失败");
        }
    });
1
2
3
4
5
6
7
8
9
10

# 敏感词过滤接口(非必接,请看注意事项)

  • 接口: static void FilterSensitiveWord(std::string inputWord, const GHomeCallback &callback);

  • 参数说明

    参数名 说明
    inputWord 用户输入的文本信息。
    filterCallback 回调对象,用来回调执行结果,详情请参考代码事例。
  • 注意事项

    1. 该接口仅仅是一个 interface 空接口,如果游戏需要在某些渠道使用渠道的敏感词接口(例如 wegame),则需要调用这个接口。
    2. 在 ghome sdk 或其他渠道,不会有任何作用,“原文入参,原文出参”。游戏在这些场景需要自行实现所有敏感词过滤功能(或者使用其他第三方 sdk)
    3. 一般建议使用该接口的游戏,可以单独实现母包(和官方登录或者其他渠道分开),以便在聊天、昵称设定(等所有用户可输入信息地方)实现渠道使用的敏感词过滤(目前仅仅 wegame 渠道支持)。
    4. 基于第三点仅仅是一种游戏的实现方案建议,如果游戏有其他方便实现的方案,也可以操作。但原则上是需要完成敏感词过滤,并了解 ghome sdk 仅仅是一个空接口(功能代理)。
    5. 另外,如果游戏在 wegame 渠道的母包中实现了一次自己的敏感词,则 wegame 渠道包则会:用户输入->游戏母包的敏感词过滤->ghome sdk 接口代理->wegame 敏感词->返回结果。
    6. 该接口我们不会记录任何调用信息,不会有任何日志,因为属于用户隐私的敏感信息。所以请上线前使用该接口的游戏都需要经过测试(所有场景,例如聊天、昵称设置、等等),线上是不会对用户记录任何有关的行为数据。
GHOME::GHomeBridge::FilterSensitiveWord(
    word,
    [](int code, std::string message,
       std::unique_ptr<std::unordered_map<std::string, std::string>> params) {
        if (GHOME::ERROR_CODE_SUCCESS == code) {
            auto iter = params->find("resultWord");
            if (iter != params->end()) {
                Toast::ShowToast(iter->second);
            }
        }
    });
1
2
3
4
5
6
7
8
9
10
11

# GShare(分享功能,按需选接)

  • 接口: static void share(int type, int sharePlatform, std::string text, std::string desc,std::unique_ptr<std::vector<std::string>> mediaPaths, const GHomeShareCallback& callback);

  • 参数说明

    参数名 说明
    type 分享类型
    text 分享文本
    desc 分享描述
    mediaPaths 分享文件路径
    callback 分享回调
  • 注意事项

GHOME::GHomeBridge::share(GHOME::TYPE_TEXT, sharePlatform, "分享文字测试", "",
                          nullptr,
                          CC_CALLBACK_3(ShareScene::onShareCallback, this));

void ShareScene::onShareCallback(int result, int platform,
                                 std::string message) {
    log("share callback: result: %d, platform: %d, %s", result, platform,
        message.c_str());
    scheduleOnce([=](float time) { Toast::ShowToast(message); }, 0.1, "share");
}
1
2
3
4
5
6
7
8
9
10

# TapTap

请参考GHOME SDK 开发手册 for Android | GHOME SDK 文档 - 支付中心 (opens new window)

  • 接口 static bool isTapTapChannel(); 是否是 TapTap 渠道
bool isTap = GHOME::GHomeBridge::isTapTapChannel();
if (isTap) {
    Toast::ShowToast("TapTapChannel");
} else {
    Toast::ShowToast("Not TapTapChannel");
}
1
2
3
4
5
6
  • 接口 static void tapTapUpdateGame(const GHomeCallback &callback); 通过 TapTap 更新游戏
GHOME::GHomeBridge::tapTapUpdateGame([](int code, std::string message,std::unique_ptr<std::unordered_map<std::string, std::string>> params) {
        CCLOG("scan callback, code: %d, message: %s", code, message.c_str());
});
1
2
3
Last Updated: 2024/11/28 07:09:48