Flutter短信读取插件sms_read_form_retriever_api的使用

发布于 1周前 作者 yibo5220 来自 Flutter

Flutter短信读取插件sms_read_form_retriever_api的使用

插件介绍

sms_read_form_retriever_api 是一个用于自动读取短信验证码(OTP)的Flutter插件,它利用Google的SMS Retriever API来实现这一功能。该插件无需请求短信读取权限。

特性

  • 自动读取短信验证码:使用SMS Retriever API自动读取短信验证码。
  • 无需请求短信读取权限:不需要在应用中请求短信读取权限。
  • 简单易用的API:提供简单的且易于使用的API接口。

安装

sms_read_form_retrieverer_api 添加到您的 pubspec.yaml 文件中:

dependencies:
  flutter:
    sdk: flutter
  sms_read_form_retrieverer_api:
    path: ../path_to_your_plugin

示例代码

下面是一个完整的示例代码,展示了如何使用 sms_read_form_retrieverer_api 插件来自动读取短信验证码。

import 'package:flutter/material.dart';
import 'dart:async';

import 'package:flutter/services.dart';
import 'package:sms_read_form_retriever_api/sms_auto_fill.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatefulWidget {
  const MyApp({super.key});

  [@override](/user/override)
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  String _otpReceiver = 'Not Started';
  final _smsAutoFillPlugin = SmsAutoFill();

  [@override](/user/override)
  void initState() {
    super.initState();
  }

  Future<void> startServiceForGetOtp() async {
    setState(() {
      _otpReceiver = "OTP Service Started";
    });
    String otp;
    try {
      otp = await _smsAutoFillPlugin.registerReceiver() ?? 'Not Received OTP';
    } on PlatformException {
      otp = 'Failed to get OTP.';
    }
    if (!mounted) return;

    setState(() {
      _otpReceiver = otp;
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('SMS retriever'),
        ),
        body: Column(
          children: [
            Center(
              child: Text('Running on: $_otpReceiver\n'),
            ),
            Center(
              child: TextButton(
                style: ButtonStyle(
                    foregroundColor:
                        MaterialStateProperty.all<Color>(Colors.white),
                    backgroundColor: MaterialStateProperty.all(Colors.cyan)),
                onPressed: () {
                  startServiceForGetOtp();
                },
                child: const Text('Start Service'),
              ),
            ),
          ],
        ),
      ),
    );
  }
}

更多关于Flutter短信读取插件sms_read_form_retriever_api的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter短信读取插件sms_read_form_retriever_api的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是一个关于如何在Flutter中使用sms_read_form_retriever_api插件读取短信的示例代码。请注意,实际使用时,你需要确保插件已经正确添加到你的Flutter项目中,并且已经按照插件文档进行了必要的配置(如申请权限、配置API密钥等)。

首先,确保你的pubspec.yaml文件中已经添加了sms_read_form_retriever_api依赖:

dependencies:
  flutter:
    sdk: flutter
  sms_read_form_retriever_api: ^latest_version  # 请替换为实际最新版本号

然后,运行flutter pub get来获取依赖。

接下来,是一个简单的Flutter应用示例,展示了如何使用sms_read_form_retriever_api插件来读取短信:

import 'package:flutter/material.dart';
import 'package:sms_read_form_retriever_api/sms_read_form_retriever_api.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  String? smsContent;

  @override
  void initState() {
    super.initState();
    _retrieveSMS();
  }

  Future<void> _retrieveSMS() async {
    try {
      // 配置API密钥和其他必要的参数(根据插件文档)
      final SmsRetrieverApi smsRetrieverApi = SmsRetrieverApi(
        apiKey: 'YOUR_API_KEY',  // 替换为你的API密钥
        phoneNumber: '+1234567890',  // 替换为要监听短信的手机号码
        // 其他可选配置参数...
      );

      // 监听短信读取事件
      smsRetrieverApi.listenForSms().listen((SmsMessage message) {
        setState(() {
          smsContent = message.body;
        });
      });

      // 开始监听短信(有些插件可能需要显式调用开始方法)
      // smsRetrieverApi.startListening(); // 如果插件需要,则取消注释这行

    } catch (e) {
      print('Error retrieving SMS: $e');
    }
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('SMS Reader Example'),
        ),
        body: Center(
          child: Text(
            smsContent ?? 'No SMS retrieved yet...',
            style: TextStyle(fontSize: 20),
          ),
        ),
      ),
    );
  }
}

注意

  1. API密钥:在SmsRetrieverApi实例化时,你需要提供一个API密钥。这通常是通过某个短信读取服务(如Twilio、Nexmo等)获得的。你需要根据所使用服务的文档来获取和配置API密钥。

  2. 权限:确保你的应用已经请求并获得了读取短信的权限。在Android上,这通常需要在AndroidManifest.xml中声明RECEIVE_SMS权限。然而,由于隐私和安全考虑,从Android 10(API级别29)开始,普通应用无法直接读取短信内容,通常需要使用特定的API(如SMS Retriever API)来间接获取短信中的一次性验证码(OTP)等信息。

  3. 插件文档:由于插件的实现和API可能会随时间变化,强烈建议查阅sms_read_form_retriever_api插件的官方文档(假设该链接有效)以获取最新的使用指南和配置要求。

  4. 错误处理:在实际应用中,应该添加更多的错误处理和用户反馈机制,以处理可能出现的各种异常情况。

请根据你的具体需求和所使用服务的文档调整上述代码。

回到顶部