在 React Native 中使用 *react-native-otp-auto-verify 自动读取 OTP

发布: (2026年3月18日 GMT+8 18:34)
4 分钟阅读
原文: Dev.to

Source: Dev.to

react-native-otp-auto-verify

移动应用中一个小而痛的用户体验问题是 OTP(一次性密码)验证。
传统上,用户必须手动输入短信中的 4–6 位验证码,这会导致流程中断和用户沮丧。

react-native-otp-auto-verify 是一个库,能够在 Android 上自动监听收到的短信并在 OTP 到达时提取出来——无需手动输入 ✨。
它使用 Android 的 SMS Retriever API 来:

  • 监听包含 OTP 的来短信。
  • 在不需要用户交互的情况下提取 OTP 代码(例如 4–6 位)。
  • 提供简易的 Hook 和命令式 API 供监听使用。

注意: 仅在 Android 上可用;出于安全/隐私原因,iOS 不允许任意读取短信。

工作原理

生成应用哈希

库提供了一个方法用于生成应用的哈希值,你必须将该哈希嵌入后端发送的 OTP 短信内容中。

import { getHash } from "react-native-otp-auto-verify";

const [hash] = await getHash(); // e.g., "AbCdEfGhIjK"

正确格式化短信

短信必须在结尾处包含该哈希,并以 “ 为前缀,以满足 SMS Retriever 的格式要求。

 Your verification code is 123456
AbCdEfGhIjK

只有包含此哈希的消息才会被投递给应用。

监听并提取代码

你可以使用提供的 Hook 或命令式监听器。

Hook 示例

import React, { useEffect } from "react";
import { View, Text } from "react-native";
import { useOtpVerification } from "react-native-otp-auto-verify";

export function OtpScreen() {
  const { otp, startListening, stopListening } = useOtpVerification({
    numberOfDigits: 6,
  });

  useEffect(() => {
    startListening();
    return () => stopListening();
  }, []);

  return (
    
      {otp ?? "Waiting for SMS…"}
    
  );
}

命令式监听器示例

import { activateOtpListener, removeListener } from "react-native-otp-auto-verify";

const handler = (code) => {
  console.log("Received OTP:", code);
};

activateOtpListener(handler);

// 当不再需要监听时
removeListener();

API 概览

FunctionDescription
getHash()返回用于嵌入短信的 Android 应用哈希。
useOtpVerification(options)Hook,负责启动/停止监听并提供 OTP、超时错误等信息。
activateOtpListener(handler)命令式监听器,会在提取到 OTP 时调用 handler
removeListener()手动移除当前激活的监听器。
extractOtp(sms, numberOfDigits)从原始短信字符串中解析 OTP 的工具函数。

替代方案与兼容性

  • 还有其他包(例如 react-native-otp-verify),但多数已过时或不支持新版 React Native 架构。
  • react-native-otp-auto-verify 兼容 React Native ≥ 0.60+,并支持自动链接(autolinking)。

重要注意事项

  • 短信必须包含应用哈希;否则平台不会投递该短信。
  • 监听器大约在 5 分钟后超时——请在 UI 中处理重试逻辑。

安装

npm install react-native-otp-auto-verify

使用摘要

  1. 在客户端 生成应用哈希getHash)。
  2. 在后端发送的 OTP 短信中 加入哈希(参见上面的格式)。
  3. 在 React Native 组件中 启动监听器(使用 Hook 或命令式 API)。
  4. 当短信到达时 自动收到 OTP

资源

0 浏览
Back to Blog

相关文章

阅读更多 »

第2天:为什么仅仅更努力不足

当我还是个孩子的时候,我卖 Scout‑O‑Rama 票。数学很简单:敲更多的门,获得更多的销售,赢得更大的奖品。卖软件并不那么不同……