respuesta de Karan había algunos errores tipográficos, y también falló para comprobar si hay una respuesta de "0" en lugar de simplemente "nula". (Lo implementé en mi aplicación y obtuve varios falsos positivos de conexiones débiles o redes no autorizadas.)
Lo he adaptado a continuación y he agregado el código de servidor correspondiente para aquellos que no saben a qué se refería Karan. a. Esto se implementa como un método de la categoría en una extensión NSDate, por lo que se le puede llamar usando [NSDate verifiedDate];
+(NSDate*)verifiedDate {
if([self hasInternetConnectivity]) {
NSURL *scriptUrl = [NSURL URLWithString:@"http://[yourwebsite].com/timestamp.php"];
NSData *data = [NSData dataWithContentsOfURL: scriptUrl];
if(data != nil) {
NSString *tempString = [NSString stringWithUTF8String:[data bytes]];
if([tempString doubleValue] > 946684800) { // Date is at least later than 2000 AD, or else something went wrong
NSDate *currDate = [NSDate dateWithTimeIntervalSince1970:[tempString doubleValue]];
NSLog(@"verifiedDate: String returned from the site is: %@ and date is: %@", tempString, [currDate description]);
return currDate;
} else {
NSLog(@"verifiedDate: Server returned false timestamp (%@)", tempString);
return [NSDate date];
}
} else {
NSLog(@"verifiedDate: NSData download failed");
return [NSDate date];
}
} else {
NSLog(@"verifiedDate: InternetConnectivity failed");
return [NSDate date];
}
}
Y aquí está el código del servidor, almacenado en la carpeta raíz del servidor como "timestamp.php"
<?php
echo(time());
?>
Si ha utilizado una u otra solución, seleccione la respuesta preferida ;-) –
¿Ha considerado que el usuario puede activar el modo avión y luego cambiar la fecha y la hora? – Mahouk