Refactored: use doRegisterGCM() for initial registration