Per earliestBeginDate documentation, this property can be used to specify the earliest time a background task will be launched by OS. All clear here.
One small note here. The API REALLY does mean "the earliest time". That is, you are telling the system "do not run this task BEFORE this time", NOT "please run the task around this time". On most device, "background task time" happens on a fairly consistent schedule (typically, "in the middle of the night while your device charging") and all manipulating "earliestBeginDate" can do is push your task further away from that point.
The second most common mistake I see developer make is scheduling tasks in a way that inadvertently guarantees that task will not run. For example, if your app is used every day and every day you set "earliestBeginDate" as "6am tomorrow" then, on most device, that task will never execute.
I'd also suggest reading through this post for a quick overview of other issues that commonly trip up developers.
__
Kevin Elliott
DTS Engineer, CoreOS/Hardware