Skip to content

uni小程序

配置流程

  1. 将uniapp小程序打包制作成wgt格式的资源包,上传至云端服务器,生成公网可访问的资源包地址。
  2. 将小程序名称、小程序id、版本编码、wgt资源包地址交给融媒体中心小编,创建客户端内可访问的小程序链接,具体步骤为:进入客户端管理后台目录「/运营/小程序管理」,点击左上方添加按钮进行添加,将前述四项逐一填入,确定添加。 示例
  3. 点击该条小程序右方操作内「查看链接」即可获取小程序链接,可配置到客户端任意位置。

如何更新

  1. 将需要更新的uniapp小程序打包制作成wgt格式的资源包,上传至云端服务器,生成公网可访问的资源包地址,或直接对原资源包替换,公网可访问到即可。
  2. 进入客户端管理后台目录「/运营/小程序管理」,对需要更新的小程序点击右方操作内的编辑按钮进行编辑。小程序ID请保持不变,否则需要重新生成小程序链接,版本编码必须更新,客户端以此来确定是否需要更新小程序,wgt资源包地址只要能访问到即可。

示例

获取用户数据

javascript
uni.sendNativeEvent("event_user_info", {}, (ret) => {
  this.userInfo = ret;
});

// {
//   code: 1,
//   data: {
//     accountId: '63906c89630440296b4af6cb',
//     login: 1,
//     mobile: 1,
//     sessionId: '6600d1b437fa3d37a8620a79',
//     signature: '5966058120e5e0f20c3b9b35324ffa663b2449f081034536f9d843ddc1d8dc18',
//     timestamp: 1711351907186,
//     user: {
//       id: '63906c89630440296b4af6cb',
//       idcard: "",
//       "is_face_verify": 0,
//       "nick_name": "\U8bfb\U53cb_30\U5440\U5440\U554a\U5440",
//       realName: "",
//     },
//   },
// }

调用登录弹窗

调用之后,未登录的会展示登录弹窗,成功失败都返回相应的返回值,已登录的直接返回登录的相关信息。

javascript
uni.sendNativeEvent("event_show_login", {}, (ret) => {
  this.login = ret;
});

// {
//   code: 1,
//   data: {
//     accountId: '63906c89630440296b4af6cb',
//     login: 1,
//     mobile: 1,
//     sessionId: '6600d1b437fa3d37a8620a79',
//     signature: '5966058120e5e0f20c3b9b35324ffa663b2449f081034536f9d843ddc1d8dc18',
//     timestamp: 1711351907186,
//     user: {
//       id: '63906c89630440296b4af6cb',
//       idcard: "",
//       "is_face_verify": 0,
//       "nick_name": "\U8bfb\U53cb_30\U5440\U5440\U554a\U5440",
//       realName: "",
//     },
//   },
// }

获取位置信息

javascript
uni.sendNativeEvent("event_get_location", {}, (ret) => {
  this.location = ret;
});

// {
//   "code": "1",
//   "data": {
//     "accuracy": "30.0",
//     "address": "浙江省杭州市拱墅区体育场路180号靠近浙江日报",
//     "city": "杭州市",
//     "latitude": "30.270341",
//     "lontitude": "120.174588",
//     "speed": "0.0",
//     "timestamp": "1672128687769"
//     "region": "拱墅区",
//     "province": "浙江省"
//   }
// }

监听事件

监听网络状态、登录状态

javascript
uni.onNativeEventReceive((event, data) => {
  if (event == "event_network_change") {
    this.event_network_change = data;
  }
  if (event == "event_login_change") {
    this.event_login_change = data;
  }
});

// event_network_change: 
// 'wifi' | 'mobile' | 'unknow' | 'unavailable'

// event_login_change:
// {
//   "code": "1",
//   "data" {
//     "userStatus": "login" // login-登录成功 logout-登出 unlogin-未登录 Forbid-禁止登录
//   }
// }

二维码扫描

扫描二维码或者从相册选取二维码

javascript
uni.sendNativeEvent("event_showScanQr", { 
  // 参数
	// needResult:'0' | '1'
	//  - '0':默认值;客户端处理扫描结果,回调函数不执行
	//  - '1':回调函数返回扫描结果如下
  needResult: '0' 
}, (ret) => {
  //  {
  //    "code": "1",
  //    "data" {
  //      "needResult": 1,
  //      "data": "https://www.commind.cn/",
  //      "scanType": "qrCode"  // qrCode 目前是固定该值
  //    }
  //  }
});

选择多媒体

只有拍照可选择来源为摄像头。安卓系统选择摄像头后,打开的都是后置摄像头,可在拍照界面选择为前置摄像头

