Native expo SMS retriever module for android
With the SMS Retriever API, you can automate SMS-based user verification in your Android app. This eliminates the need for users to manually enter verification codes and avoids the necessity of additional app permissions.
Add the package to your npm dependencies
npm install expo-sms-retriever
OR
yarn add expo-sms-retriever
async getHash() : Promise<string>
Returns a unique identifier that helps verify the authenticity of the app that receives the SMS.
addListener(callback) -> callback(<MessageEventPayload>)
Add a listener callback. The callback function is called with MessageEventPayload
.
removeListener()
Removes all listener.
async start() : Promise<boolean>
Starts the Google GSM SmsRetrieverClient and registers required Native listeners. It waits for a matching SMS message until timeout (5 minutes).
NOTE: This method is called by
addListener
so isn't needed to be called if you want to get the message / OTP once. If you want to keep recieving messages you can call the start method inside the callback to reinitate theSmsRetrieverClient
async stop() : Promise<boolean>
Unregisters the Native listeners.
NOTE: This method is called by
removeListener
method so isn't needed to be called seperately.
{
message: "<string>", // actual message
otp: "<string" // parsed otp value
}
Check out the basic usage, we used getHash
method to get hash, added a listener updated the otp and finally clear the listeners.
const [hash, sethash] = useState('');
const [otp, setotp] = useState('');
useEffect(() => {
/* get hash */
SmsRetriever.getHash().then(sethash);
/* start listening */
SmsRetriever.addListener((message) => {
console.log(message);
setotp("OTP is " + message.otp);
/* stop lsitening */
SmsRetriever.removeListener();
});
}, []);
If the module could not find the SmsRetrieverModule
then it will use a mocked module. The Hash will be set to NOHASH
and OTP value to 123456
You may modify /src/SmsRetrieverModuleMock.ts
in case you want to change these values.
Distributed under the MIT License. See LICENSE for more information.