61 lines
1.6 KiB
TypeScript
61 lines
1.6 KiB
TypeScript
import {genSaltSync, hashSync, setRandomFallback} from 'bcryptjs';
|
|
|
|
export enum TrackingType {
|
|
/** 进入游戏 */
|
|
Open = 'open',
|
|
/** 提示 */
|
|
Tip = 'tip',
|
|
/** 重玩 */
|
|
Replay = 'replay',
|
|
/** 重试 */
|
|
Retry = 'retry',
|
|
}
|
|
|
|
const KEY = `sssssssssk`;
|
|
|
|
try {
|
|
genSaltSync(10);
|
|
} catch (e) {
|
|
setRandomFallback(function (bytes) {
|
|
const randomBytes = new Array(bytes);
|
|
for (var i = 0; i < bytes; i++) {
|
|
randomBytes[i] = Math.floor(Math.random() * 256);
|
|
}
|
|
return randomBytes;
|
|
});
|
|
}
|
|
|
|
export class TrackingManager {
|
|
public static send(type: TrackingType) {
|
|
const salt = genSaltSync(10);
|
|
const hash = hashSync(KEY, salt);
|
|
|
|
var xhr = new XMLHttpRequest();
|
|
xhr.open("POST", 'https://api.ad.game.06zk.com/app/anchor');
|
|
|
|
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
|
|
xhr.setRequestHeader("Key", hash);
|
|
xhr.setRequestHeader("Href", location.href);
|
|
|
|
const formData = `listener=${type}`;
|
|
|
|
xhr.onreadystatechange = function () {
|
|
if (xhr.readyState === 4 && xhr.status === 200) {
|
|
console.log(xhr.responseText);
|
|
const data = JSON.parse(xhr.responseText);
|
|
if (data.code === 200) {
|
|
console.log(`上报${type}成功`);
|
|
} else {
|
|
console.log(`上报${type}失败`);
|
|
}
|
|
}
|
|
};
|
|
|
|
xhr.send(formData);
|
|
}
|
|
}
|
|
|
|
if (!CC_EDITOR) {
|
|
TrackingManager.send(TrackingType.Open);
|
|
}
|