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

Por que Instagram desistiu dos planos de 'imitar' TikTok

MrJayW/ Pixabay
Imagem: MrJayW/ Pixabay

Shiona McCallum - Repórter de tecnologia da BBC News

29/07/2022 17h54

O aplicativo da Meta anunciou que revisará seus planos e prometeu 'novas ideias' para o futuro.

O Instagram anunciou a suspensão do lançamento de novas funções do seu aplicativo após as críticas que recebeu de usuários, influenciadores e celebridades.

Entre os novos recursos estava o aumento no conteúdo de vídeos recomendados, em um estilo similar ao aplicativo rival TikTok.

Os modo de exibição da tela e o feed (onde ficam publicações de fotos e vídeos) foram criticados, porque usuários disseram que sentiram que não podiam ver fotos de amigos e familiares como antes.

A Meta, empresa que controla o Instagram, disse que quer "um tempo" para fazer as mudanças corretas.

'Imitando' a concorrência

A mudança do Instagram para mais conteúdo de vídeo parece responder à crescente popularidade do TikTok, onde os usuários postam e assistem a gravações em vez de fotos.

Segundo dados da empresa de análise digital Sensor Tower, o TikTok foi baixado mais de três bilhões de vezes em todo o mundo, tornando-se o primeiro aplicativo não pertencente à Meta a atingir esse número.

O chefe do Instagram, Adam Mosseri, disse ao portal de notícias The Verge que a versão de teste de renovação do aplicativo será descontinuada gradualmente em algumas semanas.

"Estou feliz por termos arriscado. Se não falharmos de vez em quando, não estamos pensando grande o suficiente ou sendo ousados ??o suficiente", disse ele por meio de sua conta no Twitter.

"Definitivamente, precisamos dar um grande o para trás. Precisamos aprender e depois voltaremos com alguma ideia nova. Então, vamos trabalhar nisso", acrescentou.

Mosseri já havia postado um vídeo explicando as mudanças, dizendo que vídeos em tela cheia seriam promovidos em vez de fotos.

Mas depois de algumas críticas duras, ele esclareceu que eles continuarão "apoiando as fotos".

As reações das celebridades

Em resposta ao vídeo inicial de Mosseri, a modelo americana Chrissy Teigen disse que os usuários da plataforma "não querem fazer vídeos".

As irmãs Kim Kardashian e Kylie Jenner também compartilharam uma "petição" online para "fazer que o Instagram volte a ser o Instagram" em seus stories.

Toni Tone, autora e criadora de conteúdo, postou como ficou frustrada com as mudanças e como o Instagram era muito melhor quando ela recebia conteúdo das pessoas que havia escolhido seguir.

"Com base em nossas descobertas e da comunidade, estamos pausando o teste de tela cheia no Instagram para que possamos explorar outras opções e estamos reduzindo temporariamente o número de recomendações que você vê em seu feed para que possamos melhorar a qualidade de sua experiência", disse um porta-voz da Meta à BBC.

"Reconhecemos que as mudanças no aplicativo podem ter um ajuste e, embora pensemos que o Instagram precisa evoluir à medida que o mundo muda, queremos aproveitar o tempo para garantir que faremos isso bem", acrescentou.

- Este texto foi publicado em https://uol-br.atualizarondonia.com/portuguese/salasocial-62355855