阿里云创建自定义数据分析

news/2024/7/24 5:26:38 标签: CocosCreator, 日志服务, 自定义日志, 阿里云

一、阿里云配置

首先我们要有阿里云账号,然后进入“日志服务

https://sls.console.aliyun.com/lognext/profile

 点击“创建Project”,我们现在命名为minigamelog。

然后点击进入minigamelog:

选择“日志存储”,点击“+”,创建“logstore”:

这里,我们命名为test。

之后,点击“仪表盘”,进入仪表盘界面:

点击“+”,创建“仪表盘”

创建完后的“测试”仪表盘,是这样的:

 我们需要往仪表盘中加入各种sql语句,来筛选我们需要的数据信息。比如,我现在开发的项目数据是这样:

最后,我们配置日志的字段属性:

至此,阿里云的“日志服务”的配置算是初步完成了,接下来需要编写游戏中上传到“日志服务”的代码,来保存更多的数据,从而筛选更均衡的数据。

二、代码调用

以下是日志分析的代码,文件名为“analytics_al.js”

const version = '0.0.1';
const project = 'minigamelog';
const host = 'cn-shanghai.log.aliyuncs.com';
const logstore = 'test';

class SK {
    constructor() {
        this.playerId = '';
        this.appid = '';
        this.fingerprintId = '';
        this.eventsArr;
        this.isSend;
        this.sendCount;
        this.interstitialArr;
        this.levelConfig;
        this.createdAt;
        this.loginDays;
        this.channel = '';
        this.cversion = '';
        this.platform;
        this.engine;
        this.scene = '';
        this.brandmodel = '';
        this.startTime = Date.now();
    }

    static aliAjaxGet(url) {
        var xhr = new XMLHttpRequest();
        let _this = this;

        let sendTimeout = setTimeout(function () {
            _this.sendEvent();
        }, 10000);

        xhr.open('GET', url, true);
        xhr.onreadystatechange = () => {
            if (xhr.readyState == 4) {
                if (xhr.status == 200 || xhr.status == 304) {
                    clearTimeout(sendTimeout);
                    this.eventsArr.shift();
                    this.sendEvent();
                } else {
                    if (this.sendCount < 5) {
                        this.sendCount++;
                        this.sendEvent();
                    }
                }
            }
        };
        xhr.send();
    }

    static aliAjaxGetSK(url) {
        var xhr = new XMLHttpRequest();

        xhr.open('GET', url, true);
        xhr.onreadystatechange = () => {

        };
        xhr.send();
    }

    static sendEvent() {
        if (!this.playerId) {
            setTimeout(() => {
                this.sendEvent();
            }, 1000);
            return;
        }

        if (this.eventsArr.length > 0) {
            let eventData = this.eventsArr[0];
            let sendData = typeof eventData[1] === 'object' ? JSON.stringify(eventData[1]) : eventData[1];
            //云API
            let domain = `https://${project}.${host}/logstores/${logstore}/track`;

            let url = `${domain}?APIVersion=0.6.0&appid=${this.appid}&playerId=${this.playerId}&fingerprintId=${this.fingerprintId}&event=${eventData[0]}&data=${sendData}&createdAt=${this.createdAt}&loginDays=${this.loginDays}&channel=${this.channel}&version=${version}&cversion=${this.cversion}&platform=${this.platform}&engine=${this.engine}&scene=${this.scene}&brandmodel=${this.brandmodel}`;

            this.aliAjaxGet(url);
        } else {
            this.isSend = false;
        }
    }

window.sk = SK;

最后,只需要像游戏打点一样在游戏中需要的时候调用sendEvent,即可。


http://www.niftyadmin.cn/n/1300921.html

相关文章

帧同步的一些坑

文章转载自&#xff1a;http://www.vimer.cn/2020/04/20/zheng-tong-bu-de-yi-xie-keng/ 一. 简述 我们用最精简的模型来描述一下帧同步。 客户端检测服务器的逻辑帧 -> 拿到逻辑帧 -> 进行处理 -> 处理出结果 -> 完成本次逻辑帧处理 -> 表现层将处理结果渲染…

腾讯云做远程资源管理

一、备案 做远程资源的存储&#xff0c;首先要有个服务器&#xff0c;有了服务器就需要有域名&#xff0c;所以我们先有一个域名备案&#xff0c;具体的备案过程就不说了&#xff08;我也不懂&#xff0c;反正公司直接就有了&#xff09;。 假设&#xff0c;我们的域名是&quo…

Windows下select模型

阻塞模式和非阻塞模式的优点和不足: 阻塞模式套接字执行IO操作时,如果执行操作的条件未满足,线程就会阻塞在调用的函数上。程序不得不处于等待状态,但是由于

详解JavaScript添加给定的标签选项

代码实现&#xff1a; HTML代码&#xff1a; <h3>haveTags</h3> <div id"havetags"></div> <hr /> <h3>addTags</h3> <div id"addtags"></div> <button id"btn">返回的数组</…

同步阻塞 IO、同步非阻塞 IO、多路复用IO 、 异步 IO

服务器端编程经常需要构造高性能的 IO 模型&#xff0c;常见的 IO 模型有四种&#xff1a; (1) 同步阻塞 IO&#xff08;Blocking IO&#xff09;&#xff1a;即传统的 IO 模型。 (2) 同步非阻塞 IO&#xff08;Non-blocking IO&#xff09;&#xff1a;默认创建的 socket 都是…

详解基于Vue2.0实现的移动端弹窗(Alert, Confirm, Toast)组件

wc-messagebox 基于 vue 2.0 开发的插件包含 Alert, Confirm, Toast, Prompt仿照 iOS 原生UI(样式来源: MUI) 一些想法 刚开始的时候想要用现成的弹窗组件来着, 但是查找一圈没有发现比较合适项目的, 所以才自己开发了一个, 包含 Alert, Comfirm, Toast, Prompt 四种, 并且可…

java的(PO,VO,TO,BO,DAO,POJO)解释

文章转载自&#xff1a;https://www.cnblogs.com/yxnchinahlj/archive/2012/02/24/2366110.html O/R Mapping 是 Object Relational Mapping&#xff08;对象关系映射&#xff09;的缩写。通俗点讲&#xff0c;就是将对象与关系数据库绑定&#xff0c;用对象来表示关系数据。在…

原生JavaScript实现form表单序列化的方法

当我们有form表单而且里面的表单元素较多时&#xff0c;咱们总不能一个个去获取表单元素内的值来进行拼接吧&#xff01;这样会很让人蛋疼&#xff01;为了方便与后台交互并且提高自己的开发效率&#xff0c;并且不让你蛋疼&#xff1b;我们一起用原生来写一个表单序列化方法&a…