建议优先使用uni官方提供的选择图片方法
javascript
uni.sendNativeEvent("event_selectMedia", {
  count: 1// 可选择数量,默认9
  type: 'image',	// 'video' | 'image',其他则所有类型可选
  mediaSource: 1,	// type为image时有效,可选择来源 0:相册 1:后置摄像头 2:前置摄像头
}, (ret) => {
  // {
  //   "data": [
  //     {
  //       "address": "/private/var/mobile/Containers/Data/Application/C6973847-F006-44AC-AD87-318C3DC31AD6/tmp//1700114491.440688.jpg",
  //       "mediaType": "jpg",
  //       "base64": "data:image/jpg;base64,/9j/4AAQSkZJRgABAQAASABIAAD/4QBMRXhpZgAATU0AKgAAAAgAAgESAAM..."
  //     },
  //     {
  //       "address": "/private/var/mobile/Containers/Data/Application/C6973847-F006-44AC-AD87-318C3DC31AD6/tmp//1700114491.483108.jpg",
  //       "mediaType": "jpg",
  //       "base64": "data:image/jpg;base64,/9j/4AAQSkZJRgABAQAASABIAAD/4QBMRXhpZgAATU0AKgAAAAgAAgESAAMAA..."
  //     }
  //   ],
  //   "code": 1
  // }
});

胶囊按钮菜单控制

设置右上角...按钮唤醒的菜单中按钮列表

安卓客户端使用这个方法在会有异常问题,因为uni官方提供的安卓端sdk这个功能有缺失,只能等uni官方支持
javascript
// 参数
// [{ title: "按钮的标题", iden: 按钮的标识 }]
uni.sendNativeEvent("event_setUniMPMenuItems", [ 
  { title: '第一个按钮的标题', iden: 1},
  { title: '第二个按钮的标题', iden: 2},
]);
// 监听按钮点击
uni.onNativeEventReceive((event, data) => {
  if (event === 'MenuItemAction') {
    // data是设置时按钮绑定的iden
    console.log(data)
  }
)

弹出客户端分享框

javascript
uni.sendNativeEvent("event_openAppShareMenu", {
  title: '分享标题',
  desc: '分享描述',
  link: 'https://vip.com/jcommind/all?sdkDebug=1', // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
  imgUrl: 'https://preimg.tmuyun.com/assets/20221027/1666862237082_635a4c9d6304407ca1dcf248.jpeg', // 分享图标
  onlyImageShare: '0' // 是否为图片分享:1 - 是 0 - 否(默认)
}, (ret) => {
  // {
  //   "code": 1,
  //   "data": {
  //     "shareTo": "1"	// 1 - 微信 2 - 朋友圈 3 - 钉钉 4 - QQ 5 - 微博 6 - QQ空间
  //   }
	// }
});

设置窗口是否允许关闭

设置右上角关闭按钮是否允许关闭

javascript
uni.sendNativeEvent("event_configBlockClose", {
  guard: '1' // '1' - 拦截 '0' - 不拦截
}, (ret) => {
  // 当参数guard传入'1'时,点击关闭会回调
});

关闭当前窗口

javascript
uni.sendNativeEvent("event_closeWindow", {})

获取客户端信息

javascript
uni.sendNativeEvent("event_getAppInfo", {
  uuid: '0' // '0' - timestamp 和 signature 为空 '1' - 会回传设备唯一编码
}, (ret) => {
  // {
  //   "data": {
  //     "versionName": "9.2.0",	// 客户端显示版本信息 versionName
  //     "device": "iPhone X",	// 设备
  //     "system": "iOS",	// 系统
  //     "app": "目光资讯",	// 客户端名称
  //     "app_code": "xsb_muguang",	// 客户端标识code
  //     "version": "090200",	// 客户端版本信息,versionCode
  //     "systemVersion": "15.2",
  //     "networkType": "wifi",
  //		 "uuid": "xxx-xx-xxx" // 设备唯一DeviceId,当uuid = 0,timestamp 和 signature 为空
  //		 "timestamp": "213143333" // 用于签名的时间戳
  //		 "signature": "add-dff0-xxx"	// 签名
  //   },
  //   "code": "1"
  // }
});

添加桌面快捷方式设置的信息

在添加桌面快捷方式时,设置的信息

javascript
uni.sendNativeEvent("event_createShortcut", {
  name: '快捷方式名称',	// 快捷方式的名称
  iconUrl: 'https://preimg.tmuyun.com/assets/207/1666862237082_635a4c9d6304407ca1dcf248.jpeg', // 快捷方式的图标
  link: 'https://vip.tmuyun.com/jcommind/all?sdkDebug=1' // 快捷方式打开的链接
}, (ret) => {
  // { "data": { "success": "1" }, "code": "1"}
});

跳转(h5、小程序、稿件)

uni小程序之间不支持互相反复跳转,只能从A小程序跳转到B小程序,不能再从B小程序跳回到A小程序,因为A小程序已打开,这是uni小程序官方不支持的操作。
javascript
uni.sendNativeEvent("event_navigateTo", {
  link: 'https://preapp.tmuyun.com/webFunction/applet?id=20&tenantId=6' // 跳转的链接
}, (ret) => {
  // { "data": {}, "code": "1"}
});