Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 正在尝试从传入消息中自动读取本机的OTP_Javascript_Reactjs_React Native_React Native Android - Fatal编程技术网

Javascript 正在尝试从传入消息中自动读取本机的OTP

Javascript 正在尝试从传入消息中自动读取本机的OTP,javascript,reactjs,react-native,react-native-android,Javascript,Reactjs,React Native,React Native Android,我的目标:我正在尝试在我的react native应用程序中自动填充来自传入消息(SMS)的OTP代码 到目前为止,我只从后端收到短信,但我无法在我的react原生应用程序中读取短信(其中包含OTP) 在verification.js(用户输入电话号码)和Otp screen.js(应填充Otp代码)中 在Verification.js中,我还添加了从用户处读取和接收短信所需的权限 在otpsscreen.js中,我们注册了一个sms侦听器,但没有执行回调函数(该函数负责读取传入消息) 我提供以

我的目标:我正在尝试在我的react native应用程序中自动填充来自传入消息(SMS)的OTP代码

到目前为止,我只从后端收到短信,但我无法在我的react原生应用程序中读取短信(其中包含OTP)

在verification.js(用户输入电话号码)和Otp screen.js(应填充Otp代码)中

  • 在Verification.js中,我还添加了从用户处读取和接收短信所需的权限

  • 在otpsscreen.js中,我们注册了一个sms侦听器,但没有执行回调函数(该函数负责读取传入消息)

  • 我提供以下代码片段:

    //OtpScreen.js
    useEffect(() => {
       _onSmsListener = async () => {
         try {
           const registered = await SmsRetriever.startSmsRetriever();
           if (registered) { // this becomes true
             console.log('SMS listener', registered);
             SmsRetriever.addSmsListener(event => {
               console.log(event.message); //I am not able to get the sms message here.
               SmsRetriever.removeSmsListener();
             });
           }
         } catch (error) {
           console.log(JSON.stringify(error));
         }
       };
    
    PS:我使用了react原生短信检索程序包

    有没有办法使用原生Android代码来实现这一点


    是否必须进行任何配置才能读取SMS消息或消息必须采用特定格式?如果是,如何格式化邮件?

    OTP代码是什么?一次性密码?@suther是的,这是一次性密码你能再解释一下吗,你到底想做什么?我不明白OTP是如何依赖一些短信的。你到底想做什么?我说的对吗,您的后端应用程序发送包含OTP作为SMS消息数据的SMS?因此,如果是的话,你最好重新发送你的请求,删除你问题中的OTP内容,只写一些类似“我无法访问收到的短信内容”的内容。在这种情况下,你使用的短信数据与帮助你无关。否则,不想支持你的人很难明白你的意思。
    //Verification.js
    useEffect(() => {
        async function requestReadSmsPermission() {
          console.log('the sms');
          try {
            const granted = await PermissionsAndroid.request(
              PermissionsAndroid.PERMISSIONS.READ_SMS,
              {
                title: ' Read SMS Permission',
                message: 'Allow Our app to read your SMS?',
                buttonNeutral: 'Ask Me Later',
                buttonNegative: 'Cancel',
                buttonPositive: 'OK'
              }
            );
            if (granted === PermissionsAndroid.RESULTS.GRANTED) {
              console.log('You can Read  the SMS');
            } else {
              console.log('Read SMS permission denied');
            }
          } catch (err) {
            console.warn(err);
          }
        }
        requestReadSmsPermission();
      }, []);
    
      useEffect(() => {
        async function requestReceiveSmsPermission() {
          console.log('the sms');
          try {
            const granted = await PermissionsAndroid.request(
              PermissionsAndroid.PERMISSIONS.RECEIVE_SMS,
              {
                title: ' Receive SMS Permission',
                message: 'Allow Our App to receive your SMS?',
                buttonNeutral: 'Ask Me Later',
                buttonNegative: 'Cancel',
                buttonPositive: 'OK'
              }
            );
            if (granted === PermissionsAndroid.RESULTS.GRANTED) {
              console.log('You can receive  the SMS');
            } else {
              console.log('receive SMS permission denied');
            }
          } catch (err) {
            console.warn(err);
          }
        }
        requestReceiveSmsPermission();
      }, []);
    
    
    //OtpScreen.js
    useEffect(() => {
       _onSmsListener = async () => {
         try {
           const registered = await SmsRetriever.startSmsRetriever();
           if (registered) { // this becomes true
             console.log('SMS listener', registered);
             SmsRetriever.addSmsListener(event => {
               console.log(event.message); //I am not able to get the sms message here.
               SmsRetriever.removeSmsListener();
             });
           }
         } catch (error) {
           console.log(JSON.stringify(error));
         }
       };