/**
  * Envia a notificação para dispositivos Android
  *
  * @param Device[] $devices
  *        	Dispositivos
  * @param Message $message
  *        	Notificação
  * @param NotificationResult $notificationResult
  *        	Resultado do envio da notificação
  * @param PushManager $pushManager
  *        	Gerenciador de push
  */
 public static function send($devices, $message, $notificationResult, $pushManager)
 {
     if (iterator_count($devices->getIterator()) > 0) {
         try {
             $gcmAdapter = new GcmAdapter(array('apiKey' => ANDROID_API_KEY));
             // envia as notificações
             $push = new Push($gcmAdapter, $devices, $message);
             $pushManager->add($push);
             $pushManager->push();
             // obtém a resposta do envio do envio
             $response = $gcmAdapter->getResponse();
             // dispositivo que não receberam as notificações e motivo
             $failureResults = $response->getResult(Response::RESULT_ERROR);
             $failureDevices = AndroidPushController::handleFailureResult($failureResults);
             // dispositivo que tiveram seus identificadores modificados
             $canonicalResults = $response->getResult(Response::RESULT_CANONICAL);
             AndroidPushController::handleCanonicalResult($canonicalResults);
             $notificationResult->addDevicesNotNotified($failureDevices);
         } catch (\Exception $e) {
             global $log;
             $log->Error($e);
             $notificationResult->setAndroidFailed(true);
             $notificationResult->setAndroidFailureReason($e->getMessage());
         }
     }
 }
 public function testGetOpenedClient()
 {
     $this->if($this->mockGenerator()->orphanize('__construct'))->and($this->mockClass('\\Sly\\NotificationPusher\\Adapter\\Gcm', '\\Mock'))->and($object = new \Mock\Gcm())->and($this->mockGenerator()->orphanize('__construct'))->and($this->mockGenerator()->orphanize('open'))->and($this->mockClass('\\ZendService\\Google\\Gcm\\Client', '\\Mock\\ZendService'))->and($serviceClient = new \Mock\ZendService\Client())->and($object->getMockController()->getParameters = array())->exception(function () use($object) {
         $object->getOpenedClient(new BaseServiceClient());
     })->isInstanceOf('\\ZendService\\Google\\Exception\\InvalidArgumentException')->message->contains('The api key must be a string and not empty')->when($object = new TestedModel(array('apiKey' => 'test')))->and($object->getOpenedClient($serviceClient));
 }