/** * 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()); } } }