Я использую пакет 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);
}
}
});
}