-
Notifications
You must be signed in to change notification settings - Fork 0
Home
原则上本文中所有未折叠的接口都需要接入。
-
与我方申请获取域名
host
、RSA加密公钥rsaPublicKey
和公钥IDrsaPublicKeyId
; -
在项目代码中添加初始化代码:
function init(host: string, rsaPublicKey: string, rsaPublicKeyId: string, gameVersion: string): void;
确保
matrix.init
在其它方法前被调用。
-
数据类型定义:
用户:
type USER_DATA_TYPE = { id: number, nickname: string, avatar: string, gender: null, // “男” , “女” 或 null 表示未知, country: string, province: string, city: string, language: string, register_time: number, phone: string, // 未知时为null email: string, // 未知时为null birthday: number, // unix时间戳表示生日 未知时为null }
跳转单元:
type NAVIGATE_BOX_ITEM_TYPE = { id: string; pic: string; icon: string; name: string; appId: string; query: string; path: string; extraData: any; envVersion: string; };
用户ip相关数据:(基于ip的定位信息)
type USER_IP_INFO_TYPE = { ip: string; country: string; province: string; city: string; county: string; isp: string; zone_code: number; longitude: number; latitude: number; };
用户分享数据:
type USER_GAME_DATA_SHARE_TYPE = { time_count: number, // 成功分享次数(在微信封分享之后,该项已无意义) time_count_today: number, // 今日成功分享次数(在微信封分享之后,该项已无意义) invite_count: number, // 已邀请好友数 invite_count_today: number, // 今日已邀请好友数 }
用户排行榜数据:
type USER_GAME_DATA_RANK_TYPE = { week_ranking: string, // "1(该项为字符串,可能存在非数字字符)" week_score: string, // 本周最高分 ranking: string, // 总排名 (如:"未上榜") max_score: string, // 历史最高分 week_friends_ranking: string, // 本周好友榜排名,若游戏未开启好友榜功能则为null friends_ranking: string, // 好友榜总排名,若游戏未开启好友榜功能则为null }
用户游戏数据:
type USER_GAME_DATA_TYPE<T> = { id: string, // 与user_data中的id相同 share: USER_GAME_DATA_SHARE_TYPE, rank: USER_GAME_DATA_RANK_TYPE, extra: T, }
其中
extra
为开发者自定义的游戏数据,用来存储开发者定义的用户在游戏中的数据,相当于存档功能,该存档只有用户自己可见。 -
用户登录 matrix.login(需要在代码可以运行后立即调用,以保证对于用户流失点统计的准确性。本SDK大部分接口也是必须在login完成后才能使用):
function login<T, G>(): Promise<{ server_time: number; sid: string; user_data: USER_DATA_TYPE; user_game_data: USER_GAME_DATA_TYPE<T>; game_config: G; navigate: NAVIGATE_BOX_ITEM_TYPE; navigate_list: Array<NAVIGATE_BOX_ITEM_TYPE>; box_layout: { highlight: Array<NAVIGATE_BOX_ITEM_TYPE>; category: Array<{ "name": string; "icon": string; "list": Array<NAVIGATE_BOX_ITEM_TYPE>; }>; }; platform_data: WMP_PLATFORM_DATA; ip_info: USER_IP_INFO_TYPE; }>
-
用户授权 matrix.onAuth:
(返回值格式与matrix.login相同)
function onAuth<T, G>(info: WMP_INFO): Promise<{ server_time: number; sid: string; user_data: USER_DATA_TYPE; user_game_data: USER_GAME_DATA_TYPE<T>; game_config: G; navigate: NAVIGATE_BOX_ITEM_TYPE; navigate_list: Array<NAVIGATE_BOX_ITEM_TYPE>; box_layout: { highlight: Array<NAVIGATE_BOX_ITEM_TYPE>; category: Array<{ "name": string; "icon": string; "list": Array<NAVIGATE_BOX_ITEM_TYPE>; }>; }; platform_data: WMP_PLATFORM_DATA; ip_info: USER_IP_INFO_TYPE; }>;
-
获取UserInfo matrix.getUserInfo:
function getUserInfo<T, G>(): Promise<{ server_time: number; sid: string; user_data: USER_DATA_TYPE; user_game_data: USER_GAME_DATA_TYPE<T>; game_config: G; platform_data: WMP_PLATFORM_DATA; }>;
-
获取用户数据 matrix.getUserData:
function getUserData<T>(): Promise<{ user_data: USER_DATA_TYPE; user_game_data: USER_GAME_DATA_TYPE<T>; }>;
-
获取游戏配置 matrix.getGameConfig (可区分游戏版本配置不同的值,需要事先与后台约定。该方法虽然未登录的情况下也可以调用,但未登录时获取的值可能与登录之后存在区别):
function getGameConfig<G>(): Promise<{ game_config: G; navigate: NAVIGATE_BOX_ITEM_TYPE; navigate_list: Array<NAVIGATE_BOX_ITEM_TYPE>; box_layout: { highlight: Array<NAVIGATE_BOX_ITEM_TYPE>; category:Array<{ "name": string; "icon": string; "list": Array<NAVIGATE_BOX_ITEM_TYPE>; }>; }; ip_info: USER_IP_INFO_TYPE; }>;
提交分数 extra.submitScore(用来维护排行榜功能):
function submitScore<T>(score: number): Promise<{ user_game_data: USER_GAME_DATA_TYPE<T>; new_record: boolean; new_weekly_record: boolean; }>;
提交extra extra.submitExtra(提交存档与分数):
extra
操作方式的具体文档:传送门function submitExtra<T>(extra: T, returnUserGameData: number, score?: number | null): Promise<{ user_game_data: USER_GAME_DATA_TYPE<T>; new_record: boolean; new_weekly_record: boolean; }>;
获取世界排行周榜 matrix.getWoldWeekRank:
function getWoldWeekRank(): Promise<{ my_ranking: string; my_score: string; list: Array<{ id: number; name: string; score: string; avatar: string; }>; }>;
获取世界排行总榜 matrix.getWoldAllRank:
function getWoldAllRank(): Promise<{ my_ranking: string; my_score: string; list: Array<{ id: number; name: string; score: string; avatar: string; }>; }>;
获取所有邀请的用户 matrix.getAllShareUsers:
每个邀请用户的
config
项,相当于一个只有当前用户可见的,绑定在被邀请用户对象上的存档,可以用来维护类似于“每个邀请用户可以领xx钻石类似的功能”function getAllShareUsers<T>(): Promise<{ invite_count: number; invite_count_today: number; users: Array<{ id: number; avatar: string; config: T; }>; today_login: null; }>;
获取某个邀请用户的信息 matrix.getShareUserInfo:
function getShareUserInfo<T>(userId: number): Promise<{ id: number; avatar: string; config: T; }>;
更新某个邀请用户的config matrix.updateShareUserInfo:
function updateShareUserInfo<T>(userId: number, config: T): Promise<{ config: T; }>;
-
获取指定键名对应的文案 matrix.getShareDoc:
shareQuery
字段返回值类型修改字符串,字符串格式为key1=value1&key2=value2
,可以直接作为小游戏转发APIwx.shareAppMessage()
的query
参数。
需要注意的是,由于接管微信右上角分享那里不能通过这种方式获取文案。 所以,getShareDoc提供一个参数isPrepare
,默认值是false
,当传入true的时候依然能够获取分享文案,但这个分享的请求就不作为统计项了。这个可以用来在游戏启动时初始化获取文案,为用户的右上角分享做准备。除了右上角分享之外,都是需要在拉起分享的前一刻通过SDK获取文案与图片function getShareDoc(docKey: string, isPrepare: boolean = false): Promise<{ button_name: string; id: string | null; title: string; image: string; shareQuery: string; }>;
-
游戏启动 matrix.BuriedPoint.onGameStart:
onGameStart(): Promise<{ 'page_stay_object_legal': boolean; 'ad.banner_object_legal': boolean; 'ad.video_array_legal': boolean; 'event_array_legal': boolean; }>
-
游戏被唤醒 matrix.BuriedPoint.onGameAwake:
onGameAwaka(): Promise<{ 'page_stay_object_legal': boolean; 'ad.banner_object_legal': boolean; 'ad.video_array_legal': boolean; 'event_array_legal': boolean; }>
-
游戏进入后台 matrix.BuriedPoint.onGameSleep:
onGameSleep(): Promise<{ 'page_stay_object_legal': boolean; 'ad.banner_object_legal': boolean; 'ad.video_array_legal': boolean; 'event_array_legal': boolean; }>
-
进入某个场景 matrix.BuriedPoint.onEnterScene(
sceneName
需要与后台实现商定,若某场景前端没有事先定义,则传'DEFAULT'
):onEnterScene(sceneName: string): void;
-
离开某个场景 matrix.BuriedPoint.onLeaveScene(
sceneName
需要与后台实现商定):onLeaveScene(sceneName: string): void;
-
Banner 广告请求 matrix.BuriedPoint.onAdBannerRequest
onAdBannerRequest(sceneName: string, result: boolean)
-
Banner 广告展示 matrix.BuriedPoint.onAdBannerShow
onAdBannerShow(sceneName: string): void
-
视频广告请求 matrix.BuriedPoint.onAdVideoRequest
onAdVideoRequest(sceneName: string, result: boolean): void
-
视频广告被关闭 matrix.BuriedPoint.onAdVideoClose:
onAdVideoClose(scene: string, isEnd: boolean): void;
-
插屏广告请求 matrix.BuriedPoint.onAdInterstitialRequest
onAdInterstitialRequest(sceneName: string, result: boolean)
-
插屏广告展示 matrix.BuriedPoint.onAdInterstitialShow
onAdInterstitialShow(sceneName: string): void
-
某个自定义的事件触发 matrix.BuriedPoint.onEventTrigger(
evnetName
事件名、par1
事件参数1、par2
事件参数2,……):onEventTrigger(evnetName: string, par1?: string, par2?: string, par3?: string, par4?: string, par5?: string, extra?: any): void;
-
游戏盒子某个游戏被点击 matrix.BuriedPoint.onNavigateBoxItemClick(使用SDK获取的游戏抽屉中的项被点击时上报):
onNavigateBoxItemClick(id: string): Promise<NetworkResponse>;
-
游戏盒子确认跳转某个消息 matrix.BuriedPoint.onNavigateBoxItemConfirm(使用SDK获取的游戏抽屉中的项被确认跳转时上报):
onNavigateBoxItemConfirm(id: string): Promise<NetworkResponse>;
matrix.login().then(() => {
matrix.BuriedPoint.onGameStart();
});
matrix.BuriedPoint.onEnterScene("loading");
// 加载完成进入主页就:
matrix.BuriedPoint.onLeaveScene("loading");
matrix.BuriedPoint.onEnterScene("main");