
Product
Rust Support Now in Beta
Socket's Rust support is moving to Beta: all users can scan Cargo projects and generate SBOMs, including Cargo.toml-only crates, with Rust-aware supply chain checks.
@sebivps/react-native-sms
Advanced tools
Use this RN component to send an SMS with a callback (completed/cancelled/error). iOS and Android are both supported.
Currently, only user-initiated sending of an SMS is supported. This means you can't use react-native-sms
to send an SMS in the background-- this package displays the native SMS view (populated with any recipients/body you want), and gives a callback describing the status of the SMS (completed/cancelled/error). PRs are welcome!
npm install react-native-sms --save
The compiler needs to know how to find your sweet new module!
react-native link react-native-sms
Note: If using RN < v0.47, use react-native-sms <= v1.4.2
Just a few quick & easy things you need to set up in order to get SendSMS up and running!
MyApp/android/app/src/main/java/some/other/directories/MainActivity.java
)At the top of the file
import android.content.Intent; // <-- include if not already there
import com.tkporter.sendsms.SendSMSPackage;
Inside MainActivity (place entire function if it's not there already)
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
//probably some other stuff here
SendSMSPackage.getInstance().onActivityResult(requestCode, resultCode, data);
}
Then head to your [MyApp]Application.java (MyApp/android/app/src/main/java/so/many/dirs/MyAppApplication.java
)
Make sure import com.tkporter.sendsms.SendSMSPackage;
is there
Then head down to getPackages()
, it has to look similar to this
protected List<ReactPackage> getPackages() {
//some variables
return Arrays.<ReactPackage>asList(
//probably some items like `new BlahPackage(),`
//just add into the list (don't forget commas!):
SendSMSPackage.getInstance()
);
}
Navigate to your AndroidManifest.xml
(at MyApp/android/app/src/main/AndroidManifest.xml
), and add this near the top with the other permssions
<uses-permission android:name="android.permission.READ_SMS" />
Ensure your launchMode for .MainActivity
is
android:launchMode="singleTask"
Once everything is all setup, it's pretty simple:
SendSMS.send(myOptionsObject, callback);
Key | Type | Platforms | Required? | Description |
---|---|---|---|---|
body | String | iOS/Android | No | The text that shows by default when the SMS is initiated |
recipients | Array (strings) | iOS/Android | No | Provides the phone number recipients to show by default |
successTypes | Array (strings) | Android | Yes | An array of types that would trigger a "completed" response when using android Possible values: 'all' 'inbox' 'sent' 'draft' 'outbox' 'failed' 'queued' |
allowAndroidSendWithoutReadPermission | boolean | Android | No | By default, SMS will only be initiated on Android if the user accepts the READ_SMS permission (which is required to provide completion statuses to the callback). Passing true here will allow the user to send a message even if they decline the READ_SMS permission, and will then provide generic callback values (all false) to your application. |
attachment | Object { url: string, iosType?: string, iosFilename?: string, androidType?: string } | iOS/Android | No | Pass a url to attach to the MMS message. Currently known to work with images. |
import SendSMS from 'react-native-sms'
//some stuff
someFunction() {
SendSMS.send({
body: 'The default body of the SMS!',
recipients: ['0123456789', '9876543210'],
successTypes: ['sent', 'queued'],
allowAndroidSendWithoutReadPermission: true
}, (completed, cancelled, error) => {
console.log('SMS Callback: completed: ' + completed + ' cancelled: ' + cancelled + 'error: ' + error);
});
}
import SendSMS from 'react-native-sms'
import resolveAssetSource from 'react-native/Libraries/Image/resolveAssetSource'
someFunction() {
const image = require('assets/your-image.jpg');
const metadata = resolveAssetSource(image);
const url = metadata.uri;
const attachment = {
url: url,
iosType: 'public.jpeg',
iosFilename: 'Image.jpeg',
androidType: 'image/*'
};
SendSMS.send({
body: 'The default body of the SMS!',
recipients: ['0123456789', '9876543210'],
successTypes: ['sent', 'queued'],
allowAndroidSendWithoutReadPermission: true,
attachment: attachment
}, (completed, cancelled, error) => {
console.log('SMS Callback: completed: ' + completed + ' cancelled: ' + cancelled + 'error: ' + error);
});
}
Having errors with import statements on Android? Something happened with linking
Go to your settings.gradle
(in MyApp/android/settings.gradle
) and add:
include ':react-native-sms'
project(':react-native-sms').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-sms/android')
Then go to MyApp/android/app/build.gradle
and add inside dependencies { }
:
compile project(':react-native-sms')
FAQs
A React Native library for Sending an SMS with Callback
We found that @sebivps/react-native-sms demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 0 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Product
Socket's Rust support is moving to Beta: all users can scan Cargo projects and generate SBOMs, including Cargo.toml-only crates, with Rust-aware supply chain checks.
Product
Socket Fix 2.0 brings targeted CVE remediation, smarter upgrade planning, and broader ecosystem support to help developers get to zero alerts.
Security News
Socket CEO Feross Aboukhadijeh joins Risky Business Weekly to unpack recent npm phishing attacks, their limited impact, and the risks if attackers get smarter.