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