uni-app打包应用在iphone11上短信验证码未自动出现在键盘上方,同一部手机其他第三方应用可以
uni-app打包应用在iphone11上短信验证码未自动出现在键盘上方,同一部手机其他第三方应用可以
操作步骤:
- 第一步,输入手机号
- 第二步,发送验证码
预期结果:
希望键盘上自动读取(出现)短信验证码
实际结果:
在苹果手机(iPhone11)上未在键盘上出现短信验证码
bug描述:
场景:
输入手机号,发送验证码。
问题:
键盘上部没有自动出现验证码。 在两部iPhone11上都出现这个问题。同样的手机其他第三方应用键盘可以自动读取验证码,只有uniapp打包的app不行。
其他信息:
- 手机系统:iOS
- 手机系统版本号:iOS 14
- 手机厂商:苹果
- 手机机型:IPHONE11
- 页面类型:vue
- vue版本:vue2
- 打包方式:离线
- 项目创建方式:HBuilderX
这个应该是要让app拥有读取短信的权限
在 uni-app
打包的应用中,短信验证码未自动出现在键盘上方的问题,可能与应用的配置或代码实现有关。以下是一些可能的原因和解决方案:
1. 确认是否启用了短信验证码自动填充功能
iOS 提供了 UITextContentType.oneTimeCode
属性,用于自动识别和填充短信验证码。确保在 uni-app
中正确使用了该属性。
解决方案:
在 input
组件中,添加 inputmode="numeric"
和 type="number"
,并设置 input-type="oneTimeCode"
。
<input
type="number"
inputmode="numeric"
input-type="oneTimeCode"
placeholder="请输入验证码"
/>
2. 检查 manifest.json
配置
确保 manifest.json
中正确配置了 iOS 的相关权限和功能。
解决方案:
在 manifest.json
中,添加以下配置:
{
"app-plus": {
"ios": {
"capabilities": {
"com.apple.SafariKeychain": true
}
}
}
}
3. 检查短信格式
iOS 自动填充功能依赖于短信的格式。确保短信中包含以下关键词:
- 验证码
- 代码(Code)
- 一次性密码(One-Time Password)
例如:
【AppName】您的验证码是:123456,请在5分钟内输入。
4. 检查键盘类型
确保输入框的键盘类型为数字键盘,以便 iOS 能够正确识别验证码。
解决方案:
在 uni-app
中,设置 input
组件的 type="number"
或 inputmode="numeric"
。
<input type="number" placeholder="请输入验证码" />
5. 测试其他应用
如果其他应用可以正常显示短信验证码,而你的应用不行,可能是代码或配置的问题。可以对比其他应用的实现方式,检查是否有遗漏。
6. 更新 uni-app
版本
确保使用的是最新版本的 uni-app
,旧版本可能存在兼容性问题。
解决方案:
更新 uni-app
和相关插件:
npm update -g [@vue](/user/vue)/cli
npm update -g [@dcloudio](/user/dcloudio)/uni-cli