Google Play 商店中 React Native 应用程序中的 SMS 权限困难

Difficulty with SMS Permissions in React Native App on Google Play Store

提问人:Sushanth 提问时间:11/17/2023 更新时间:11/18/2023 访问量:34

问:

当我的 React Native 应用程序部署到 Google Play 商店进行生产发布时,我遇到了问题。该应用程序利用 react-native-otp-verify 库来自动读取 OTP 消息。虽然该功能在本地开发中运行良好,但在部署到 Play 商店时,我面临着 SMS 权限的挑战。

下面是相关代码的片段:

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 管理中心内为短信和通话记录权限选择的正确选项。有人可以指导我进行适当的选择来解决此问题吗?

您的帮助将不胜感激。谢谢!

Android React-Native 控制台 谷歌播放开发者 API

评论


答:

0赞 Gabe Sechan 11/17/2023 #1

你的应用不是默认的短信处理程序。默认短信处理程序是为所有传入文本写入短信数据库的应用。基本上,这是您手机的短信应用程序所需的特殊权限。您不需要仅仅阅读一条消息。事实上,声称这是一个巨大的危险信号,表明您的应用程序要么是恶意软件,要么是开发人员不知道他们在做什么(在这种情况下,这是第二个)。

0赞 Murtaza 11/18/2023 #2

我也有同样的问题。Intent 不会发送短信抛出您的应用程序,而是将默认短信应用程序与接收方及其内容放在一起。

包含空白文本的示例代码,用于所选收件人。

import {Linking, Platform} from '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))