;(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

Novo rival para Netflix: Apple TV+ chegará ao Brasil por R$ 9,90

Jennifer Aniston em "The Morning Show", série original do Apple TV+ - Reprodução
Jennifer Aniston em "The Morning Show", série original do Apple TV+ Imagem: Reprodução

Bruna Souza Cruz

De Tilt, em Cupertino (EUA)*

10/09/2019 14h47Atualizada em 11/09/2019 13h46

Sem tempo, irmão

  • Apple TV+ chegará ao Brasil em 1º de novembro por R$ 9,90 ao mês
  • Serviço virá para iPhone, iPad, Apple TV e iPod touch, e no futuro para Mac e outras
  • Um dos conteúdos é "The Morning Show", com Jennifer Aniston de volta à TV

A Netflix tem a partir de agora mais um rival no Brasil: o Apple TV+, anunciado em março e com detalhes de lançamento divulgados pela Apple nesta terça (10) em evento realizado na sua sede, em Cupertino, nos Estados Unidos. O serviço chegará ao Brasil em 1º de novembro por R$ 9,90 ao mês --nos EUA, custará US$ 4,99.

O serviço será disponibilizado em iPhone, iPad, Apple TV e iPod Touch, e no futuro para Mac e outras plataformas --a empresa mencionou como exemplos as SmarTVs Samsung, Amazon Fire TV, LG, Roku, Sony e Plataformas Vizio. O interessante é que será possível ver online na URL tv.apple.com.

O plano da Apple vale para toda a família: ou seja, a pode ser compartilhada entre até seis usuários. A empresa ainda afirmou que quem adquirir um iPhone, iPad, Apple TV, iPod touch ou Mac ganhará um ano de gratuita do serviço.

A nova estratégia da Apple com o lançamento do Apple TV+ é cada vez mais escancarada: tentar gerar lucro sem depender de produtos físicos.

No evento, a Apple ainda mostrou o trailer de uma das séries, chamada "See", que contará com Jason Momoa ("Game of Thrones") no papel principal.

Outra série aguardada do serviço, "The Morning Show", contará com Steve Carell ("The Office") e Jennifer Aniston, em seu primeiro papel fixo para um seriado desde "Friends".

No lançamento, a maioria das séries da Apple TV+ vai estrear com três episódios, com um novo episódio lançado a cada semana, enquanto algumas séries terão suas temporadas completas disponíveis ao mesmo tempo.

Confira o evento da Apple na íntegra

UOL Tilt

* A repórter viajou a convite da Apple

SIGA TILT NAS REDES SOCIAIS