full implementation of GcmSender