Flutter: SMS не отправляются на различные устройства с использованием упакованного sms_maintained - PullRequest
0 голосов
/ 10 апреля 2020

Я использую пакет sms_maintained для отправки SMS из моего приложения Flutter. Он отлично работает на различных мобильных устройствах, но не работает и на многих других устройствах, я не получаю никаких ошибок или исключений, чтобы иметь дело.

Я просто звоню sendAlertToContacts метод нажатием кнопки и больше ничего. Есть ли что-то, что я делаю неправильно?

Вот мой код, который я использую для отправки смс, я выбираю номера телефонов из базы данных здесь:

  void sendAlert(String number, String msgText) {

    final SmsSender sender = new SmsSender();
    SmsMessage msg = new SmsMessage(number, msgText);
    sender.sendSms(msg);

    msg.onStateChanged.listen((state) {
      if (state == SmsMessageState.Sending) {
        return Toast.show('Sending Alert...', context,
          duration: 1, backgroundColor: Colors.blue, backgroundRadius: 5);
      } else if (state == SmsMessageState.Sent) {
        return Toast.show('Alert Sent Successfully!', context,
            duration: 3, backgroundColor: Colors.green, backgroundRadius: 5);
      } else if (state == SmsMessageState.Fail) {
        return Toast.show('Operation Failed! Try again Later', context,
            duration: 3, backgroundColor: Colors.red, backgroundRadius: 5);
      }
    });
  }

 Future<void> sendAlertToContacts(String msg) async {
    List<String> recipients = [];
    LocationData myLocation;
    String error;
    Location location = new Location();
    var db =
    FirebaseDatabase.instance.reference().child(widget.user.phoneNumber);

    db.once().then((DataSnapshot snapshot) async {
      Map<dynamic, dynamic> values = snapshot.value;
      values.forEach((key, values) {
        recipients.add(values["phone"]);
      });
      try {
        myLocation = await location.getLocation();
        var currentLocation = myLocation;
        var coordinates =
        Coordinates(currentLocation.latitude, currentLocation.longitude);
        var addresses =
        await Geocoder.local.findAddressesFromCoordinates(coordinates);
        var first = addresses.first;

        String link =
            "http://maps.google.com/?q=${currentLocation.latitude},${currentLocation.longitude}";
        for (int i = 0; i < recipients.length; i++) {
          sendAlert(recipients[i],
              "$msg\n\nReach me at:\n${first.addressLine} \n\nLocation on Google Maps:\n$link");
        }
      } on PlatformException catch (e) {
        if (e.code == 'PERMISSION_DENIED') {
          error = 'please grant permission';
          print(error);
        }
        if (e.code == 'PERMISSION_DENIED_NEVER_ASK') {
          error = 'permission denied- please enable it from app settings';
          print(error);
        }
      }
    });
  }

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