以下是处理和注意事项的一些指导:
1.获取位置:
uniApp中可以使用微信小程序的wx.getLocation()方法来获取用户的位置信息。在调用该方法之前,需要在manifest.json文件中配置地理位置权限,并在代码中合理处理授权和错误情况。
uni.getLocation(OBJECT)
获取当前的地理位置、速度。
OBJECT 参数说明
参数名 | 类型 | 必填 | 说明 | 平台差异说明 |
---|---|---|---|---|
type | String | 否 | 默认为 wgs84 返回 gps 坐标,gcj02 返回国测局坐标,可用于 uni.openLocation 和 map 组件坐标,App 和 H5 需配置定位 SDK 信息才可支持 gcj02。 | |
altitude | Boolean | 否 | 传入 true 会返回高度信息,由于获取高度需要较高精确度,会减慢接口返回速度 | 抖音小程序、飞书小程序、支付宝小程序不支持 |
geocode | Boolean | 否 | 默认false,是否解析地址信息 | 仅App平台支持(安卓需指定 type 为 gcj02 并配置三方定位SDK) |
highAccuracyExpireTime | Number | 否 | 高精度定位超时时间(ms),指定时间内返回最高精度,该值3000ms以上高精度定位才有效果 | App (3.2.11+)、H5 (3.2.11+)、微信小程序 (基础库 2.9.0+) |
timeout | String | 否 | 默认为 5,定位超时时间,单位秒 | 仅飞书小程序支持 |
cacheTimeout | Number | 否 | 定位缓存超时时间,单位秒;每次定位缓存当前定位数据,并记下时间戳,当下次调用在cacheTimeout之内时,返回缓存数据 | 仅飞书小程序、支付宝小程序支持 |
accuracy | String | 否 | 默认为 high,指定期望精度,支持 high,best。当指定 high 时,期望精度值为100m,当指定 best 时期望精度值为20m。当定位得到的精度不符合条件时,在timeout之前会继续定位,尝试拿到符合要求的定位结果 | 仅飞书小程序支持 |
isHighAccuracy | Boolean | 否 | 开启高精度定位 | App (3.4.0+)、H5 (3.4.0+)、微信小程序 (基础库 2.9.0+) |
success | Function | 是 | 接口调用成功的回调函数,返回内容详见返回参数说明。 | |
fail | Function | 否 | 接口调用失败的回调函数 | |
complete | Function | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |
2.拍照和相册浏览:uniApp中可以使用微信小程序的wx.chooseImage()方法来拍照或从相册选择图片。该方法返回一个临时文件路径,可以在后续处理中使用。同样,需要在manifest.json文件中配置相机和相册权限,并在代码中处理授权和错误情况。
uni.chooseImage(OBJECT)
从本地相册选择图片或使用相机拍照。
App端如需要更丰富的相机拍照API(如直接调用前置摄像头),参考plus.camera
微信小程序从基础库 2.21.0 开始, wx.chooseImage 停止维护,请使用 uni.chooseMedia 代替。
OBJECT 参数说明
参数名 | 类型 | 必填 | 说明 | 平台差异说明 |
---|---|---|---|---|
count | Number | 否 | 最多可以选择的图片张数,默认9 | 见下方说明 |
sizeType | Array<String> | 否 | original 原图,compressed 压缩图,默认二者都有 | App、微信小程序、支付宝小程序、百度小程序 |
extension | Array<String> | 否 | 根据文件拓展名过滤,每一项都不能是空字符串。默认不过滤。 | H5(HBuilder X2.9.9+) |
sourceType | Array<String> | 否 | album 从相册选图,camera 使用相机,默认二者都有。如需直接开相机或直接选相册,请只使用一个选项 | |
crop | Object | 否 | 图像裁剪参数,设置后 sizeType 失效 | App 3.1.19+ |
success | Function | 是 | 成功则返回图片的本地文件路径列表 tempFilePaths | |
fail | Function | 否 | 接口调用失败的回调函数 | 小程序、App |
complete | Function | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |
crop 参数说明
参数名 | 类型 | 必填 | 说明 | 平台差异说明 |
---|---|---|---|---|
quality | Number | 否 | 取值范围为1-100,数值越小,质量越低(仅对jpg格式有效)。默认值为80。 | |
width | Number | 是 | 裁剪的宽度,单位为px,用于计算裁剪宽高比。 | |
height | Number | 是 | 裁剪的高度,单位为px,用于计算裁剪宽高比。 | |
resize | Boolean | 否 | 是否将width和height作为裁剪保存图片真实的像素值。默认值为true。注:设置为false时在裁剪编辑界面显示图片的像素值,设置为true时不显示 |
3.获取手机号:uniApp中可以使用微信小程序的wx.login()方法获取用户的登录凭证,然后使用wx.request()方法向后端服务器发送请求,获取用户的手机号。在获取手机号之前,需要在微信开放平台上配置小程序的手机号登录权限,并在代码中处理登录和请求的逻辑。
uni.login(OBJECT)
uni.login是一个客户端API,统一封装了各个平台的各种常见的登录方式,包括App手机号一键登陆、三方登录(微信、微博、QQ、Apple、google、facebook)、各家小程序内置登录。
除了前端API,DCloud还提供了uni-id,这是一个云端一体的、完整的、账户开源框架。不仅包括客户端API,还包括前端页面、服务器代码、管理后台等所有与登录账户有关的服务,包括短信验证码、密码加密存储、忘记密码、头像更新等所有常见账户相关功能。
OBJECT 参数说明
参数名 | 类型 | 必填 | 说明 | 平台差异说明 |
---|---|---|---|---|
provider | String | 否 | 登录服务提供商,通过 uni.getProvider 获取,如果不设置则弹出登录列表选择界面 | |
scopes | String/Array | 见平台差异说明 | 授权类型,默认 auth_base。支持 auth_base(静默授权)/ auth_user(主动授权) / auth_zhima(芝麻信用) | 支付宝小程序 |
timeout | Number | 否 | 超时时间,单位ms | 微信小程序、百度小程序、京东小程序 |
univerifyStyle | Object | 否 | 一键登录页面样式 | App 3.0.0+ |
onlyAuthorize | Boolean | 否 | 微信登录 仅请求授权认证 | App 3.2.6+ |
success | Function | 否 | 接口调用成功的回调 | |
fail | Function | 否 | 接口调用失败的回调函数 | |
complete | Function | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |
onlyAuthorize说明
微信登录在未配置onlyAuthorize
的情况下,调用uni.login
接口用户登录凭证(code
)不返回,用以换取登录信息(authResult
);需要在项目manifest.json中配置的appsecret
,此参数云端打包后会保存在apk/ipa中,存在参数泄露的风险;HBuilderX3.4.18+ 不再提供此参数的可视化配置。对于安全性要求较低的开发者,可以通过manifest.json -> 源码视图 -> app-plus -> distribute -> sdkConfigs -> oauth -> weixin -> 添加appsecret 配置。
success 返回参数说明
参数名 | 说明 | 平台差异说明 | ||
---|---|---|---|---|
authResult | 登录服务商提供的登录信息,服务商不同返回的结果不完全相同 | 微信登录配置onlyAuthorize:true 则此项为空,App 3.2.6+ | ||
code | 用户登录凭证。开发者需要在开发者服务器后台,使用 code 换取 openid 和 session_key 等信息 | 微信登录配置onlyAuthorize:true 才会返回,App 3.2.6+、京东小程序 | ||
appleInfo | Object | 否 | 苹果登录 返回的信息 | App 3.4.3+ |
errMsg | 描述信息 |
在处理这些功能时,需要注意以下事项:
- 需要在manifest.json文件中配置相关权限,如地理位置、相机、相册等。
- 需要在代码中判断用户是否已授权,并在未授权时引导用户进行授权处理。
- 需要处理用户拒绝授权或出现错误的情况,并给予适当的提示和处理方式。
- 需要了解微信小程序API的使用方法和参数,以及uniApp对其的封装和支持程度。
小程序拒绝授权怎么重新授权
1.卸载小程序、清理小程序缓存后,再重新关注后并可重新获取授权提醒;
2.调用uni.authorize(OBJECT)重新提醒用户授权;
uni.authorize(OBJECT)
提前向用户发起授权请求。调用后会立刻弹窗询问用户是否同意授权小程序使用某项功能或获取用户的某些数据,但不会实际调用对应接口。如果用户之前已经同意授权,则不会出现弹窗,直接返回成功。如果用户之前拒绝了授权,此接口会直接进入失败回调,一般搭配uni.getSetting
和uni.openSetting
使用。
OBJECT 参数说明
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
scope | String | 是 | 需要获取权限的 scope,详见 scope 列表。 |
success | Function | 否 | 接口调用成功的回调函数 |
fail | Function | 否 | 接口调用失败的回调函数 |
complete | Function | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |
#scope 列表
scope | 对应接口 | 描述 | 平台差异说明 |
---|---|---|---|
scope.userInfo | uni.getUserInfo | 用户信息 | |
scope.userLocation | uni.getLocation, uni.chooseLocation | 地理位置 | |
scope.userLocationBackground | wx.userLocationBackground | 后台定位 | 微信小程序 |
scope.address | uni.chooseAddress | 通信地址 | |
scope.record | uni.getRecorderManager | 录音功能 | |
scope.writePhotosAlbum | uni.saveImageToPhotosAlbum, uni.saveVideoToPhotosAlbum | 保存到相册 | 抖音小程序的返回值是scope.album |
scope.camera | <camera /> 组件,头条下的扫码、拍照、选择相册 | 摄像头 | |
scope.invoice | wx.chooseInvoice | 获取发票 | 微信小程序、QQ小程序 |
scope.invoiceTitle | uni.chooseInvoiceTitle | 发票抬头 | 微信小程序、百度小程序、QQ小程序 |
scope.werun | wx.getWeRunData | 微信运动步数 | 微信小程序 |
注意:scope.userLocation 权限需要在 manifest.json 配置 permission, 详见:manifest.json 应用配置 | uni-app官网
uni.authorize({
scope: 'scope.userLocation',
success() {
uni.getLocation()
}
})
3.在小程序标题栏点“...”设置,可查看用户授权情况,同时还可以重新设置授权。
希望以上信息对你有所帮助,如果你需要更详细的指导,请参考uniApp官方文档和微信小程序开发文档。