如何在不请求位置许可的情况下获取设备的当前国家/地区?扑
How to get current country of device without asking for location permission? Flutter
我只想知道设备所在的国家/地区。不是街道,不是城市,不是省。只是国家。我应该能够获得那种粗略的信息,而无需向用户询问位置权限,我看到许多应用程序和网站以某种方式知道我目前在哪个国家,而无需事先询问我任何事情。
有什么方法可以在 Android 和 iOS 上与 Flutter 一起使用吗?
(可选但非常感谢)如果绝对需要 API 来执行此操作。哪个最便宜?
试试这个:
import 'package:http/http.dart' as http;
try {
http.get('http://ip-api.com/json').then((value) {
print(json.decode(value.body)['country'].toString());
});
} catch (err) {
//handleError
}
您可以使用 IP 地理定位服务,例如 Ipregistry:
import 'package:http/http.dart' as http;
Future<String> lookupUserCountry() async {
final response = await http.get('https://api.ipregistry.co?key=tryout');
if (response.statusCode == 200) {
return json.decode(response.body)['location']['country']['name'];
} else {
throw Exception('Failed to get user country from IP address');
}
}
请注意,在 Android 上它需要 android.permission.INTERNET
权限。
我只想知道设备所在的国家/地区。不是街道,不是城市,不是省。只是国家。我应该能够获得那种粗略的信息,而无需向用户询问位置权限,我看到许多应用程序和网站以某种方式知道我目前在哪个国家,而无需事先询问我任何事情。
有什么方法可以在 Android 和 iOS 上与 Flutter 一起使用吗?
(可选但非常感谢)如果绝对需要 API 来执行此操作。哪个最便宜?
试试这个:
import 'package:http/http.dart' as http;
try {
http.get('http://ip-api.com/json').then((value) {
print(json.decode(value.body)['country'].toString());
});
} catch (err) {
//handleError
}
您可以使用 IP 地理定位服务,例如 Ipregistry:
import 'package:http/http.dart' as http;
Future<String> lookupUserCountry() async {
final response = await http.get('https://api.ipregistry.co?key=tryout');
if (response.statusCode == 200) {
return json.decode(response.body)['location']['country']['name'];
} else {
throw Exception('Failed to get user country from IP address');
}
}
请注意,在 Android 上它需要 android.permission.INTERNET
权限。