Angular / Ionic4 Как отправить смс без открытия родного смс приложения - PullRequest
3 голосов
/ 09 октября 2019

Таким образом, я следовал за репозиторием github (https://github.com/cordova-sms/cordova-sms-plugin) для плагина Ionic Native SMS, и я настроил параметры репо с помощью:

var options = {
            replaceLineBreaks: false, // true to replace \n by a new line, false by default
            android: {
                intent: 'INTENT'  // send SMS with the native android SMS messaging
                //intent: '' // send SMS without opening any other app
            }
        };

однако, когда я тестируюэто на реальном устройстве, он все еще не отправляет SMS.

Может ли кто-нибудь мне помочь, мне нужно добавить разрешение? Вот код, который у меня до сих пор

 sendSms() {
    let options = {
      replaceLineBreaks: false, // true to replace \n by a new line, false by default
      android: {
          intent: ''  // send SMS with the native android SMS messaging
          // intent: '' // send SMS without opening any other app
      }
  };
    this.sms.send('656225667', 'SMS Works', options).then(val => {
      alert('It works');
    });
  }

Ответы [ 3 ]

1 голос
/ 09 октября 2019

Единственный способ отправить SMS без открытия собственного приложения - это использовать платную стороннюю службу для отправки SMS для вас.

Есть много таких, например, Twilio является популярным провайдером.

Я думаю, вам нужно отправить его с использованием технологии на стороне сервера или через облачную функцию , чтобы вы могли контролировать его безопасность.

1 голос
/ 09 октября 2019

Вы не отправляете SMS, вы создаете INTENT для отправки SMS.

Намерение позволяет вам запускать действие в другом приложении, описывая простое действие, которое вы хотите выполнить (например, «просмотреть карту» или «сделать снимок») в объекте Intent,Этот тип намерения называется неявным намерением, поскольку он не определяет компонент приложения для запуска, а вместо этого указывает действие и предоставляет некоторые данные, с которыми нужно выполнить действие.

это означает только кодгенерирует «намерение», которое затем передается приложению по умолчанию для вашего телефона, которое обрабатывает его. Как он обрабатывает intent, зависит только от приложения. Может даже быть несколько приложений, которые могут обрабатывать intent, тогда использование получает диалог выбора. Ваше приложение не контролирует, когда SMS действительно отправляется.

На самом деле это хорошая вещь, поэтому, если вы устанавливаете какое-либо приложение, вы можете быть уверены, что оно не отправляет SMS в службу подписки. и вы оплачиваете 100 евро телефонных счетов.

0 голосов
/ 06 ноября 2019

Вы можете отправить SMS без открытия собственного приложения SMS. вам нужно использовать разрешение Android для получения разрешений SMS

использовать эти две функции

checkSMSPermission() {
  this.androidPermissions.checkPermission(this.androidPermissions.PERMISSION.SEND_SMS).then(
    result => console.log('Has permission?', result.hasPermission),
    err => this.androidPermissions.requestPermission(this.androidPermissions.PERMISSION.SEND_SMS)
  );
}
requestSMSPermission() {
  // tslint:disable-next-line: max-line-length
  this.androidPermissions.requestPermissions([this.androidPermissions.PERMISSION.SEND_SMS, this.androidPermissions.PERMISSION.BROADCAST_SMS]);
}

, и вам необходимо включить эти функции в манифест Androidaswell.

<uses-permission android:name="android.permission.SEND_SMS" />

, а затем сама функция SMS

sendSMS() {
  this.checkSMSPermission();
  this.contactComponent.getContact();
  const numberOne = this.contactComponent.mContacts[0].number;
  const numberTwo = this.contactComponent.mContacts[1].number;
  const numbeThree = this.contactComponent.mContacts[2].number;
  const numberFour = this.contactComponent.mContacts[3].number;
  const numberFive = this.contactComponent.mContacts[4].number;
  console.log(numberOne);

  // tslint:disable-next-line: max-line-length
  const message = this.messageComponent.dangerMessage + ' my location is: lat: ' + this.latitude.toString() + 'lng: ' + this.longitude.toString();
  console.log('number=' + numberOne + ', message= ' + message);

  // CONFIGURATION
  const options = {
      replaceLineBreaks: false, // true to replace \n by a new line, false by default
      android: {
          intent: ''  // send SMS with the native android SMS messaging
          // intent: '' // send SMS without opening any other app
      }
  };
  this.sms.send(numberOne, message, options).then(() => {
    this.presentAlert('Success', 'message has been sent');
  })
  .catch(error => {
    this.presentAlert('Error', 'Failed: ' + error);
  });
}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...