# 快速上手
# TmsCore
小程序日常使用的工具函数
# 安装
npm install @tmsfe/tms-core
# 初始化
import core from '@tmsfe/tms-core';
// 初始化core // 初始化操作会在小程序app.js进行,如果只开发”小程序模块无需再次进行初始化“
core.init({
appVersion: '2022.35.1', // 小程序本次发版的版本号
wxAppId: 'xxx', // appId
client: 'sinan', // 小程序名
appEnv: 'production', //环境名称 production、development、test、predist
appPagePaths: [], // 小程序包含的所有页面路径
homePage: { path: "/page/**", isTab: false }, // 首页的相关配置
cloudEnvId: "xxx", // 云函数的环境id
defaultHost: "tim.map.qq.com", // 小程序请求调用接口的域名,所有请求都会走腾讯出行网关服务,腾讯出行网关在转发到相关服务
});
app.tms = core // core的所有方法已经在”app.js“挂在到了app上,开发”小程序模块时,只需从app获取即可,无需再次引入“
# 发起请求示例
const { tms } = getApp({ allowDefault: true }); // 从app上获取tmscore
const request = tms.createRequest({ withAuth: true });
request.get('/api/list', {carId: '112222'}).then(res => res); // 接口请求在初始化时已经传入腾讯出行网关域名,接口请求无需再次添加域名
# 埋点示例
const { tms } = getApp({ allowDefault: true });
const reporter = tms.getReporter();
reporter.report2('user_security_level', {}, {}); // 参数1:埋点唯一标志; 参数2:埋点属性(会埋在埋点31个字段) 参数3: 埋点属性(会埋在埋点32个字段) 依次类推
reporter.fastReport2('user_security_level', {}, {}); // 参数见上,埋点需要立即上报(fastReport2()上报时携带的"省"、"市"等需要异步请求的基础字段会从缓存中读取,如果无缓存则为空,report2()则一定会携带这些字段)
# 打印日志示例
const { tms } = getApp({ allowDefault: true });
const logger = tms.getRealtimeLogManager(); // 实时日志管理器实例,该对象提供的方法同wx.getRealtimeLogManager()提供的方法
// 不需要用户主动反馈只要记录了在mp后台即可查看
logger.info(1, 'str', { a: 1 }, ...);
logger.warn(1, 'str', { a: 1 }, ...);
logger.error(1, 'str', { a: 1 }, ...);
const logger =tms.getLogManager(); // 获取日志管理器对象,该对象提供的方法同wx.getLogManager()提供的方法,用户主动反馈后在mp后台方可下载
logger.log(1, 'str', { a: 1 }, ...);
logger.info(1, 'str', { a: 1 }, ...);
logger.debug(1, 'str', { a: 1 }, ...);
logger.awrn(1, 'str', { a: 1 }, ...);
# 获取用户位置示例
const app = getApp({ allowDefault: true });
const locationManager = app.tms.getLocationManager(); // 获取位置管理器
// 参数1-showModalWhenCloseAuth: 获取位置时,如果用户关闭了位置授权,是否弹窗提示用户打开授权
// 参数2-type: 坐标类型
// 参数3-content: 弹窗内容
// 参数4-getPoi: 是否获取详细poi信息, 0 - 不获取(不返回poi字段), 1 - 获取(返回poi字段)
const loc = await Loc.getLocationDetail(false, 'gcj02', '', 1); /
// loc:
{
cityName: '北京市',
cityCode: '100100',
province: '北京市',
latitude: 325.255333,
longitude: 116.2545454,
adCode: 1212144,
poi: {
id: '1114545554511',
title: '腾讯北京总部大厦',
address : '北京市海淀区东北旺西路',
}
}
# TmsBridge
小程序提供给插件的扩展(Object 实例)。在插件内通过 requireMiniProgram() 引入
# 安装
npm install @tmsfe/tms-bridge
# 小程序与插件是如何通信的
小程序在引入插件的时候,会将tmsBridge注入给插件,插件内部通过requireMiniProgram()引入小程序传入的插件。
- 小程序引入插件,会注入index.js
{
"myPlugin": {
"version": "1.0.0",
"provider": "wxidxxxxxxxxxxxxxxxx",
"export": "index.js"
}
}
# 小程序注入插件index.js源码示例
import TMSBridge from '@tmsfe/tms-bridge'; // 引入tmsBridge
TMSBridge.navPageMap // TMSBridge注册页面路径,只有在这里注册的页面,插件内部才可以使用跳转。
.set('SINAN-WEBVIEW-PATH', '/modules/x/webcontainer/webcontainer')
.set('SINAN-MPVIEW-PATH', '/modules/x/mpcontainer/mpcontainer')
.set('SINAN-ADDRESS-PATH', '/modules/me/pages/chooseaddress/chooseaddress')
.set('SINAN-PASSENGER-PATH', '/modules/me/pages/contacts/contacts')
.set('launch', '/launch/launch');
const tMSBridge = new TMSBridge({ component: true });
module.exports = {
TMSBridge: tMSBridge
};
# 插件内部使用tmsBridge示例
if (!this.TMSBridge) {
const { TMSBridge } = requireMiniProgram(); // 引入小程序扩展能力
this.TMSBridge = TMSBridge.bind(wx); // 绑定当前调用域
}
this.TMSBridge.navigateToMP({ // TMSBridge跳转至小程序页面的api
page: 'launch', // 在上文index.js注册页面的key
query: 'target=index&from=page1'
});