Cambiar la date y la hora del iPhone

Estoy jugando con iOS SDK, y estoy tratando de cambiar la date y la hora del dispositivo mediante progtwigción. Leí que no es posible con el SDK estándar, lo que tiene sentido, pero me pregunto si es posible hacerlo con las API privadas, ya que solo estoy haciendo una aplicación como estudio y no tengo la intención de publicarlo en la App Store

1) Agregue a su aplicación los derechos com.apple.timed con el valor bool establecido en YES

2) Deshabilite la configuration automática de la hora (y zona horaria si así lo desea)

Enlace a CoreTime.framework privado. Declare estas funciones.

 void TMSetAutomaticTimeEnabled(BOOL); void TMSetAutomaticTimeZoneEnabled(BOOL); 

Deshabilitar la configuration automática de la hora

 TMSetAutomatocTimeEnabled(YES); 

Si desea saber en qué estado se encuentran estas configuraciones puede usar estas funciones

 BOOL TMIsAutomaticTimeEnabled(); BOOL TMIsAutomaticTimeZoneEnabled(); 

3) Cambiar la date y la hora actual

Declare estos

 struct timezone { int tz_minutewest; int tz_dsttime; }; void settimeofday(struct timeval*, struct timezone*); 

Esta API es pública en OS X, por lo que puede encontrar la documentation aquí https://developer.apple.com/library/ios/documentation/System/Conceptual/ManPages_iPhoneOS/man2/settimeofday.2.html

Como ejemplo configuraremos el reloj 10 minutos hacia adelante

 struct timeval tv; tv.tv_sec = [[NSDate dateWithTimeIntervalSinceNow:600] timeIntervalSince1970]; tv.tv_usec = 0; settimeofday(&tv, NULL); 

4) Notificar sobre cambio de date / hora

 CFNotificationCenterPostNotification(CFNotificationCenterGetDarwinNotifyCenter(), CFSTR("SignificantTimeChangeNotification"), NULL, NULL, CFNotificationSuspensionBehaviorDeliverImmediately);