用于OTP验证的Ionic 4 read SMS插件

时间:2019-03-14 12:30:38

标签: ionic-framework ionic4

我正在开发ionic4应用程序,以进行自动验证,或者每当我收到短信时,我的应用程序都必须阅读该消息。为此,我使用了“ Cordova插件添加Cordova-plugin-SMS”,但是它不起作用。我宣布了'declare var window:any;并声明var SMS:任何;'没有任何效果。它在Android中显示“ java.lang.ClassNotFoundException:com.rjfun.cordova.sms.SMSPlugin”,在开发中的Web中显示“ TypeError:无法读取未定义的属性'listSMS'”。谁能帮助我解决这个问题

4 个答案:

答案 0 :(得分:1)

有一个插件可以解决您的问题。名为cordova-plugin-sms-receive。 这将有助于在收到任何电话时阅读短信,并且您可以做任何您想做的事情。 https://www.npmjs.com/package/cordova-plugin-sms-receive

答案 1 :(得分:0)

plugin允许从应用发送短信,而不接收短信。

要将数据从SMS传输到您的应用,您可以使用深层链接将其作为args传递。这将要求用户点击SMS中的链接。我不知道一种将SMS数据自动馈送到您的应用程序的方法,并且我认为这是不可能的,因为这会带来安全风险。

自定义网址方案是实现此目的的最简单方法(例如mycoolapp://some-path?p1=data1&p2=data2

App Links(Android> 6.0)和Universal Links(iOS> 9.0)功能更强大,但可能不必要,并且不受支持。这真的取决于您的用例。

Ionic为此使用了community maintained plugin并完成了工作,尽管在这里和那里都需要一种解决方法。也可以使用Branch.io的plugin,但我没有使用它。

答案 2 :(得分:0)

非常好的问题……您需要为此使用cordova插件。以下是

首先,您需要安装Android Permission Ionic Native插件。 首先运行这两个命令以安装Android权限插件。

ionic cordova plugin add cordova-plugin-android-permissions
npm install @ionic-native/android-permissions

将android-permissions添加到应用程序的模块中。

import { AndroidPermissions} from '@ionic-native/android-permissions';

@NgModule({


  providers: [

    AndroidPermissions

  ]

})
export class AppModule { }

检查页面上的权限

import { AndroidPermissions } from '@ionic-native/android-permissions';


export class HomePage {
constructor(public androidPermissions: AndroidPermissions) { }



ionViewWillEnter()
{

this.androidPermissions.checkPermission(this.androidPermissions.PERMISSION.READ_SMS).then(
  success => console.log('Permission granted'),
err => this.androidPermissions.requestPermission(this.androidPermissions.PERMISSION.READ_SMS)
);

this.androidPermissions.requestPermissions([this.androidPermissions.PERMISSION.READ_SMS]);
}
}

现在允许“读取短信”权限后,您需要安装cordova-plugin-sms。运行此命令进行安装。

ionic cordova plugin add cordova-sms-plugin

npm install @ionic-native/sms

,同时在您的页面中阅读短信-

在声明类之前将其放在顶部

declare var SMS:any;

放置在班级内部

ionViewDidEnter()
    {

    this.platform.ready().then((readySource) => {
    if(SMS) SMS.startWatch(()=>{
               console.log('watching started');
            }, Error=>{
           console.log('failed to start watching');
       });

      document.addEventListener('onSMSArrive', (e:any)=>{
           var sms = e.data;
           console.log(sms);

           });

        });
    }

答案 3 :(得分:0)

您可以使用此Ionic / Cordova插件进行自动OTP验证,并且不会向用户要求SMS读取权限。

插件:https://github.com/hanatharesh2712/ionic-native-sms-retriever-plugin-master

演示应用程序:https://github.com/hanatharesh2712/sms-plugin-test