# GHome Sdk 开发手册 for Cocos c++
_______ __ __ ______ .___ ___. _______
/ _____|| | | | / __ \ | \/ | | ____|
| | __ | |__| | | | | | | \ / | | |__
| | |_ | | __ | | | | | | |\/| | | __|
| |__| | | | | | | `--' | | | | | | |____
\______| |__| |__| \______/ |__| |__| |_______|
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)
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("玩家不同意隐私政策");
}
});
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);
}
}
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);
# 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("初始化失败");
}
}
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();
# 客户端登录接口
游戏客户端可以调用登录接口为玩家提供登录功能。若用户第一次登录,将显示登录和注册的界面。若用户上次使用账号成功登录过,则会用该账号自动登录。 (重要:如果游戏使用自己的隐私政策弹框功能, 则需要在调用 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);
}
}
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("登出失败");
}
});
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("切换账号失败");
}
});
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);
}
});
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 回调对象,用来回调执行结果,详情请参考代码事例。 入参必要性说明
- 支付接口入参信息流转(例如 groupId、areaId 等):游戏 APP 客户端 -> Ghome SDK -> 支付服务端 -> 游戏服务端 -> 玩家信息数据库
- 入参是否必须,入参数据是否有特别要求,主要有 【支付服务端 -> 游戏服务端】决定
- 不同游戏可能存在不同的数据要求,因此游戏客户端研发对这些入参的 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");
}
}
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("获取区服失败,请稍后再试");
}
}
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("获取区服失败,请稍后再试");
}
}
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);
}
});
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;
}
}
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);
# 客户端显示/隐藏悬浮窗接口
接口:
static void ShowFloatIcon(bool show, int position);
参数说明
参数名 说明 show true 显示悬浮窗、false 隐藏悬浮窗。 position 悬浮窗显示位置(部分渠道不支持悬浮窗位置设置,指定该参数可能没有效果)。
GHOME::GHomeBridge::ShowFloatIcon(false, GHOME::FloatPosition::LeftTop);
# 第三方渠道 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)自己弹退出框");
}
});
2
3
4
5
6
7
8
9
10
11
# 获取一级渠道号
- 接口:
static std::string GetApplicationSuperChannel();
- 注意事项 在初始化完成前或完成后调用都可以。
std::string superChannelCode = GHOME::GHomeBridge::GetApplicationSuperChannel();
# 获取二级渠道号
- 接口:
static std::string GetCPSChannelCode();
std::string channelCode = GHOME::GHomeBridge::GetCPSChannelCode();
Toast::ShowToast(channelCode);
2
# 获取 G 家设备 id
- 接口:
static std::string GetGHomeDeviceId();
std::string gDeviceId = GHOME::GHomeBridge::GetGHomeDeviceId();
Toast::ShowToast("G家设备ID: " + gDeviceId);
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;
}
}
});
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("关联失败");
}
});
2
3
4
5
6
7
8
9
10
# 敏感词过滤接口(非必接,请看注意事项)
接口:
static void FilterSensitiveWord(std::string inputWord, const GHomeCallback &callback);
参数说明
参数名 说明 inputWord 用户输入的文本信息。 filterCallback 回调对象,用来回调执行结果,详情请参考代码事例。 注意事项
- 该接口仅仅是一个 interface 空接口,如果游戏需要在某些渠道使用渠道的敏感词接口(例如 wegame),则需要调用这个接口。
- 在 ghome sdk 或其他渠道,不会有任何作用,“原文入参,原文出参”。游戏在这些场景需要自行实现所有敏感词过滤功能(或者使用其他第三方 sdk)
- 一般建议使用该接口的游戏,可以单独实现母包(和官方登录或者其他渠道分开),以便在聊天、昵称设定(等所有用户可输入信息地方)实现渠道使用的敏感词过滤(目前仅仅 wegame 渠道支持)。
- 基于第三点仅仅是一种游戏的实现方案建议,如果游戏有其他方便实现的方案,也可以操作。但原则上是需要完成敏感词过滤,并了解 ghome sdk 仅仅是一个空接口(功能代理)。
- 另外,如果游戏在 wegame 渠道的母包中实现了一次自己的敏感词,则 wegame 渠道包则会:用户输入->游戏母包的敏感词过滤->ghome sdk 接口代理->wegame 敏感词->返回结果。
- 该接口我们不会记录任何调用信息,不会有任何日志,因为属于用户隐私的敏感信息。所以请上线前使用该接口的游戏都需要经过测试(所有场景,例如聊天、昵称设置、等等),线上是不会对用户记录任何有关的行为数据。
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);
}
}
});
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");
}
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");
}
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());
});
2
3