;(function() { window.createMeasureObserver = (measureName) => { var markPrefix = `_uol-measure-${measureName}-${new Date().getTime()}`; performance.mark(`${markPrefix}-start`); return { end: function() { performance.mark(`${markPrefix}-end`); performance.measure(`uol-measure-${measureName}`, `${markPrefix}-start`, `${markPrefix}-end`); performance.clearMarks(`${markPrefix}-start`); performance.clearMarks(`${markPrefix}-end`); } } }; /** * Gerenciador de eventos */ window.gevent = { stack: [], RUN_ONCE: true, on: function(name, callback, once) { this.stack.push([name, callback, !!once]); }, emit: function(name, args) { for (var i = this.stack.length, item; i--;) { item = this.stack[i]; if (item[0] === name) { item[1](args); if (item[2]) { this.stack.splice(i, 1); } } } } }; var runningSearch = false; var hadAnEvent = true; var elementsToWatch = window.elementsToWatch = new Map(); var innerHeight = window.innerHeight; // timestamp da última rodada do requestAnimationFrame // É usado para limitar a procura por elementos visíveis. var lastAnimationTS = 0; // verifica se elemento está no viewport do usuário var isElementInViewport = function(el) { var rect = el.getBoundingClientRect(); var clientHeight = window.innerHeight || document.documentElement.clientHeight; // renderizando antes, evitando troca de conteúdo visível no chartbeat-related-content if(el.className.includes('related-content-front')) return true; // garante que usa ao mínimo 280px de margem para fazer o lazyload var margin = clientHeight + Math.max(280, clientHeight * 0.2); // se a base do componente está acima da altura da tela do usuário, está oculto if(rect.bottom < 0 && rect.bottom > margin * -1) { return false; } // se o topo do elemento está abaixo da altura da tela do usuário, está oculto if(rect.top > margin) { return false; } // se a posição do topo é negativa, verifica se a altura dele ainda // compensa o que já foi scrollado if(rect.top < 0 && rect.height + rect.top < 0) { return false; } return true; }; var asynxNextFreeTime = () => { return new Promise((resolve) => { if(window.requestIdleCallback) { window.requestIdleCallback(resolve, { timeout: 5000, }); } else { window.requestAnimationFrame(resolve); } }); }; var asyncValidateIfElIsInViewPort = function(promise, el) { return promise.then(() => { if(el) { if(isElementInViewport(el) == true) { const cb = elementsToWatch.get(el); // remove da lista para não ser disparado novamente elementsToWatch.delete(el); cb(); } } }).then(asynxNextFreeTime); }; // inicia o fluxo de procura de elementos procurados var look = function() { if(window.requestIdleCallback) { window.requestIdleCallback(findByVisibleElements, { timeout: 5000, }); } else { window.requestAnimationFrame(findByVisibleElements); } }; var findByVisibleElements = function(ts) { var elapsedSinceLast = ts - lastAnimationTS; // se não teve nenhum evento que possa alterar a página if(hadAnEvent == false) { return look(); } if(elementsToWatch.size == 0) { return look(); } if(runningSearch == true) { return look(); } // procura por elementos visíveis apenas 5x/seg if(elapsedSinceLast < 1000/5) { return look(); } // atualiza o último ts lastAnimationTS = ts; // reseta status de scroll para não entrar novamente aqui hadAnEvent = false; // indica que está rodando a procura por elementos no viewport runningSearch = true; const done = Array.from(elementsToWatch.keys()).reduce(asyncValidateIfElIsInViewPort, Promise.resolve()); // obtém todos os elementos que podem ter view contabilizados //elementsToWatch.forEach(function(cb, el) { // if(isElementInViewport(el) == true) { // // remove da lista para não ser disparado novamente // elementsToWatch.delete(el); // cb(el); // } //}); done.then(function() { runningSearch = false; }); // reinicia o fluxo de procura look(); }; /** * Quando o elemento `el` entrar no viewport (-20%), cb será disparado. */ window.lazyload = function(el, cb) { if(el.nodeType != Node.ELEMENT_NODE) { throw new Error("element parameter should be a Element Node"); } if(typeof cb !== 'function') { throw new Error("callback parameter should be a Function"); } elementsToWatch.set(el, cb); } var setEvent = function() { hadAnEvent = true; }; window.addEventListener('scroll', setEvent, { capture: true, ive: true }); window.addEventListener('click', setEvent, { ive: true }); window.addEventListener('resize', setEvent, { ive: true }); window.addEventListener('load', setEvent, { once: true, ive: true }); window.addEventListener('DOMContentLoaded', setEvent, { once: true, ive: true }); window.gevent.on('allJSLoadedAndCreated', setEvent, window.gevent.RUN_ONCE); // inicia a validação look(); })();
  • AssineUOL
Topo

TIM e Vivo compartilharão rede de celular em milhares de cidades do Brasil

Estúdio Rebimboca/UOL
Imagem: Estúdio Rebimboca/UOL

Helton Simões Gomes

De Tilt, em São Paulo

04/05/2020 10h42

Sem tempo, irmão

  • TIM e Vivo usarão a mesma infraestrutura para oferecer 2G no país
  • Isso ocorrerá em 2.700 cidades onde as duas empresas já atuam
  • Nestes locais, uma delas desativará seu site e seus clientes serão atendidos pela outra
  • As empresas partilharão redes para 3G e 4G em cidades com até 30 mil habitantes
  • Nesse caso, poderá haver expansão da cobertura para até 800 municípios

A Agência Nacional das Telecomunicações (Anatel) aprovou a proposta de TIM e Vivo para compartilharem sua rede de celular em milhares de cidades do Brasil. Com isso, as operadoras terão uma única rede de 2G em todo país e usarão a mesma infraestrutura para 3G e 4G em cerca de 1.600 cidades.

A decisão foi tomada pelo conselho diretor da agência nesta quinta-feira (30) após ter sido aprovada pelo Cade (Conselho istrativo de Defesa Econômica).

A iniciativa tem o nome técnico de RAN Sharing (compartilhamento de rede móvel) e já foi feita outras vezes no país e envolveu até a partilha de radiofrequência, como o acordo entre Claro e Vivo em 2014.

Dessa vez, o acordo entre TIM e Vivo é para que apenas a infraestrutura seja usada por ambas as empresas. Ainda assim, a expectativa na Anatel é parte do espectro usado pelas companhias possa ser usado em outras tecnologias.

"São vários aspectos positivos que decorrem dessa matéria. É um RAN Sharing bastante novidadeiro (...) o que é positivo na medida que libera recursos escassos de radiofrequência para outras tecnologias de o", afirmou o presidente da Anatel, Leonardo Euler de Morais.

O arranjo é dividido em duas partes, uma que compreende o 2G, outra sobre 3G e 4G.

2G em todo país

As empresas terão uma rede única de segunda geração em todo país. Esse modelo será implementado em áreas onde as duas já atuam. Isso quer dizer que esse braço do acordo não tem potencial de ampliar a cobertura de TIM e Vivo. Nessas localidades, uma das operadoras desativará seus sites. A operadora remanescente fornecerá serviços para a base das duas empresas.

O objetivo é reduzir custos e otimizar uso de espectro (como as duas companhias possuem autorização para atuar na faixa de frequência do 2G, se uma delas sai, sobra espaço para outras tecnologias).

Valendo para todo o território nacional, a iniciativa envolve 2.700 cidades, segundo proposta apresentada pelas empresas no fim de 2019.

3G e 4G em pequenas cidades

A segunda parte do contrato é a implantação de infraestrutura única (Single Grid) para 3G e 4G em cidades com menos de 30 mil habitantes. Esse arranjo valerá para municípios onde apenas uma delas operar ou onde ambas já atuem.

No primeiro caso, haverá expansão da cobertura, já que permitirá a uma das companhias iniciar seus serviços onde não possui infraestrutura. Neste caso, as operadoras avaliam que cederão o à outra em mais de 400 municípios. Com isso, há o potencial de as duas chegarem a 800 novas cidades.

No segundo caso, a rede será consolidada com uma solução técnica e operacional específica. Não está claro se haverá desativação de sites como no compartilhamento de 2G.

Essa parte do acordo começará com 50 cidades. Cada empresa será responsável pelo serviço na metade. Após 180 dias da aprovação, TIM e Vivo farão um balanço sobre o programa.

Essa avaliação é importante para decidir qual será a extensão total do acordo. Se der certo, o esse compartilhamento poderá chegar a mais de 1.600 cidades, estimam as duas companhias.