添加广告,希望能赚点水果钱,目的演示基于本项目,快速进行二次开发
QQ群:786442484
豆豆跑得快
安卓下载 :https://fir.im/emua
备注:下载可以运行,点击钻石加号,看视频广告,获取测试钻石
runner项目(开源跑得快)
地址:https://139.199.213.123/svn/runner/
用户:runner
密码:abc123
权限:read
一、修改协调文件OneProtocol.proto
- 添加CMD
CMD_ADS_REWARD_REQ = 71;//广告奖励请求
CMD_ADS_REWARD_RESP = 72;//广告奖励响应
- 添加Message
/******************************************* 广告 *************************************************/
message AdsRewardRequest
{
}
message AdsRewardResponse
{
required int32 diamondNum = 1;
}
-
完整OneProtocol.proto,查看svn
image.png
二、生成代码
-
点击pbgen.bat,转换C#代码
image.png
image.png
-
把生成的OneProtocol.pb.cs,拷贝到服务器与客户端工作目录
服务器目录:D:\svn_projects\runner\trunk\server\runner\Protobuf\Pb
客户端目录:D:\svn_projects\runner\trunk\client\runner\Assets\Scripts\Network\Pb -
提交svn
image.png
三、修改服务器代码
- 修改服务器代码文件PurchaseHandler.cs,添加广告协议监听处理
#region 广告
[method: RunnerHandler(Cmd.CMD_ADS_REWARD_REQ, "广告奖励")]
void OnAdsRewardReq(GameSession session, OneMessage message)
{
if (session.PlayerId > 0)
{
PlayerBase player = PlayerManager.Instance.GetPlayer(session.PlayerId, true);
if (null != player)
{
player.UpdateDiamond(1, ItemChangeSource.Normal);
AdsRewardRequest req = PbHelper.Parse<AdsRewardRequest>(message.data, 0, message.data.Length);
EchoAdsRewardToClient(session);
}
}
}
void EchoAdsRewardToClient(GameSession session)
{
AdsRewardResponse resp = new AdsRewardResponse();
resp.diamondNum = 1;
OneMessage message = new OneMessage();
message.cmd = Cmd.CMD_ADS_REWARD_RESP;
message.result = Result.RESULT_OK;
message.data = PbHelper.Pack(resp);
message.seq = session.Seq;
session.SendMessage(message);
Logger.Debug("EchoAdsRewardToClient diamondNum :" + resp.diamondNum);
}
#endregion
四、修改客户端代码
- 修改客户端代码文件SocketServiceExActivity.cs,广告奖励协议
public static void ReqAdsReward(this SocketService net)
{
OneMessage msg = new OneMessage();
msg.cmd = Cmd.CMD_ADS_REWARD_REQ;
msg.result = Result.RESULT_OK;
AdsRewardRequest adsRewardRequest = new AdsRewardRequest();
net.SendMessage(msg, adsRewardRequest);
}
- 修改客户端代码HomeUI.cs,在广告播放成功后,发送广告奖励协议
void HandleShowResult(ShowResult result)
{
if (result == ShowResult.Finished)
{
// Reward the player
Debug.Log("Reward the player");
ActivityManager.Instance.SendAdsReward();
}
else if (result == ShowResult.Skipped)
{
Debug.LogWarning("The player skipped the video - DO NOT REWARD!");
}
else if (result == ShowResult.Failed)
{
Debug.LogError("Video failed to show");
}
}
void OnAdsReward(int diamondNum)
{
UIController.Instance.Alert("恭喜获得钻石" + diamondNum + "个");
}
五、提交svn
![](https://img.haomeiwen.com/i67759/8965b6c2ad58555a.png)
网友评论