Javascript 正在尝试从传入消息中自动读取本机的OTP
我的目标:我正在尝试在我的react native应用程序中自动填充来自传入消息(SMS)的OTP代码 到目前为止,我只从后端收到短信,但我无法在我的react原生应用程序中读取短信(其中包含OTP) 在verification.js(用户输入电话号码)和Otp screen.js(应填充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侦听器,但没有执行回调函数(该函数负责读取传入消息) 我提供以
//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));
}
};