UILocalNotification разработано для вещей, которые происходят в будущем, поэтому ошибка в 30 секунд будет в порядке (то есть, если у меня встреча в 15:00, то сообщить мне в 15:00:30 не будет проблемой :)
Если вы хотите большей точности, чем вам, вам нужно, чтобы ваше приложение работало и использовало NSTimer.