React Native 在应用程序内发送短信

问题描述 投票:0回答:4

我想在不打开默认消息应用程序的情况下向多个号码发送短信。 我尝试使用

react-native-sms-x
但它没有维护,我的项目只是停留在编译阶段。 我还使用了
react-native-sms
,但它打开了默认的消息应用程序,其中填充了一个用户号码和消息正文,并且还必须单击它的发送按钮。

android ios react-native sms
4个回答
7
投票
import { Linking,Platform  } from "react-native";

    const url = (Platform.OS === 'android')
    ? 'sms:919999999999?body=your message'
    : 'sms:919999999999'
    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))

5
投票

在React应用程序中进行了大量的研究和试验之后...... 我发现 this 库工作正常,并且达到了发送消息而无需进入默认消息环境的目标。

var phoneNumbers = {
        "addressList": ["+911212121212", "+911212121212"]
      };
    var message = "This is automated test message"
    SmsAndroid.autoSend(
        phoneNumbers,
        message,
        (fail) => {
            console.log('Failed with this error: ' + fail);
        },
        (success) => {
            console.log('SMS sent successfully');
        },
    );

希望对您有帮助。别忘了点赞哦


1
投票

从现在开始,我只使用 Android react-native-sms-android 这是我向多个用户发送短信的代码:

import Asms from "react-native-sms-android";
type Props = {};
export default class App extends Component<Props> {
  constructor(Props) {
        super(Props);
        this.state = { FileNumbers: ['687867867867','8575774433'], Message: 
          "gjjgjgj" };
         }

  sendingSms = (Receivers, Messagex) => {
           try {
                Receivers.map(
                async Numbers =>
                  await Asms.sms(Numbers, Messagex, "sendDirect", (err,message) 
                    => {
                    if (err) {
                      console.log(err);
                    } else {
                      console.log(message);
                    }
                  })
              );
            } catch (e) {
              alert("" + e);
            }
          };

      render() {
        return (
          <View style={styles.container}>
            <TextInput
              style={{
                height: 40,
                borderColor: "gray",
                borderWidth: 1,
                width: "90%"
              }}
              onChangeText={Message => this.setState({ Message })}
              value={this.state.Message}
            />
            <Button
              title="SEND"
              onPress={() =>
                this.sendingSms(this.state.FileNumbers, this.state.Message)
              }
            />

          </View>
        );
      }
    }

0
投票

就我而言,我想发送

SMS through the app
与本机没有任何 NPM 库

我的 React Native 版本是

0.73.4
,我正在使用
kotlin

android/app/src/main/java/com/your_project_name

创建文件夹

  1. smsSend(文件夹名称)

  2. 创建两个文件

a.

SmsModule.kt

b.

SmsModulePackage.kt

android/app/src/main/java/com/your_project_name/smsSend/SmsModule.kt

package com.your_project_name

import android.telephony.SmsManager
import com.facebook.react.bridge.Promise
import com.facebook.react.bridge.ReactApplicationContext
import com.facebook.react.bridge.ReactContextBaseJavaModule
import com.facebook.react.bridge.ReactMethod

class SmsModule(reactContext: ReactApplicationContext) : 
ReactContextBaseJavaModule(reactContext)      
    {

override fun getName(): String {
    return "SmsModule"
}

@ReactMethod
 fun sendSms(message: String, recipient: String, promise: Promise) {
     try {
         val smsManager = SmsManager.getDefault()
          smsManager.sendTextMessage(recipient, null, message, null, null)
         promise. Resolve("SMS send successful")
    } catch (e: Exception) {
        promise.reject("SMS_ERROR", e.message)
    }
 }
}

android/app/src/main/java/com/onestack/smsSend/SmsModulePackage.kt

package com.onestack

import com.facebook.react.ReactPackage
import com.facebook.react.bridge.NativeModule
import com.facebook.react.bridge.ReactApplicationContext
import com.facebook.react.uimanager.ViewManager

class SmsModulePackage : ReactPackage {
 override fun createNativeModules(reactContext: ReactApplicationContext): 
 List<NativeModule> {
    return listOf(SmsModule(reactContext))
} 

override fun createViewManagers(reactContext: ReactApplicationContext): List<ViewManager<*, *>> {
    return emptyList()
}
}

app.js

const {SmsModule} = NativeModules;
-----------
const smsSend = async () => {
try {
  const granted = await PermissionsAndroid.request(
    PermissionsAndroid.PERMISSIONS.SEND_SMS,
    {
      title: 'SMS Permission',
      message: 'This app needs access to send SMS messages.',
      buttonPositive: 'OK',
    },
  );
  if (granted === PermissionsAndroid.RESULTS.GRANTED) {
    console.log('SEND_SMS permission granted');
    try {
      const response = await SmsModule.sendSms(
        'Bhai new send kr raha hu check kr',
        '9811929305',
      );
      console.log('SMS sent:', response);
    } catch (error) {
      console.error('Error sending SMS:', error);
    }
  } else {
    console.log('SEND_SMS permission denied');
  }
} catch (err) {
  console. Warn(err);
}
};
© www.soinside.com 2019 - 2024. All rights reserved.