Unity接入腾讯云
目录
一、对象存储(COS)
1.创建存储桶
2.下载并使用SDK
(1)异步上传(视频)
(2)同步上传(图片)
二、日志上报(CLS)
1.创建日志主题
2.使用第三方工具上传日志
(1)使用 Winlogbeat 采集 Windows 事件日志上传 CLS
(2)使用 Filebeat 采集 Windows 文件日志
一、对象存储(COS)
1.创建存储桶
首先需要在存储桶列表页面创建存储桶,需要注意的是所属地域(我选的北京)及访问权限的设置(该项之后可更改),比如我用对象存储是为了保存图片和视频,那么我需要通过图片或视频上传腾讯云后的路径直接来预览或者下载文件,那么此时“私有读写”就满足不了该需求。
(创建存储桶的操作也可通过代码实现)
创建完的存储桶列表:
2.下载并使用SDK
在https://console.cloud.tencent.com/cos/sdk页面下载所需要的sdk(我用的Unity,所以使用的是.NET SDK)。
将COSXMLDemo及QCloudCSharpSDK文件夹导入到Unity中(有报错的话删除COSXMLTests文件夹),COSXMLDemo/Program.cs功能很全面,考虑到上传视频可能会耗时,我使用的是异步的PutObject方法。
(1)异步上传(视频)
secretId及secretKey获取地址:访问密钥 - 控制台 (tencent.com)
region根据自己所属地域设置。
public void UploadVideoAsync(){PutObject();}internal static async Task<String> PutObject(){string _bucket = "******";//修改项,存储桶名称string appid = "******";//修改项,设置腾讯云账户的账户标识 APPID,头像-账号信息中查看string key = "videos/test2.mp4";//修改项,对象在存储桶中的位置,即称对象键(个人理解为文件名称,要带后缀)string secretId = "******"; //修改项,云 API 密钥 SecretIdstring secretKey = "******"; //修改项,云 API 密钥 SecretKeystring region = "ap-beijing";//修改项CosXmlConfig config = new CosXmlConfig.Builder().SetConnectionTimeoutMs(60000) //设置连接超时时间,单位毫秒,默认45000ms.SetReadWriteTimeoutMs(40000) //设置读写超时时间,单位毫秒,默认45000ms.IsHttps(true) //设置默认 HTTPS 请求.SetAppid(appid).SetRegion(region).Build();long durationSecond = 600; //每次请求签名有效时长,单位为秒QCloudCredentialProvider qCloudCredentialProvider = new DefaultQCloudCredentialProvider(secretId,secretKey, durationSecond);CosXml cosXml = new CosXmlServer(config, qCloudCredentialProvider);//.cssg-snippet-body-start:[transfer-upload-file]// 初始化 TransferConfigTransferConfig transferConfig = new TransferConfig();// 初始化 TransferManagerTransferManager transferManager = new TransferManager(cosXml, transferConfig);//对象在存储桶中的位置标识符,即称对象键String cosPath = key;//本地文件绝对路径String srcPath = @"D:\TALgit\UnityProgram\TengxunyunTest\Captures\videos.mp4";//本地文件绝对路径// 上传对象COSXMLUploadTask uploadTask = new COSXMLUploadTask(_bucket, cosPath);uploadTask.SetSrcPath(srcPath);uploadTask.progressCallback = delegate (long completed, long total){Debug.Log(String.Format("progress = {0:##.##}%", completed * 100.0 / total));};try{COSXML.Transfer.COSXMLUploadTask.UploadTaskResult result = awaittransferManager.UploadAsync(uploadTask);Debug.Log(result.GetResultInfo());string eTag = result.eTag;}catch (Exception e){Debug.Log("CosException: " + e);}return key;}
(2)同步上传(图片)
public string appid = "";//设置腾讯云账户的账户标识 APPIDpublic string bucket = "";//存储桶,格式:BucketName-APPIDpublic string key = "";//对象在存储桶中的位置,即称对象键(文件名称,要带后缀)public string secretId = ""; //云 API 密钥 SecretIdpublic string secretKey = ""; //云 API 密钥 SecretKeypublic string region = "";public void UploadObject(){CosXmlConfig config = new CosXmlConfig.Builder().SetConnectionTimeoutMs(60000) //设置连接超时时间,单位毫秒,默认45000ms.SetReadWriteTimeoutMs(40000) //设置读写超时时间,单位毫秒,默认45000ms.IsHttps(true) //设置默认 HTTPS 请求.SetAppid(appid).SetRegion(region).Build();long durationSecond = 600; //每次请求签名有效时长,单位为秒QCloudCredentialProvider qCloudCredentialProvider = new DefaultQCloudCredentialProvider(secretId,secretKey, durationSecond);CosXml cosXml = new CosXmlServer(config, qCloudCredentialProvider);try{string srcPath = @"C:\Users\meinv\Desktop\testPanda.png";//本地文件绝对路径if (!File.Exists(srcPath)){// 如果不存在目标文件,创建一个临时的测试文件//File.WriteAllBytes(srcPath, new byte[1024]);Debug.Log("文件不存在");return;}PutObjectRequest request = new PutObjectRequest(bucket, key, srcPath);//设置签名有效时长request.SetSign(TimeUtils.GetCurrentTime(TimeUnit.Seconds), 600);//设置进度回调request.SetCosProgressCallback(delegate (long completed, long total){Debug.Log(String.Format("progress = {0:##.##}%", completed * 100.0 / total));});//执行请求PutObjectResult result = cosXml.PutObject(request);//对象的 eTagstring eTag = result.eTag;Debug.Log(result.GetResultInfo() + "," + result.crc64ecma);//url地址Debug.Log("https://" + bucket + ".cos." + region + ".myqcloud.com/" + key);}catch (COSXML.CosException.CosClientException clientEx){//请求失败Debug.Log("CosClientException: " + clientEx);}catch (COSXML.CosException.CosServerException serverEx){//请求失败Debug.Log("CosServerException: " + serverEx.GetInfo());}}
(3)获取文件在腾讯云的url
"https://" + bucket + ".cos." + region + ".myqcloud.com/" + key
二、日志上报(CLS)
日志上报没有.Net的SDK,可通过API和第三方工具两种接入方式。本人尝试通过API接入鉴权一直不过,咨询官方人员,建议使用第三方工具。
我先把API接入需要的文档列出来(可自行尝试):
- 获取签名:日志服务 公共参数-调用方式-API 中心-腾讯云 (tencent.com)
- 参数设置:日志服务 上传日志-日志相关接口-API 中心-腾讯云 (tencent.com)
1.创建日志主题
在日志主题 - 日志服务 - 控制台 (tencent.com)页面创建,没什么注意的。此时我们获得了日志主题ID和日志集ID。
2.使用第三方工具上传日志
官方文档在这里。
(1)使用 Winlogbeat 采集 Windows 事件日志上传 CLS
先说结论:初步尝试后不提倡运用Winlogbeat,因为它基于事件日志上传,很多我不需要的数据也给我传了上去。
首先我跟着官方文档安装了Winlogbeat,并且修改了winlogbeat.yml,但是我如何上传我需要的数据呢?这就需要使用 Kafka 协议上传日志,文档在这里.代码我也列一下,主要修改了数据上传测试那一部分。
需要用到kafka插件:KafKaForUnity.unitypackage-其它文档类资源-CSDN文库
void kafkaTest(){var config = new ProducerConfig{BootstrapServers = "bj-producer.cls.tencentcs.com:9096",//域名参考 https://cloud.tencent.com/document/product/614/18940#Kafka 填写,注意内网端口9095,公网端口9096SaslMechanism = SaslMechanism.Plain,SaslUsername = "***", // todo topic所属日志集IDSaslPassword = "***#***", // todo topic所属uin的密钥SecurityProtocol = SecurityProtocol.SaslPlaintext,Acks = Acks.None, // todo 根据实际使用场景赋值。可取值: Acks.None、Acks.Leader、Acks.AllMessageMaxBytes = 5242880 // todo 请求消息的最大大小,最大不能超过5M};// deliveryHandlerAction<DeliveryReport<string, string>> handler =r => Debug.Log(!r.Error.IsError ? $"Delivered message to {r.TopicPartitionOffset}" : $"Delivery Error: {r.Error.Reason}");using (var produce = new ProducerBuilder<string, string>(config).Build()){try{// todo 测试验证代码for (var i = 0; i < 3; i++){// todo 替换日志主题IDproduce.Produce("***", new Message<string, string> { Key = "test", Value = "C# demo value" }, handler);}produce.Flush(TimeSpan.FromSeconds(10));}catch (ProduceException<string, string> pe){Debug.Log($"send message receiver error : {pe.Error.Reason}");}}}
but!传到腾讯云的结果没有key,只有value,而且我要上传的数据不止这一个,我希望以json的形式上传到腾讯云,但是尝试了一下并不行(也可能是我不行?但我不想承认)。
(2)使用 Filebeat 采集 Windows 文件日志
同志们!这个就yyds了!先上结果,红框中的就是我传的数据。
具体操作还是跟着官方文档,下载好filebeat并安装,修改filebeat.yml,因为我是采集文件中的数据,所以我的filebeat.yml是这样写的(可根据自己的需求,参照filebeat.reference.yml文档实现):
# ============================== Filebeat inputs ===============================
filebeat.inputs:
- type: logenabled: truepaths:#- /var/log/*.log- C:/Users/fengchujun/Desktop/filebeatlog.log #TODO 日志文件路径encoding: utf-8json.keys_under_root: true # ================================== Outputs ===================================
output.kafka:enabled: truehosts: ["bj-producer.cls.tencentcs.com:9096"] # TODO 服务地址;外网端口9096,内网端口9095topic: "***" # TODO topicIDversion: "0.11.0.2"compression: "lz4" # 配置压缩方式,支持gzip,snappy,lz4;例如"lz4"username: "***"password: "***#***"# ================================= Processors =================================
processors:- decode_json_fields:fields: ["message"]process_array: falsemax_depth: 1target: "json"overwrite_keys: true
注意:
1.json.keys_under_root设置为true后,上传到腾讯云后才能让字段位于根节点。
2.filebeat.yml编写或者修改时,注意字段是有父子层级的,所以有的字段前面要有空格。
3.filebeatlog.log文件日志,以json形式上传时,每一个json字符串为一行之后要换行。
unity往日志文件写json就好弄了:
public class JsonObj {public string actionName;public string guid;public float score;public string version;}/// <summary>/// 上传腾讯云的日志/// </summary>/// <param name="message"></param>public static void WriteIntoQCloudlog(string actionName, string guid, float score){JsonObj jsonObj = new JsonObj();jsonObj.actionName = actionName;jsonObj.guid = guid;jsonObj.score = score;jsonObj.version = version;string message = JsonUtility.ToJson(jsonObj);StreamWriter writer;FileInfo file = new FileInfo(Application.dataPath + "/filebeatlog.log");if (!file.Exists){writer = file.CreateText();}else{writer = file.AppendText();}writer.WriteLine(message);writer.Flush();writer.Dispose();writer.Close();}
最后再说一个不明觉厉的点:安装好filebeat后,开机会自启动,自动上传日志,所以不用我们每次都手动在windowspowershell中启动服务了~
Unity接入腾讯云相关推荐
- 微信公众号HTML5接入腾讯云人脸核身
微信公众号HTML5接入腾讯云人脸核身 概述 接入流程 原生H5对行业的要求 概述 针对微信公众号接入腾讯云,腾讯云提供了两种方案,一种是通用H5接入,另外一种是通过微信的原生H5来接入,但是一般都是 ...
- 骐俊CAT1模组 - MQTT接入腾讯云平台篇
本次实验使用骐俊ML110S系列模组及开发底板,通过MQTT协议采用密钥的方式接入腾讯云平台,实现消息的发布及订阅,可分为接入注册及动态注册两种方式. 设备注册(接入注册) A.进入腾讯云平台注册 ...
- Unity C# 腾讯云【短信服务】验证码功能
Unity C# 腾讯云[短信服务] 一.首先注册登录腾讯云,根据操作进行企业认证或者个人认证,有一些就会要求个人认证的APp要上线才可以调用短信,所以大家要看清楚要求: 二.在首页中找到[短信SMS ...
- LR1110接入腾讯云
LR1110接入腾讯云 前言 第一章 网关介绍 第二章 定位原理 第三章 平台搭建 固件烧录 腾讯云平台搭建 创建LoRa网关 LR1110设备创建 位置服务 前言 随着物联网的进步,位置信息作为一个 ...
- Unity接入腾讯广告/腾讯联盟/优量汇SDK操作步骤——源码+图文效果详情
Unity接入腾讯广告/腾讯联盟/优量汇SDK操作步骤--源码+图文效果详情 前言 一.下载SDK 二.官网注册相关项目信息 1.新建媒体 2.新建广告位 三.更改代码 1.更改初始化SDK的代码 2 ...
- ESP32接入腾讯云物联网开发平台
文章目录 前言 1 资料参考 2 对接总体思路 3 代码移植 3.1 component qcloud_iot 3.2 项目顶层处理 3.3 component main 4 移植问题备忘 CMake ...
- Android 快速接入腾讯云人脸核身(识别)
Android 通过 SDK 快速接入腾讯云人脸核身 我的接入代码:https://blog.csdn.net/qq_39836064/article/details/108702725,很久之前写的 ...
- RAK7258 LoRaWAN 网关接入腾讯云物联网开发平台
文章目录 前言 1 控制台操作 LoRa 网关 2 RAK 7258 LoRa网关实物操作 连接配置 网络配置 LoRa参数配置 网关上线确认 END 前言 这篇笔记记录采用 RAK7258 LoRa ...
- 接入腾讯云短信(免费+个人开发者)
接入腾讯云短信 前言 以下全是自己个人自己实验 肯定一点肯定免费试用100条短信 肯定两点不需要什么营业执照啥的,只需要自己免费申请公众号即可 1.注册微信公众号 https://mp.weixin. ...
- Esp32快速接入腾讯云之智能冷空调扇实例
目录 1. 前言 2. 硬件准备及改装 2.1 硬件准备 2.2 硬件改装 2.3 外挂电源 3. 在腾讯云平台上创建产品 3.1 登录腾讯云 3.2 新建项目 3.3 新建产品 3.4 新建设备 ...
最新文章
- WebClient UI和Tomcat的启动器
- 开启apache的server-status辅助分析工具
- Java面试题谷歌插件
- JavaWeb学习笔记(九)--HttpServletResponse
- 某页纸api接口网站源码 高速php源码
- RealFlow翻译教程——海洋波浪
- 【回顾】推荐系统工程师技能树
- linux 远程管理
- 常用模块以及常用方法
- 仿原生app,native特效
- DbgView 显示OutputDebugString 输出内容 不能显示问题总结
- 巨头垂涎却不能染指,loT数据库风口已至
- 微信小程序上传图片(限制图片大小、张数)
- 74HC595在【8x8LED点阵】中的运用
- #Unity _ 简体转繁体
- 放款2500亿仅占1%,度小满要做消费金融拉动内需的新动力?
- 软件开发随笔系列一——分布式架构实现
- RTC实时时钟实验学习笔记一
- 手机app开发用的是什么语言?甲由科技细数其优势
- SharePoint 2019 new Update
热门文章
- 台式计算机的无线上网卡多少线,台式电脑可以用无线上网卡上网吗
- 回溯算法符号三角形java_算法设计与分析——符号三角形问题(回溯法)
- C#中Panel控件和GroupBox控件(未完成)
- struts2拦截器原理
- vue获取麦克风_HTML5操作麦克风获取音频数据(WAV)的一些基础技能
- Window10屏幕亮度无法调节尝试解决方法
- 文章目录---收藏不迷路
- Linux Deploy 2.0 中文,Linux Deploy:在Android上部署Linux
- 金蝶软件常见问题及解决方案
- 设置一个励志锁屏短语吧!苹果电脑锁屏短语在哪设置?