/** * Trata os erros ocorridos ao enviar a notificação para o Android * * @param object $results * Resultados de falha * @return FailureDevice Dispositivo contendo o motivo da falha no envio da notificação */ private static function handleFailureResult($results) { $obj = new \ArrayObject($results); $iterator = $obj->getIterator(); $failureDevices = array(); // itera sobre os resultados de falha para verificar o motivo, // remove o dispositivo se o token não for mais válido while ($iterator->valid()) { $token = $iterator->key(); $reason = $iterator->current(); if ($reason == GcmError::INVALID_REGISTRATION || $reason == GcmError::NOT_REGISTERED) { DeviceManager::deleteDevice($token); } else { $failureDevices[] = new FailureDevice($token, Device::ANDROID, $reason); } $iterator->next(); } return $failureDevices; }
/** * Remoção de dispositivo */ function deleteDevice() { global $log; $input = null; $app = Slim::getInstance(); try { // obtém os dados informados $input = json_decode($app->request()->getBody()); $log->Debug(sprintf("api - deleteDevice - %s", print_r($input, true))); if (!$input || !isset($input->token)) { throw new \InvalidArgumentException("O identificador do dispositivo não foi informado."); } } catch (Exception $e) { badRequest($e, $log); return; } try { if (DeviceManager::deleteDevice($input->token)) { noContent("Dispositivo removido com sucesso."); } else { notFound("O dispositivo informado não foi encontrado."); } } catch (Exception $e) { internalServerError($e, $log); } }