hasAdBlocker static method
Implementation
static FutureEither<bool> hasAdBlocker() async {
var preferences = await SharedPreferences.getInstance();
// last check was less than 24 hours ago
if (preferences.containsKey('ana.adBlockerCheck') &&
preferences.getInt('ana.adBlockerCheck')! > DateTime.now().millisecondsSinceEpoch - 86400000) {
return right(preferences.getBool('ana.adBlocker')!);
}
final List<String> adServers = [
"pagead2.googlesyndication.com",
"googleads.g.doubleclick.net",
"googleads4.g.doubleclick.net",
"googleads.g.doubleclick.net",
"graph.facebook.com",
];
var counter = 0;
for (var adServer in adServers) {
var uri = Uri.https(adServer, '');
try {
var response = await HttpClient().getUrl(uri);
var responseBytes = await response.done;
response.close();
if (responseBytes.statusCode == 200) {
counter++;
}
} on HandshakeException catch (e) {
preferences.setBool('ana.adBlocker', counter == adServers.length);
preferences.setInt('ana.adBlockerCheck', DateTime.now().millisecondsSinceEpoch);
return right(true);
}
}
preferences.setBool('ana.adBlocker', counter == adServers.length);
preferences.setInt('ana.adBlockerCheck', DateTime.now().millisecondsSinceEpoch);
if (counter == adServers.length) {
return right(false);
} else {
return right(true);
}
}