You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用React Native实现短信验证码自动填充功能

React Native 短信验证码自动填充实现方案

核心实现逻辑

跨端实现的底层逻辑分别适配双端系统原生能力:

  • iOS 12及以上系统自带短信验证码识别能力,只要给输入框配置对应属性,系统收到含验证码的短信时会自动在键盘上方提示填充,iOS 17及以上版本支持无需用户点击的静默自动填充。
  • Android 端推荐用Google Play服务的SMS Retriever API实现,不需要申请高危的短信读取权限,符合应用商店上架规则,只要短信格式匹配应用特征即可自动捕获内容提取验证码。

跨平台适配包推荐

  • react-native-otp-verify
    目前适配性最好的主流方案,同时支持iOS原生自动填充配置和Android的SMS Retriever API,无需申请READ_SMS权限,适配RN 0.60+版本的自动链接,维护状态稳定。使用时只需要把生成的应用11位哈希值添加到境外短信服务商的发送模板末尾,即可触发Android端的自动捕获。
  • 系统原生能力+剪贴板组合方案
    适合极简场景使用,iOS端无需安装任何依赖,直接配置输入框属性即可实现基础填充能力;Android端如果是内部测试用的demo,可以配合剪贴板监听实现填充,不推荐上架使用,涉及短信权限的申请很容易被商店驳回。

最简实现示例

iOS原生无依赖实现

直接给验证码输入框添加对应属性即可:

import { TextInput } from 'react-native';

<TextInput
  placeholder="请输入6位验证码"
  textContentType="oneTimeCode" // iOS自动填充核心配置
  keyboardType="number-pad"
  maxLength={6}
  value={verifyCode}
  onChangeText={setVerifyCode}
/>

双端统一实现(基于react-native-otp-verify)

import { useState, useEffect } from 'react';
import { TextInput } from 'react-native';
import RNOtpVerify from 'react-native-otp-verify';

const VerifyCodeInput = () => {
  const [verifyCode, setVerifyCode] = useState('');

  useEffect(() => {
    // 首次运行可打印获取应用哈希值,配置到短信模板末尾
    RNOtpVerify.getHash().then(hash => console.log('应用哈希值:', hash)).catch(console.log);

    // 监听验证码短信
    const otpListener = RNOtpVerify.addListener(otpContent => {
      // 从短信内容提取6位数字验证码,正则可根据实际格式调整
      const codeMatch = otpContent.match(/\d{6}/);
      if (codeMatch) {
        setVerifyCode(codeMatch[0]);
        // 填充完成后移除监听避免重复触发
        RNOtpVerify.removeListener();
      }
    });

    return () => RNOtpVerify.removeListener();
  }, []);

  return (
    <TextInput
      placeholder="请输入6位验证码"
      textContentType="oneTimeCode"
      keyboardType="number-pad"
      maxLength={6}
      value={verifyCode}
      onChangeText={setVerifyCode}
    />
  );
};

export default VerifyCodeInput;

注意事项

  • Android端使用SMS Retriever API时,短信总长度不能超过140字节,发送方号码不能存在于用户通讯录中,否则会识别失败。
  • iOS端不需要额外配置短信模板,只要短信内容包含验证码、code这类关键词,系统就会自动识别匹配。
  • 不要使用需要申请READ_SMS权限的第三方包,当前全球主流应用商店对该权限审核都非常严格,非核心功能申请会直接被驳回。

内容的提问来源于stack exchange,提问作者Nightcrawler

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 22:36:09