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

WhatsApp, Insta e Facebook pagos? Meta estuda cobrar por recursos extras

WhatsApp, Instagram e Facebook pertencem todos à empresa de Mark Zuckerberg: Meta - Reuters
WhatsApp, Instagram e Facebook pertencem todos à empresa de Mark Zuckerberg: Meta Imagem: Reuters

Colaboração com Tilt, de São Paulo

01/09/2022 11h35

Facebook, Instagram e WhatsApp poderão ter recursos pagos. O grupo Meta, proprietário das três plataformas, montou uma equipe para realizar estudos e desenvolver alguns desses serviços, segundo informações obtidas pelo site especializado em tecnologia The Verge.

A reportagem teve o a um memorando interno da Meta, liderada por Mark Zuckerberg, que registra a criação de uma nova divisão na companhia chamada "Novas Experiências Monetizadas". Atualmente, o Instagram e o Facebook já trabalham com algumas funcionalidades pagas, mas elas não são voltadas para o público em geral — são mais para criadores de conteúdo.

De acordo com o site, a nova iniciativa da Meta será chefiada por Pratiti Raychoudhury, que era responsável pela área de pesquisa da empresa. Não está claro ainda, no entanto, que tipo de monetização extra poderá ser feita dentro das três plataformas. Uma dica pode ser entendida a partir do que disse outro executivo da empresa John Hegeman, vice-presidente de monetização, que supervisiona o novo departamento.

Em entrevista ao The Verge, ele afirmou que a Meta está "de olho" no que estão fazendo concorrentes como o Twitter, o Snapchat e o Telegram. Todos eles lançaram recentemente s mensais que dão o a serviços exclusivos.

"Creio que estamos vendo oportunidades para construir novos tipos de produtos, atividades e experiências pelas quais as pessoas teriam vontade de pagar e estariam empolgadas por pagar", afirmou Hegeman.

A nova divisão é a primeira incursão mais firme da Meta na criação de recursos pagos em seus principais aplicativos sociais, de acordo com a reportagem.

Por que começar a cobrar agora?

Com aplicativos gratuitos, o grosso das receitas financeiras da Meta tem vindo do mercado publicitário há anos. Ao cobrar dos anunciantes, a gigante da tecnologia conseguia evitar cobrar também dos frequentadores.

Porém, o investimento em publicidade digital como um todo caiu recentemente, em especial depois que a Apple ou a oferecer no sistema operacional iOS uma função para que as pessoas não sejam rastreadas pelos apps que elas usam. Dessa forma, ficou mais difícil vender publicidade direcionada em plataformas digitais.

Em julho, pela primeira vez na história, o Facebook registrou queda nos rendimentos. Segundo o Verge, só a mudança promovida pela Apple no iOS teve um custo de US$ 10 bilhões (R$ 52 bilhões) para a Meta no ano ado.

Hegeman afirmou que os serviços pagos não devem se tornar uma fonte imediata de renda significativa para a empresa, mas colocou um "horizonte de cinco anos" para que eles possam fazer a diferença. Além disso, ressaltou a importância da iniciativa como uma "diversificação" dos negócios.