/**
  * 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;
 }
Beispiel #2
0
/**
 * 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);
    }
}