npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

cordova-plugin-android-sms-retriever

v1.0.4

Published

A plugin to use the SMS Retriever Android API to receive text messages without requiring SMS permissions

Downloads

107

Readme

cordova-plugin-android-sms-retriever

This plugin uses the Android SMS Retriever API to intercept text messages sent to the phone.

Why is that?

On January/2019 Google started warning developers about critical changes in SMS and CALL LOGS access policy. Android used to allow apps to read or intercept SMS indiscriminately since they had the permissions: SMS_READ and/or CALL_LOG. That is an obvious security issue since several financial operations rely on tokens or OTP (One Time Passwords) sent through SMS to their users. More info...

Regarding to SMS, Google presents as an alternative the SMS Retriever API used by this plugin.

Installation

cordova plugin add cordova-plugin-android-sms-retriever

API Reference

AndroidSmsRetriever

.getAppHash(successCallback, errorCallback)

Since computing the 11 characters portion of your app's hash required by SMS retriever API to be in the text message body can be a tedious workload, this plugin provides this function as an utility.

IMPORTANT: Since you get your app's hash, you should remove the call to this function. Also, remember this hash uses the certicate used to sign the APK so consider this information if you face issues to intercept SMS.

// Remove this code after getting your app's hash
// The hash might be different when building a release version
if (device.platform === 'Android') {

    cordova.plugins.AndroidSmsRetriever
        .getAppHash(
            
            function successCallback(hash) {
                alert(hash);
            },

            function errorCallback(e) {
                console.error(e);
            }

        );
}

If you are facing difficulties to generate your app's hash using this function refer to documentation provided by Google here.

.onSmsReceived(successCallback, errorCallback, notifyWhenStarted)

successCallback The function to be called when a SMS arrives.

errorCallback The error callback will be called if something goes wrong or if no SMS arrives within 5 minutes.

notifyWhenStarted An optional boolean that determines if the successCallback should also be called when the SMS retriever starts. The value returned in the message parameter of the successCallback will be the constant 'SMS_RETRIEVER_SETUP'.

Useful when you want to make sure the native SMSretriever listener is up and running before requesting your server to send the text message.

if (device.platform === 'Android') {

    cordova.plugins.AndroidSmsRetriever
        .onSmsReceived(
            
            function successCallback(message) {

                if(message === 'SMS_RETRIEVER_SETUP') {
                    // Here you request server to send the SMS
                    return;
                }

                alert(message);
            },

            function errorCallback(e) {
                console.error(e);
            },

            true //notifyWhenStarted
        );
}

IMPORTANT: The body of your SMS needs to comply the Android SMS Retriever API requirements described here. Basically you need to start with the "<#>" tag and finish with the 11 character code extracted from your app's hash, in the example below FA+9qCX9VSu.

SMS example
<#> Your ExampleApp code is: 123ABC78
FA+9qCX9VSu