我在将 React Native 应用程序部署到 Google Play 商店进行生产发布时遇到了问题。该应用程序利用react-native-otp-verify 库自动读取OTP 消息。虽然该功能在本地开发中运行良好,但在部署到 Play 商店时我面临短信权限的挑战。
以下是相关代码片段:
import {
getHash,
startOtpListener,
removeListener,
} from 'react-native-otp-verify';
// // using methods
useEffect(() => {
getHash()
.then(hash => {
// use this hash in the message.
console.log('hash', hash);
})
.catch(console.log);
startOtpListener(message => {
console.log('message', message);
// extract the otp using regex e.g. the below regex extracts 4 digit otp from message
const otpMessage = /(\d{6})/g.exec(message)[1];
console.log('otpMessage', otpMessage);
setAuto(true);
setOTP(otpMessage);
});
return () => removeListener();
}, []);
我已经确保 Play 商店和手机上收到的消息之间的哈希 ID 匹配。然而,尽管在短信和通话记录权限中选择了“默认短信处理程序”,我的应用程序还是被拒绝了。
在我的 AndroidManifest 文件中,我设置了必要的权限:
<!-- <uses-permission android:name="android.permission.READ_SMS" />
<uses-permission android:name="android.permission.RECEIVE_SMS" /> -->
我不确定在 Play 管理中心上为短信和通话记录权限选择的正确选项。有人可以指导我做出适当的选择来解决这个问题吗?
我们将非常感谢您的帮助。谢谢!
您的应用程序不是默认的短信处理程序。默认短信处理程序是为所有传入文本写入短信数据库的应用程序。基本上,它是您手机的短信应用程序所需的特殊权限。您不需要仅仅为了阅读一条消息而需要它。事实上,声称您的应用程序要么是恶意软件,要么开发人员不知道他们在做什么(在本例中是第二个),这是一个巨大的危险信号。
我也遇到这个问题了。不是发送短信抛出您的应用程序,而是意图发送带有接收者及其内容的默认短信应用程序。
带有空白文本的示例代码,供所选收件人使用。
从“react-native”导入{链接,平台}
const url = (Platform.OS === 'android')
? 'sms:1-408-555-1212?body=yourMessage'
: 'sms:1-408-555-1212'
Linking.canOpenURL(url).then(supported => {
if (!supported) {
console.log('Unsupported url: ' + url)
} else {
return Linking.openURL(url)
}
}).catch(err => console.error('An error occurred', err))