The other day I noticed that iMessage deactivated on my iPhone 4s ( ios 6.1.1 ) and every time I tried to enable it, it would say “Waiting for activation” and then would eventually fail. I tried all of the normal crap that I read in the forums but nothing worked!
Eventually I decided to poke around on the filesystem ( yes my device is jailbroken ) .. I happened across a file called com.apple.imservice.iMessage.plist and opened it up in my plist editor.. I noticed it had entries for ServerHost which read “init.ess.apple.com” .. so I tried to do a host lookup on that but it wasn’t resolving properly.. so I tested it against apple’s own DNS servers and got back that it was an alias for init.ess.apple.com.edgesuite.net .. in short the solution was simply doing a search and replace for init.ess.apple.com and replacing it with init.ess.apple.com.edgesuite.net.. then while imessage is disabled, I re-uploaded that plist file and re-enabled imessage.. viola, it activated immediately.
This same fix worked on FaceTime as well, the file for that is com.apple.imservice.FaceTime.plist
If you’re not jailbroken then you may be able to iBackupBot to edit your iPhone back up files and then restore that backup to replace the modified plist files.