web-dev-qa-db-fra.com

Envoyer et lire le SMS contenu envoyé via natif SMS app cordova

Je construis une application ionique/cordova. Depuis mon application, l'utilisateur peut cliquer sur un numéro de téléphone pour envoyer un SMS. Lorsque vous cliquez sur ce numéro, l'application native SMS s'ouvre et l'utilisateur peut saisir son propre SMS et envoyer le SMS. Y at-il un moyen, de mon application, je peux obtenir le contenu SMS?

Merci d'avance.

10
Rashidul

Comme vous utilisez ionic/cordova, un plugin SMS est nécessaire pour effectuer ce travail. 

Outre le plug-in jsmobile SMS, il en existe un autre avec plusieurs API: http://plugins.cordova.io/#/package/com.rjfun.cordova.sms

Comme mentionné dans la description:

sendSMS(address(s), text, successCallback, failureCallback);
listSMS(filter, successCallback, failureCallback);
deleteSMS(filter, successCallback, failureCallback);

startWatch(successCallback, failureCallback);
stopWatch(successCallback, failureCallback);

enableIntercept(on_off, successCallback, failureCallback);
restoreSMS(msg_or_msgs, successCallback, failureCallback);

Événements

'onSMSArrive'

Vous pouvez obtenir le contenu SMS de l'une des manières suivantes:

  1. implémentez l'interface utilisateur, obtenez les entrées de l'utilisateur et appelez l'API du plug-in pour envoyer le SMS.

Ou,

  1. laissez l'application SMS par défaut envoyer le message, puis lisez le SMS dans la zone d'envoi.

BTW, le plugin ne fonctionne que pour Android, FYI.

8
MikeX

Il existe l'option cordova-plugin-sms , comme @MikeX l'a suggéré, mais notez que sa licence n'est pas d'utilisation gratuite.

J'ai donc choisi d'utiliser Phonegap-SMS-reception-plugin , qui est la licence MIT.

et puis juste

 var smsInboxPlugin = cordova.require('cordova/plugin/smsinboxplugin');
  smsInboxPlugin.startReception (function(msg) {
     alert(msg);
     stopReadingSMS(smsInboxPlugin);
   }, function() {
     alert("Error while receiving messages");
     stopReadingSMS(smsInboxPlugin);
   });

function stopReadingSMS(smsInboxPlugin) {
    smsInboxPlugin.stopReception (function() {
        console.log("Correctly stopped SMS receiver");
    }, function() {
        console.log("Error while stopping the SMS receiver");
    });
}
1
yishaiz

Voulez-vous savoir ce que l'utilisateur a saisi dans une autre application? Si c'est le cas, je ne crois pas que vous puissiez le faire. En théorie, vous pouvez essayer de sauter la vraie application SMS et d'utiliser un plugin: http://plugins.cordova.io/#/package/com.jsmobile.plugins.sms

0
Raymond Camden
you can use sms: url for opening native sms app for that you need to add
<access Origin="sms:*" launch-external="yes"/> inside config.xml

après avoir ajouté la ligne ci-dessus, utilisez le lien SMS comme suit

<a class="button icon-left ion-Android-mail button-balanced button-outline" href="sms:9808350855">SMS</a>
0
Mahen

De nos jours, il existe des wrappers ioniques pour les extensions Cordova. Vous pouvez utiliser $ cordovaSMS ( docs ici )

module.controller('ThisCtrl', function($cordovaSms) {

 document.addEventListener("deviceready", function () {

    $cordovaSms
      .send('phonenumber', 'SMS content', options)
      .then(function() {
        // Success! SMS was sent
      }, function(error) {
        // An error occurred
      });

  });

});

Pour voir ce que l'utilisateur tape, vous pouvez lui demander d'écrire le "contenu SMS" dans votre application. Une fois que vous quittez votre application, je ne pense pas que vous puissiez récupérer le texte du champ natif SMS

0
Connor Leech