uni-app打包应用在iphone11上短信验证码未自动出现在键盘上方,同一部手机其他第三方应用可以

uni-app打包应用在iphone11上短信验证码未自动出现在键盘上方,同一部手机其他第三方应用可以

操作步骤:

  • 第一步,输入手机号
  • 第二步,发送验证码

预期结果:

希望键盘上自动读取(出现)短信验证码

实际结果:

在苹果手机(iPhone11)上未在键盘上出现短信验证码

bug描述:

场景:

输入手机号,发送验证码。

问题:

键盘上部没有自动出现验证码。 在两部iPhone11上都出现这个问题。同样的手机其他第三方应用键盘可以自动读取验证码,只有uniapp打包的app不行。

其他信息:

  • 手机系统:iOS
  • 手机系统版本号:iOS 14
  • 手机厂商:苹果
  • 手机机型:IPHONE11
  • 页面类型:vue
  • vue版本:vue2
  • 打包方式:离线
  • 项目创建方式:HBuilderX

image

3 回复

这个应该是要让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
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!