uniApp获取位置、拍照、相册浏览和获取手机号

以下是处理和注意事项的一些指导:

1.获取位置:
uniApp中可以使用微信小程序的wx.getLocation()方法来获取用户的位置信息。在调用该方法之前,需要在manifest.json文件中配置地理位置权限,并在代码中合理处理授权和错误情况。

 uni.getLocation(OBJECT)

 获取当前的地理位置、速度。

 OBJECT 参数说明

参数名类型必填说明平台差异说明
typeString默认为 wgs84 返回 gps 坐标,gcj02 返回国测局坐标,可用于 uni.openLocation 和 map 组件坐标,App 和 H5 需配置定位 SDK 信息才可支持 gcj02。
altitudeBoolean传入 true 会返回高度信息,由于获取高度需要较高精确度,会减慢接口返回速度抖音小程序、飞书小程序、支付宝小程序不支持
geocodeBoolean默认false,是否解析地址信息仅App平台支持(安卓需指定 type 为 gcj02 并配置三方定位SDK)
highAccuracyExpireTimeNumber高精度定位超时时间(ms),指定时间内返回最高精度,该值3000ms以上高精度定位才有效果App (3.2.11+)、H5 (3.2.11+)、微信小程序 (基础库 2.9.0+)
timeoutString默认为 5,定位超时时间,单位秒仅飞书小程序支持
cacheTimeoutNumber定位缓存超时时间,单位秒;每次定位缓存当前定位数据,并记下时间戳,当下次调用在cacheTimeout之内时,返回缓存数据仅飞书小程序、支付宝小程序支持
accuracyString默认为 high,指定期望精度,支持 high,best。当指定 high 时,期望精度值为100m,当指定 best 时期望精度值为20m。当定位得到的精度不符合条件时,在timeout之前会继续定位,尝试拿到符合要求的定位结果仅飞书小程序支持
isHighAccuracyBoolean开启高精度定位App (3.4.0+)、H5 (3.4.0+)、微信小程序 (基础库 2.9.0+)
successFunction接口调用成功的回调函数,返回内容详见返回参数说明。
failFunction接口调用失败的回调函数
completeFunction接口调用结束的回调函数(调用成功、失败都会执行)

2.拍照和相册浏览:uniApp中可以使用微信小程序的wx.chooseImage()方法来拍照或从相册选择图片。该方法返回一个临时文件路径,可以在后续处理中使用。同样,需要在manifest.json文件中配置相机和相册权限,并在代码中处理授权和错误情况。

uni.chooseImage(OBJECT)

从本地相册选择图片或使用相机拍照。

App端如需要更丰富的相机拍照API(如直接调用前置摄像头),参考plus.camera

微信小程序从基础库 2.21.0 开始, wx.chooseImage 停止维护,请使用 uni.chooseMedia 代替。

OBJECT 参数说明

参数名类型必填说明平台差异说明
countNumber最多可以选择的图片张数,默认9见下方说明
sizeTypeArray<String>original 原图,compressed 压缩图,默认二者都有App、微信小程序、支付宝小程序、百度小程序
extensionArray<String>根据文件拓展名过滤,每一项都不能是空字符串。默认不过滤。H5(HBuilder X2.9.9+)
sourceTypeArray<String>album 从相册选图,camera 使用相机,默认二者都有。如需直接开相机或直接选相册,请只使用一个选项
cropObject图像裁剪参数,设置后 sizeType 失效App 3.1.19+
successFunction成功则返回图片的本地文件路径列表 tempFilePaths
failFunction接口调用失败的回调函数小程序、App
completeFunction接口调用结束的回调函数(调用成功、失败都会执行)

crop 参数说明

参数名类型必填说明平台差异说明
qualityNumber取值范围为1-100,数值越小,质量越低(仅对jpg格式有效)。默认值为80。
widthNumber裁剪的宽度,单位为px,用于计算裁剪宽高比。
heightNumber裁剪的高度,单位为px,用于计算裁剪宽高比。
resizeBoolean是否将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 参数说明
参数名类型必填说明平台差异说明
providerString登录服务提供商,通过 uni.getProvider 获取,如果不设置则弹出登录列表选择界面
scopesString/Array见平台差异说明授权类型,默认 auth_base。支持 auth_base(静默授权)/ auth_user(主动授权) / auth_zhima(芝麻信用)支付宝小程序
timeoutNumber超时时间,单位ms微信小程序、百度小程序、京东小程序
univerifyStyleObject一键登录页面样式App 3.0.0+
onlyAuthorizeBoolean微信登录仅请求授权认证App 3.2.6+
successFunction接口调用成功的回调
failFunction接口调用失败的回调函数
completeFunction接口调用结束的回调函数(调用成功、失败都会执行)

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+、京东小程序
appleInfoObject苹果登录返回的信息App 3.4.3+
errMsg描述信息

在处理这些功能时,需要注意以下事项:

  • 需要在manifest.json文件中配置相关权限,如地理位置、相机、相册等。
  • 需要在代码中判断用户是否已授权,并在未授权时引导用户进行授权处理。
  • 需要处理用户拒绝授权或出现错误的情况,并给予适当的提示和处理方式。
  • 需要了解微信小程序API的使用方法和参数,以及uniApp对其的封装和支持程度。

小程序拒绝授权怎么重新授权

1.卸载小程序、清理小程序缓存后,再重新关注后并可重新获取授权提醒;

2.调用uni.authorize(OBJECT)重新提醒用户授权;

uni.authorize(OBJECT)

提前向用户发起授权请求。调用后会立刻弹窗询问用户是否同意授权小程序使用某项功能或获取用户的某些数据,但不会实际调用对应接口。如果用户之前已经同意授权,则不会出现弹窗,直接返回成功。如果用户之前拒绝了授权,此接口会直接进入失败回调,一般搭配uni.getSettinguni.openSetting使用。

OBJECT 参数说明

参数类型必填说明
scopeString需要获取权限的 scope,详见 scope 列表。
successFunction接口调用成功的回调函数
failFunction接口调用失败的回调函数
completeFunction接口调用结束的回调函数(调用成功、失败都会执行)
#scope 列表
scope对应接口描述平台差异说明
scope.userInfouni.getUserInfo用户信息
scope.userLocationuni.getLocationuni.chooseLocation地理位置
scope.userLocationBackgroundwx.userLocationBackground后台定位微信小程序
scope.addressuni.chooseAddress通信地址
scope.recorduni.getRecorderManager录音功能
scope.writePhotosAlbumuni.saveImageToPhotosAlbumuni.saveVideoToPhotosAlbum保存到相册抖音小程序的返回值是scope.album
scope.camera<camera /> 组件,头条下的扫码、拍照、选择相册摄像头
scope.invoicewx.chooseInvoice获取发票微信小程序、QQ小程序
scope.invoiceTitleuni.chooseInvoiceTitle发票抬头微信小程序、百度小程序、QQ小程序
scope.werunwx.getWeRunData微信运动步数微信小程序

注意:scope.userLocation 权限需要在 manifest.json 配置 permission, 详见:manifest.json 应用配置 | uni-app官网

uni.authorize({
    scope: 'scope.userLocation',
    success() {
        uni.getLocation()
    }
})

3.在小程序标题栏点“...”设置,可查看用户授权情况,同时还可以重新设置授权。

希望以上信息对你有所帮助,如果你需要更详细的指导,请参考uniApp官方文档和微信小程序开发文档。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值