{"id":8528,"date":"2020-08-19T07:47:00","date_gmt":"2020-08-19T07:47:00","guid":{"rendered":"https:\/\/tenjin.com\/?p=8528"},"modified":"2024-02-27T10:55:39","modified_gmt":"2024-02-27T10:55:39","slug":"ios-14-mmp-free-publisher-guide","status":"publish","type":"post","link":"https:\/\/tenjin.com\/pt\/blog\/ios-14-mmp-free-publisher-guide\/","title":{"rendered":"Prepara\u00e7\u00e3o para o iOS 14: guia do editor sem MMP com Kevin Bravo, criador do Elixir"},"content":{"rendered":"<p>Um m\u00eas antes da\u00a0<a href=\"https:\/\/blog.tenjin.com\/new-rules-of-attribution-ios-14\/\">lan\u00e7amento do iOS 14<\/a>Ainda h\u00e1 muitas especula\u00e7\u00f5es sobre o que se vai passar a seguir para <a href=\"https:\/\/docs.tenjin.com\/docs\/mmp\">MMP<\/a>s. Em que medida \u00e9 que o seu papel vai mudar? Os anunciantes podem continuar a pagar 1-5 c\u00eantimos por cada instala\u00e7\u00e3o rastreada paga no iOS, apesar de j\u00e1 n\u00e3o ter granularidade ao n\u00edvel do utilizador?  A Apple permitir\u00e1 que os MMPs validem os valores de convers\u00e3o, embora isso n\u00e3o tenha sido mencionado em nenhuma documenta\u00e7\u00e3o da Apple? Embora essas quest\u00f5es n\u00e3o sejam claras, decidimos abordar coisas que os desenvolvedores podem fazer hoje, sem o envolvimento de MMPs.<\/p>\n\n\n\n<p>Sent\u00e1mo-nos com o cofundador da ag\u00eancia de crescimento m\u00f3vel&nbsp;<a href=\"https:\/\/2ndpotion.com\/\">2\u00aa Po\u00e7\u00e3o<\/a>,&nbsp;<a href=\"https:\/\/www.linkedin.com\/in\/kevinbravo\/\">Kevin Bravo<\/a>Kevin criou a primeira solu\u00e7\u00e3o de c\u00f3digo aberto que interage com a SKAdNetwork da Apple, chamada SKAdNetwork, para falar de coisas que os programadores podem utilizar atualmente e que est\u00e3o documentadas pela Apple. Kevin criou a primeira solu\u00e7\u00e3o de c\u00f3digo aberto que interage com a SKAdNetwork da Apple, chamada&nbsp;<a href=\"https:\/\/github.com\/2ndpotion\/ElixiriOS\">Elixir<\/a>Por isso, sabemos que ele \u00e9 perfeito para este tipo de conversa.<\/p>\n\n\n\n<p>Eis o que vamos abordar hoje com o Kevin.<\/p>\n\n\n\n<p>1)&nbsp;<strong>Para programadores e designers de jogos<\/strong>, o pop-up do iOS pede consentimento para partilhar o IDFA do utilizador - &nbsp;<em>AppTrackingTranspar\u00eancia<\/em>&nbsp;m\u00e9todo.<\/p>\n\n\n\n<p>2)&nbsp;<strong>Para os programadores<\/strong>uma vis\u00e3o geral da nova estrutura de atribui\u00e7\u00e3o da Apple - &nbsp;<em>SKAdNetwork<\/em>.<\/p>\n\n\n\n<p>2.1)&nbsp;<strong>Para os programadores<\/strong>, atribui\u00e7\u00e3o de instala\u00e7\u00f5es - integrar&nbsp;<em>registerAppForAdNetworkAttribution()<\/em>m\u00e9todo<\/p>\n\n\n\n<p>2.2)&nbsp;<strong>Para os programadores<\/strong>, atribuir eventos p\u00f3s-instala\u00e7\u00e3o - integrar&nbsp;<em>updateConversionValue(_:)<\/em>m\u00e9todo<\/p>\n\n\n\n<p>2.3)&nbsp;<strong>Para os gestores da UA<\/strong>Compreender como a Apple comunica instala\u00e7\u00f5es e eventos p\u00f3s-instala\u00e7\u00e3o \u00e0 rede de publicidade - Postbacks e temporizadores<\/p>\n\n\n\n<p>3)<strong>&nbsp;Para toda a equipa debater ideias<\/strong>o que poderia ser melhor&nbsp;<strong>-&nbsp;<\/strong>Melhores pr\u00e1ticas e problemas actuais<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">1) Pedir aos utilizadores que partilhem o seu IDFA - Integrar<a href=\"https:\/\/developer.apple.com\/documentation\/apptrackingtransparency\">&nbsp;Rastreio de aplica\u00e7\u00f5esTranspar\u00eancia<\/a><\/h2>\n\n\n\n<p><strong>Kevin:&nbsp;<\/strong>AppTrackingTransparency \u00e9 uma estrutura dispon\u00edvel para o iOS 14 que permite aos programadores de aplica\u00e7\u00f5es pedir permiss\u00e3o para seguir o utilizador. Esta permiss\u00e3o \u00e9 necess\u00e1ria para aceder ao IDFA do utilizador para fins de atribui\u00e7\u00e3o.<\/p>\n\n\n\n<p>Para o integrar e utilizar, \u00e9 necess\u00e1rio pedir ao utilizador que aceda ao seu IDFA com este popup:<img data-recalc-dims=\"1\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/s3.amazonaws.com\/tenjin-blog\/2020\/08\/iOS14_post-img--1-.jpg?ssl=1\"><\/p>\n\n\n\n<p>Se o utilizador aceitar o seguimento, ter\u00e1 a possibilidade de pedir o seu IDFA. Caso contr\u00e1rio, o IDFA ser\u00e1 0000-0000-0000-0000-0000.<\/p>\n\n\n\n<p>N\u00e3o se esque\u00e7a de que n\u00e3o poder\u00e1 pedir autoriza\u00e7\u00e3o se o utilizador tiver o LAT (Limited Ad Tracking) ativado.<\/p>\n\n\n\n<p><strong>P: Quantas vezes posso mostrar um pop-up nativo?<\/strong><\/p>\n\n\n\n<p><strong>Kevin:&nbsp;<\/strong>S\u00f3 o pode mostrar uma vez por dispositivo.<\/p>\n\n\n\n<p><strong>P: Posso voltar a pedir o consentimento do utilizador se este tiver sido rejeitado inicialmente?<\/strong><\/p>\n\n\n\n<p><strong>Kevin:&nbsp;<\/strong>Se o utilizador j\u00e1 tiver visto este popup, n\u00e3o poder\u00e1 voltar a mostr\u00e1-lo.<\/p>\n\n\n\n<p><strong>P: Posso mostrar o meu pop-up personalizado antes do nativo?<\/strong><\/p>\n\n\n\n<p><strong>Kevin:&nbsp;<\/strong>Pode decidir quando \u00e9 que vai apresentar esta janela de pop-up, o que significa que pode publicar uma janela de pop-up adicional antes.<\/p>\n\n\n\n<p>Desta forma, pode decidir mostrar o popup de permiss\u00e3o apenas se o utilizador disser sim ao seu popup personalizado<strong>.<\/strong><\/p>\n\n\n\n<p>Esta estrat\u00e9gia j\u00e1 \u00e9 utilizada por muitas empresas para enviar pedidos de notifica\u00e7\u00e3o e permitir-lhe-\u00e1 ter uma segunda oportunidade para pedir autoriza\u00e7\u00e3o.<\/p>\n\n\n\n<p><strong>P: O que acontece se um programador de aplica\u00e7\u00f5es n\u00e3o integrar o AppTrackingTransparency?<\/strong><\/p>\n\n\n\n<p><strong>Kevin:&nbsp;<\/strong>Se n\u00e3o quiser\/precisar de pedir o IDFA, pode decidir n\u00e3o mostrar este popup.<\/p>\n\n\n\n<p>Isto significa que n\u00e3o ter\u00e1 acesso ao seu IDFA (ser\u00e1 apresentado como 0000-0000-0000-0000) e que as redes de publicidade tamb\u00e9m n\u00e3o ter\u00e3o acesso ao mesmo.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">2) Vis\u00e3o geral da nova estrutura de atribui\u00e7\u00e3o da Apple - &nbsp;<a href=\"https:\/\/developer.apple.com\/documentation\/storekit\/skadnetwork\">SKAdNetwork<\/a><\/h2>\n\n\n\n<p><strong>Kevin:<\/strong>&nbsp;A Apple fornece uma solu\u00e7\u00e3o de atribui\u00e7\u00e3o an\u00f3nima denominada&nbsp;<strong>SKADNetwork<\/strong>permitindo que as aplica\u00e7\u00f5es continuem a rastrear instala\u00e7\u00f5es provenientes de diferentes redes de publicidade, sem comprometer o anonimato dos utilizadores.<\/p>\n\n\n\n<p>Ao utilizar a SKADNetwork, \u00e9 anexada uma assinatura a cada clique no an\u00fancio. Quando o utilizador abrir a sua aplica\u00e7\u00e3o pela primeira vez, a Apple poder\u00e1 verificar se prov\u00e9m de um an\u00fancio espec\u00edfico com esta assinatura.<\/p>\n\n\n\n<p>De seguida, \u00e9 enviado um postback para a rede de publicidade para atribuir uma nova instala\u00e7\u00e3o.<\/p>\n\n\n\n<p>A assinatura n\u00e3o cont\u00e9m quaisquer dados de identifica\u00e7\u00e3o, mantendo a privacidade ao m\u00e1ximo ao impossibilitar a associa\u00e7\u00e3o de uma instala\u00e7\u00e3o a um utilizador espec\u00edfico.<\/p>\n\n\n\n<p>Para integrar o SKADNetwork, \u00e9 necess\u00e1rio chamar dois m\u00e9todos:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/developer.apple.com\/documentation\/storekit\/skadnetwork\/2943654-registerappforadnetworkattributi\">registarAppForAdNetworkAttribution<\/a>(): Este m\u00e9todo deve ser chamado no primeiro lan\u00e7amento e registar o utilizador para atribui\u00e7\u00e3o. Se o utilizador for proveniente de um an\u00fancio assinado, ser\u00e1 disparado um postback nas horas seguintes, notificando a rede de an\u00fancios da instala\u00e7\u00e3o desta aplica\u00e7\u00e3o.<\/li>\n\n\n\n<li><a href=\"https:\/\/developer.apple.com\/documentation\/storekit\/skadnetwork\/3566697-updateconversionvalue\">updateConversionValue(_:)<\/a>&nbsp;Este m\u00e9todo deve ser chamado sempre que se pretenda atualizar o valor de convers\u00e3o associado a este utilizador espec\u00edfico. Pode chamar este m\u00e9todo as vezes que quiser, mas o valor de convers\u00e3o s\u00f3 ser\u00e1 atualizado se for superior ao anterior.<\/li>\n<\/ul>\n\n\n\n<p>Para a monetiza\u00e7\u00e3o de an\u00fancios, os programadores t\u00eam de determinar, antecipadamente, as redes de an\u00fancios que v\u00e3o utilizar para a monetiza\u00e7\u00e3o e especific\u00e1-las dentro da aplica\u00e7\u00e3o atrav\u00e9s do plist, tal como \u00e9 especificado em&nbsp;<a href=\"https:\/\/developer.apple.com\/documentation\/storekit\/skadnetwork\/configuring_the_participating_apps\">esta documenta\u00e7\u00e3o<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">2.1) Instala\u00e7\u00f5es de atributos - Integrar de&nbsp;<a href=\"https:\/\/developer.apple.com\/documentation\/storekit\/skadnetwork\/2943654-registerappforadnetworkattributi\">registarAppForAdNetworkAttribution<\/a><\/h2>\n\n\n\n<p><strong>Kevin:<\/strong>&nbsp;Ao chamar registerAppForAdNetworkAttribution no primeiro lan\u00e7amento da aplica\u00e7\u00e3o, est\u00e1 a fazer tudo o que \u00e9 necess\u00e1rio para ativar a atribui\u00e7\u00e3o da instala\u00e7\u00e3o da aplica\u00e7\u00e3o com a SKADNetwork.<\/p>\n\n\n\n<p>No entanto, a atribui\u00e7\u00e3o de instala\u00e7\u00f5es s\u00f3 ser\u00e1 poss\u00edvel se a rede de publicidade estiver a assinar os seus an\u00fancios com a SKADNetwork.<\/p>\n\n\n\n<p>No que respeita \u00e0 publicidade, os programadores devem certificar-se de que as redes de publicidade t\u00eam a SKADNetwork integrada para permitir a atribui\u00e7\u00e3o e os postbacks.<\/p>\n\n\n\n<p>Para facilitar as coisas, est\u00e1 dispon\u00edvel uma lista de todos os IDs de redes de publicidade dispon\u00edveis&nbsp;<a href=\"https:\/\/github.com\/skadnetwork\/ad-network-ids\">aqui<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">2.2) Atribuir eventos p\u00f3s-instala\u00e7\u00e3o - Integrar&nbsp;<a href=\"https:\/\/developer.apple.com\/documentation\/storekit\/skadnetwork\/3566697-updateconversionvalue\">updateConversionValue(_:)<\/a><\/h2>\n\n\n\n<p><strong>Kevin:<\/strong>&nbsp;\u00c9 poss\u00edvel atribuir um valor de convers\u00e3o a uma instala\u00e7\u00e3o espec\u00edfica. Este \u00e9 um valor num\u00e9rico entre 0 e 63.<\/p>\n\n\n\n<p>Trata-se de um \"sinal\" que o ajudar\u00e1 a compreender o valor deste utilizador espec\u00edfico, sem lhe dar uma forma de o identificar.<\/p>\n\n\n\n<p>As redes de publicidade podem utilizar estas informa\u00e7\u00f5es para compreender o valor de cada instala\u00e7\u00e3o para a sua empresa. Este sinal pode ajudar as redes de publicidade a identificar melhores p\u00fablicos para apresentar os seus an\u00fancios e melhorar o desempenho das suas campanhas.<\/p>\n\n\n\n<p><strong>P: Quando \u00e9 que se deve utilizar updateConversionValue(_:)?<\/strong><\/p>\n\n\n\n<p><strong>Kevin:<\/strong>&nbsp;O valor de convers\u00e3o pode ser atualizado v\u00e1rias vezes para o mesmo utilizador, mas existem algumas limita\u00e7\u00f5es:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>S\u00f3 \u00e9 poss\u00edvel atualizar o valor de convers\u00e3o com um valor superior ao da chamada anterior (1-&gt;2 mas n\u00e3o 3-&gt;2)<\/li>\n\n\n\n<li>Um valor limitado entre 0-63<\/li>\n<\/ul>\n\n\n\n<p>Os valores de convers\u00e3o devem ser utilizados porque fornecem sinais valiosos \u00e0s suas redes de publicidade. Tamb\u00e9m lhe permite<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Analisar o comportamento essencial na aplica\u00e7\u00e3o ap\u00f3s a instala\u00e7\u00e3o a partir de uma campanha\/canal\/pa\u00eds espec\u00edfico<\/li>\n\n\n\n<li>Ofere\u00e7a pontos de dados adicionais \u00e0 rede de publicidade que pode utilizar para identificar grupos valiosos para o seu jogo e otimizar o desempenho das suas campanhas.<\/li>\n<\/ul>\n\n\n\n<p>\u00c9 necess\u00e1rio refletir sobre a forma como definir\u00e1 cada valor de convers\u00e3o para tirar o m\u00e1ximo partido da SKADNetwork.<\/p>\n\n\n\n<p>Existem diferentes abordagens para a gest\u00e3o dos valores de convers\u00e3o:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Acompanhar as receitas<\/li>\n\n\n\n<li>Por exemplo, o valor de convers\u00e3o 1 \u00e9 0,1 EUR, 50 \u00e9 5,0 EUR<\/li>\n\n\n\n<li>Eventos de pista<\/li>\n\n\n\n<li>Por exemplo, level1_completed = valor de convers\u00e3o 1<\/li>\n\n\n\n<li>Acompanhar as receitas e a evolu\u00e7\u00e3o dos eventos<\/li>\n\n\n\n<li>Por exemplo, Valor de convers\u00e3o 10 = lvl5_completed e gastar 1EUR<\/li>\n\n\n\n<li>etc...<\/li>\n<\/ul>\n\n\n\n<p>Para os eventos de receita + progresso, criei uma tabela de convers\u00e3o que permite definir cada evento que vai acompanhar e compreender o valor de convers\u00e3o que vai enviar.<img data-recalc-dims=\"1\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/s3.amazonaws.com\/tenjin-blog\/2020\/08\/Screenshot-at-Aug-18-16-43-54.png?ssl=1\"><\/p>\n\n\n\n<p>Como se pode ver na folha de c\u00e1lculo, estamos a utilizar bin\u00e1rios para converter eventos em valores de convers\u00e3o:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Cada valor de convers\u00e3o traduz-se num conjunto de 6 valores bin\u00e1rios.<\/li>\n\n\n\n<li>Os primeiros 3 valores bin\u00e1rios representam a receita para este utilizador espec\u00edfico (por exemplo, compra &gt; 10$ = \"101\")<\/li>\n\n\n\n<li>Os \u00faltimos 3 valores bin\u00e1rios representam o progresso (por exemplo, 10 n\u00edveis conclu\u00eddos = \"011\")<\/li>\n\n\n\n<li>Ao combinar os dois conjuntos de valores bin\u00e1rios, obtemos um valor de convers\u00e3o (por exemplo, \"<strong>101001<\/strong>\" converte para o valor de convers\u00e3o&nbsp;<strong>43<\/strong>)<\/li>\n<\/ul>\n\n\n\n<p>Pode encontrar a folha de c\u00e1lculo&nbsp;<a href=\"https:\/\/docs.google.com\/spreadsheets\/d\/1jrRrTP6YX62of2WaJamtPBSWZJ-97IpTWn0IwTroH6Y\/edit?usp=drive_web&amp;ouid=110875297429935682272\">aqui<\/a>:<\/p>\n\n\n\n<p><strong>P: O que \u00e9 o Elixir e como \u00e9 que o ajuda?<\/strong><\/p>\n\n\n\n<p><strong>Kevin<\/strong>: Os valores de convers\u00e3o s\u00f3 podem ser enviados a partir da aplica\u00e7\u00e3o, o que torna complexo ajustar a forma como rastreia os valores de convers\u00e3o sem a atualizar.<\/p>\n\n\n\n<p>Elixir \u00e9 um&nbsp;<strong>SDK de c\u00f3digo aberto<\/strong>&nbsp;que lhe permite definir e atualizar os seus valores de convers\u00e3o sem atualizar a aplica\u00e7\u00e3o ap\u00f3s cada altera\u00e7\u00e3o.<\/p>\n\n\n\n<p>Como funciona:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>A tabela de convers\u00e3o \u00e9 definida por meio de uma das abordagens dispon\u00edveis (receita \/ mista \/ evolu\u00e7\u00e3o)<\/li>\n\n\n\n<li>Armazena-o no seu servidor como um ficheiro JSON<\/li>\n\n\n\n<li>Integrar o Elixir SDK, rastreando todos os eventos dispon\u00edveis na aplica\u00e7\u00e3o<\/li>\n\n\n\n<li>No primeiro lan\u00e7amento, o Elixir SDK solicitar\u00e1 o JSON e far\u00e1 corresponder os valores de convers\u00e3o \u00e0s ac\u00e7\u00f5es realizadas pelo utilizador em tempo real<\/li>\n\n\n\n<li>O Elixir SDK actualizar\u00e1 o conversionValue com base na tabela que criou<\/li>\n<\/ol>\n\n\n\n<p><a href=\"https:\/\/github.com\/2ndpotion\/ElixiriOS\">O SDK est\u00e1 dispon\u00edvel aqui<\/a><\/p>\n\n\n\n<p>Pode ver um exemplo de&nbsp;<a href=\"https:\/\/jsonkeeper.com\/b\/9J5B\">tabela de convers\u00e3o JSON<\/a>. Este \u00e9 o documento que o Elixir l\u00ea para gerar o valor de convers\u00e3o a seguir ap\u00f3s as ac\u00e7\u00f5es de cada utilizador.<\/p>\n\n\n\n<p>Atualmente, s\u00f3 existe um tipo de tabela dispon\u00edvel&nbsp;<a href=\"https:\/\/docs.google.com\/spreadsheets\/d\/1jrRrTP6YX62of2WaJamtPBSWZJ-97IpTWn0IwTroH6Y\/edit?usp=drive_web&amp;ouid=110875297429935682272\">(liga\u00e7\u00e3o ao quadro)<\/a>&nbsp;para Elixir. \u00c0 medida que os programadores colaboram no projeto, todos os modelos ser\u00e3o facilmente abrangidos (bin\u00e1rio de receitas de an\u00fancios, carimbo de data\/hora, geo, etc.)<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">2.3) Compreender como a Apple comunica instala\u00e7\u00f5es e eventos p\u00f3s-instala\u00e7\u00e3o \u00e0 rede de publicidade - Postbacks e temporizadores<\/h2>\n\n\n\n<p><strong>P: Pode explicar como funciona o temporizador de postbacks em updateConversionValue(_:)?<\/strong><\/p>\n\n\n\n<p><strong>Kevin<\/strong>: Existe uma complexidade adicional na forma como os postbacks s\u00e3o agendados.<\/p>\n\n\n\n<p>Dois temporizadores ocorrem da seguinte forma:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Temporizador de 24 horas: pode ser reiniciado v\u00e1rias vezes e tem uma dura\u00e7\u00e3o definida de 24 horas<\/li>\n\n\n\n<li>Temporizador aleat\u00f3rio: uma vez iniciado, n\u00e3o pode ser reiniciado. A dura\u00e7\u00e3o \u00e9 aleat\u00f3ria, entre 0-24 horas<\/li>\n<\/ul>\n\n\n\n<p>Quando se ativa registerAppForAdNetworkAttribution(), o temporizador de 24 horas \u00e9 iniciado. Se decidir ativar&nbsp;<a href=\"https:\/\/developer.apple.com\/documentation\/storekit\/skadnetwork\/3566697-updateconversionvalue\">updateConversionValue(_:)<\/a>o temporizador 1 \u00e9 reposto a zero e recome\u00e7a.<\/p>\n\n\n\n<p>Sempre que dispara&nbsp;<a href=\"https:\/\/developer.apple.com\/documentation\/storekit\/skadnetwork\/3566697-updateconversionvalue\">updateConversionValue(_:)<\/a>, o temporizador de 24 horas ser\u00e1 reiniciado.<\/p>\n\n\n\n<p>Suponhamos que n\u00e3o despede&nbsp;<a href=\"https:\/\/developer.apple.com\/documentation\/storekit\/skadnetwork\/3566697-updateconversionvalue\">updateConversionValue(_:)<\/a>&nbsp;antes de o temporizador de 24 horas expirar, ser\u00e1 iniciado um temporizador aleat\u00f3rio. Uma vez iniciado o temporizador aleat\u00f3rio, j\u00e1 n\u00e3o \u00e9 poss\u00edvel atualizar o valor de convers\u00e3o.<\/p>\n\n\n\n<p>No final do temporizador aleat\u00f3rio, o postback \u00e9 enviado para a rede de publicidade. Este postback pode incluir (ou n\u00e3o) um valor de convers\u00e3o (ser\u00e1 o valor mais recente que definiu para este utilizador espec\u00edfico)<img data-recalc-dims=\"1\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/s3.amazonaws.com\/tenjin-blog\/2020\/08\/scheme_11.jpg?ssl=1\"><\/p>\n\n\n\n<p><em>A documenta\u00e7\u00e3o da Apple n\u00e3o especifica um limite de tempo ou de ocorr\u00eancias para updateConversionValue. Isto significa que, desde que o utilizador venha a cada 24 horas, pode enviar um novo conversionValue at\u00e9 63 vezes (com base nas limita\u00e7\u00f5es descritas na pergunta \"Quando deve utilizar updateConversionValue(_:)?<\/em><\/p>\n\n\n\n<p><strong>P: Que dados est\u00e3o as redes de publicidade a receber da SKADNetwork?<\/strong><\/p>\n\n\n\n<p><strong>Kevin<\/strong>: As redes de an\u00fancios receber\u00e3o um postback para cada instala\u00e7\u00e3o com o seguinte aspeto:<img decoding=\"async\" src=\"https:\/\/lh5.googleusercontent.com\/Xy9AXKm1arTL1LR5HNNBKjezwgcne0Cv5w98MtYnehf3XFC2ph0xpFXT8qzEn_ysA8RsJrd-XCFLLq0XIbYpzL_W3QR2BtAGF3TmEVB6AzFPEM4G3uJbi_fmOoaZ0eN834G5kNJf\"><\/p>\n\n\n\n<p>Alguns valores s\u00e3o opcionais (por exemplo, o valor de convers\u00e3o) e podem n\u00e3o ser inclu\u00eddos no postback.<\/p>\n\n\n\n<p>Mais pormenores sobre este postback e sobre a forma como as redes de an\u00fancios podem verificar a autenticidade de cada instala\u00e7\u00e3o&nbsp;<a href=\"https:\/\/developer.apple.com\/documentation\/storekit\/skadnetwork\/verifying_an_install_validation_postback\">aqui<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">3) Melhores pr\u00e1ticas e pontos problem\u00e1ticos existentes<\/h2>\n\n\n\n<p><strong>P: Quais s\u00e3o as suas recomenda\u00e7\u00f5es quando utiliza updateConversionValue(_:)?<\/strong><\/p>\n\n\n\n<p><strong>Kevin:<\/strong>&nbsp;\u00c9 necess\u00e1rio determinar as ac\u00e7\u00f5es mais valiosas que os utilizadores podem realizar na sua primeira sess\u00e3o e nos 1 a 3 dias seguintes.<\/p>\n\n\n\n<p>Um evento de valor d\u00e1-lhe uma boa indica\u00e7\u00e3o do envolvimento dos utilizadores na sua aplica\u00e7\u00e3o. A compra \u00e9 o sinal mais elevado que pode obter.<\/p>\n\n\n\n<p>De seguida, deve ordenar os eventos do sinal mais baixo para o mais alto. Esta lista de eventos ajud\u00e1-lo-\u00e1 a definir a tabela de convers\u00e3o.<\/p>\n\n\n\n<p><strong>P: Quais s\u00e3o os outros pontos problem\u00e1ticos que os programadores podem enfrentar quando trabalham com a SKAdNetwork?<\/strong><\/p>\n\n\n\n<p><strong>Kevin:&nbsp;<\/strong>Existem diferentes desafios que ter\u00e1 de enfrentar quando trabalhar com a SKADNetwork:<\/p>\n\n\n\n<p>-&nbsp;<strong>Gest\u00e3o do carimbo de data\/hora da instala\u00e7\u00e3o:&nbsp;<\/strong>A SKADNetwork aleatoriza a hora a que o postback \u00e9 enviado para a rede de publicidade e n\u00e3o inclui um carimbo de data\/hora de instala\u00e7\u00e3o. Isto torna complicado determinar quando ocorre a instala\u00e7\u00e3o. Torna-se ainda mais dif\u00edcil se decidir enviar valores de convers\u00e3o ap\u00f3s as primeiras 24 horas.<\/p>\n\n\n\n<p>Quanto mais tempo esperar antes de parar para atualizar os valores de convers\u00e3o, mais larga fica a janela de tempo de instala\u00e7\u00e3o.<\/p>\n\n\n\n<p>Uma solu\u00e7\u00e3o poderia ser utilizar alguns dos bits do valor de convers\u00e3o para definir o dia da instala\u00e7\u00e3o e limitar o n\u00famero de dias em que actualizar\u00e1 o valor de convers\u00e3o (por exemplo, tr\u00eas dias).<\/p>\n\n\n\n<p>-&nbsp;<strong>Recupera\u00e7\u00e3o de dados \/ verifica\u00e7\u00e3o de assinaturas:&nbsp;<\/strong>Atualmente, apenas as redes de publicidade ter\u00e3o acesso \u00e0 instala\u00e7\u00e3o de postbacks. Ainda n\u00e3o \u00e9 claro quais as redes de publicidade que permitir\u00e3o aos anunciantes aceder aos dados da SKADNetwork. Solicitar estes dados ser\u00e1 vital, uma vez que ser\u00e1 poss\u00edvel&nbsp;<a href=\"https:\/\/developer.apple.com\/documentation\/storekit\/skadnetwork\/verifying_an_install_validation_postback\">verificar a autenticidade das instala\u00e7\u00f5es com uma assinatura<\/a>.<\/p>\n\n\n\n<p>-&nbsp;<strong>Gerir a atribui\u00e7\u00e3o do IDFA + SKADNetwork:&nbsp;<\/strong>Como \u00e9 que se trabalha com a SKADNetwork e se continua a medir a atribui\u00e7\u00e3o ao n\u00edvel do utilizador que optou pelo rastreio IDFA? Este modelo misto ser\u00e1 complexo e exigir\u00e1 um excelente fluxo de trabalho para evitar a deduplica\u00e7\u00e3o dos registos de instala\u00e7\u00e3o.<\/p>","protected":false},"excerpt":{"rendered":"<p>One month before the\u00a0release of iOS 14, there are still many speculations around what\u2019s happening next for MMPs. How much will their role change? Are advertisers still ok paying 1-5 cents for each paid tracked install on iOS, even though it no longer has user-level granularity? \u00a0Will Apple allow MMPs to validate Conversion Values though&#8230;<\/p>","protected":false},"author":5,"featured_media":8476,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[5,8],"tags":[],"class_list":["post-8528","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-best-practices","category-mobile-marketing-trends"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.1.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Preparing for iOS 14: MMP-free publisher guide with Kevin Bravo, creator of Elixir - Tenjin<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/tenjin.com\/pt\/blog\/ios-14-mmp-free-publisher-guide\/\" \/>\n<meta property=\"og:locale\" content=\"pt_PT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Preparing for iOS 14: MMP-free publisher guide with Kevin Bravo, creator of Elixir - Tenjin\" \/>\n<meta property=\"og:description\" content=\"One month before the\u00a0release of iOS 14, there are still many speculations around what\u2019s happening next for MMPs. How much will their role change? Are advertisers still ok paying 1-5 cents for each paid tracked install on iOS, even though it no longer has user-level granularity? \u00a0Will Apple allow MMPs to validate Conversion Values though...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/tenjin.com\/pt\/blog\/ios-14-mmp-free-publisher-guide\/\" \/>\n<meta property=\"og:site_name\" content=\"Tenjin\" \/>\n<meta property=\"article:published_time\" content=\"2020-08-19T07:47:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-02-27T10:55:39+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/tenjin.com\/wp-content\/uploads\/2023\/09\/podcast_cover.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1920\" \/>\n\t<meta property=\"og:image:height\" content=\"1080\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Roman Garbar\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Roman Garbar\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tempo estimado de leitura\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/tenjin.com\/ja\/blog\/ios-14-mmp-free-publisher-guide\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/tenjin.com\/ja\/blog\/ios-14-mmp-free-publisher-guide\/\"},\"author\":{\"name\":\"Roman Garbar\",\"@id\":\"https:\/\/tenjin.com\/ru\/#\/schema\/person\/bbb089a8de6e9a87d102755431201f84\"},\"headline\":\"Preparing for iOS 14: MMP-free publisher guide with Kevin Bravo, creator of Elixir\",\"datePublished\":\"2020-08-19T07:47:00+00:00\",\"dateModified\":\"2024-02-27T10:55:39+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/tenjin.com\/ja\/blog\/ios-14-mmp-free-publisher-guide\/\"},\"wordCount\":2013,\"image\":{\"@id\":\"https:\/\/tenjin.com\/ja\/blog\/ios-14-mmp-free-publisher-guide\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/tenjin.com\/wp-content\/uploads\/2023\/09\/podcast_cover.png\",\"articleSection\":[\"Best practices\",\"Mobile Marketing Trends\"],\"inLanguage\":\"pt-PT\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/tenjin.com\/ja\/blog\/ios-14-mmp-free-publisher-guide\/\",\"url\":\"https:\/\/tenjin.com\/ja\/blog\/ios-14-mmp-free-publisher-guide\/\",\"name\":\"Preparing for iOS 14: MMP-free publisher guide with Kevin Bravo, creator of Elixir - Tenjin\",\"isPartOf\":{\"@id\":\"https:\/\/tenjin.com\/ru\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/tenjin.com\/ja\/blog\/ios-14-mmp-free-publisher-guide\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/tenjin.com\/ja\/blog\/ios-14-mmp-free-publisher-guide\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/tenjin.com\/wp-content\/uploads\/2023\/09\/podcast_cover.png\",\"datePublished\":\"2020-08-19T07:47:00+00:00\",\"dateModified\":\"2024-02-27T10:55:39+00:00\",\"author\":{\"@id\":\"https:\/\/tenjin.com\/ru\/#\/schema\/person\/bbb089a8de6e9a87d102755431201f84\"},\"breadcrumb\":{\"@id\":\"https:\/\/tenjin.com\/ja\/blog\/ios-14-mmp-free-publisher-guide\/#breadcrumb\"},\"inLanguage\":\"pt-PT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/tenjin.com\/ja\/blog\/ios-14-mmp-free-publisher-guide\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-PT\",\"@id\":\"https:\/\/tenjin.com\/ja\/blog\/ios-14-mmp-free-publisher-guide\/#primaryimage\",\"url\":\"https:\/\/tenjin.com\/wp-content\/uploads\/2023\/09\/podcast_cover.png\",\"contentUrl\":\"https:\/\/tenjin.com\/wp-content\/uploads\/2023\/09\/podcast_cover.png\",\"width\":1920,\"height\":1080},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/tenjin.com\/ja\/blog\/ios-14-mmp-free-publisher-guide\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/tenjin.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Preparing for iOS 14: MMP-free publisher guide with Kevin Bravo, creator of Elixir\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/tenjin.com\/ru\/#website\",\"url\":\"https:\/\/tenjin.com\/ru\/\",\"name\":\"Tenjin\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/tenjin.com\/ru\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-PT\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/tenjin.com\/ru\/#\/schema\/person\/bbb089a8de6e9a87d102755431201f84\",\"name\":\"Roman Garbar\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-PT\",\"@id\":\"https:\/\/tenjin.com\/ru\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/fe7957b272f6044b3f45b39cd1bb097cb540cf7f0b903790729fa43b1e43d739?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/fe7957b272f6044b3f45b39cd1bb097cb540cf7f0b903790729fa43b1e43d739?s=96&d=mm&r=g\",\"caption\":\"Roman Garbar\"},\"url\":\"https:\/\/tenjin.com\/pt\/blog\/author\/romantenjin\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Preparar-se para o iOS 14: guia do editor sem MMP com Kevin Bravo, criador do Elixir - Tenjin","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/tenjin.com\/pt\/blog\/ios-14-mmp-free-publisher-guide\/","og_locale":"pt_PT","og_type":"article","og_title":"Preparing for iOS 14: MMP-free publisher guide with Kevin Bravo, creator of Elixir - Tenjin","og_description":"One month before the\u00a0release of iOS 14, there are still many speculations around what\u2019s happening next for MMPs. How much will their role change? Are advertisers still ok paying 1-5 cents for each paid tracked install on iOS, even though it no longer has user-level granularity? \u00a0Will Apple allow MMPs to validate Conversion Values though...","og_url":"https:\/\/tenjin.com\/pt\/blog\/ios-14-mmp-free-publisher-guide\/","og_site_name":"Tenjin","article_published_time":"2020-08-19T07:47:00+00:00","article_modified_time":"2024-02-27T10:55:39+00:00","og_image":[{"width":1920,"height":1080,"url":"https:\/\/tenjin.com\/wp-content\/uploads\/2023\/09\/podcast_cover.png","type":"image\/png"}],"author":"Roman Garbar","twitter_card":"summary_large_image","twitter_misc":{"Escrito por":"Roman Garbar","Tempo estimado de leitura":"10 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/tenjin.com\/ja\/blog\/ios-14-mmp-free-publisher-guide\/#article","isPartOf":{"@id":"https:\/\/tenjin.com\/ja\/blog\/ios-14-mmp-free-publisher-guide\/"},"author":{"name":"Roman Garbar","@id":"https:\/\/tenjin.com\/ru\/#\/schema\/person\/bbb089a8de6e9a87d102755431201f84"},"headline":"Preparing for iOS 14: MMP-free publisher guide with Kevin Bravo, creator of Elixir","datePublished":"2020-08-19T07:47:00+00:00","dateModified":"2024-02-27T10:55:39+00:00","mainEntityOfPage":{"@id":"https:\/\/tenjin.com\/ja\/blog\/ios-14-mmp-free-publisher-guide\/"},"wordCount":2013,"image":{"@id":"https:\/\/tenjin.com\/ja\/blog\/ios-14-mmp-free-publisher-guide\/#primaryimage"},"thumbnailUrl":"https:\/\/tenjin.com\/wp-content\/uploads\/2023\/09\/podcast_cover.png","articleSection":["Best practices","Mobile Marketing Trends"],"inLanguage":"pt-PT"},{"@type":"WebPage","@id":"https:\/\/tenjin.com\/ja\/blog\/ios-14-mmp-free-publisher-guide\/","url":"https:\/\/tenjin.com\/ja\/blog\/ios-14-mmp-free-publisher-guide\/","name":"Preparar-se para o iOS 14: guia do editor sem MMP com Kevin Bravo, criador do Elixir - Tenjin","isPartOf":{"@id":"https:\/\/tenjin.com\/ru\/#website"},"primaryImageOfPage":{"@id":"https:\/\/tenjin.com\/ja\/blog\/ios-14-mmp-free-publisher-guide\/#primaryimage"},"image":{"@id":"https:\/\/tenjin.com\/ja\/blog\/ios-14-mmp-free-publisher-guide\/#primaryimage"},"thumbnailUrl":"https:\/\/tenjin.com\/wp-content\/uploads\/2023\/09\/podcast_cover.png","datePublished":"2020-08-19T07:47:00+00:00","dateModified":"2024-02-27T10:55:39+00:00","author":{"@id":"https:\/\/tenjin.com\/ru\/#\/schema\/person\/bbb089a8de6e9a87d102755431201f84"},"breadcrumb":{"@id":"https:\/\/tenjin.com\/ja\/blog\/ios-14-mmp-free-publisher-guide\/#breadcrumb"},"inLanguage":"pt-PT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/tenjin.com\/ja\/blog\/ios-14-mmp-free-publisher-guide\/"]}]},{"@type":"ImageObject","inLanguage":"pt-PT","@id":"https:\/\/tenjin.com\/ja\/blog\/ios-14-mmp-free-publisher-guide\/#primaryimage","url":"https:\/\/tenjin.com\/wp-content\/uploads\/2023\/09\/podcast_cover.png","contentUrl":"https:\/\/tenjin.com\/wp-content\/uploads\/2023\/09\/podcast_cover.png","width":1920,"height":1080},{"@type":"BreadcrumbList","@id":"https:\/\/tenjin.com\/ja\/blog\/ios-14-mmp-free-publisher-guide\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/tenjin.com\/"},{"@type":"ListItem","position":2,"name":"Preparing for iOS 14: MMP-free publisher guide with Kevin Bravo, creator of Elixir"}]},{"@type":"WebSite","@id":"https:\/\/tenjin.com\/ru\/#website","url":"https:\/\/tenjin.com\/ru\/","name":"Tenjin","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/tenjin.com\/ru\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-PT"},{"@type":"Person","@id":"https:\/\/tenjin.com\/ru\/#\/schema\/person\/bbb089a8de6e9a87d102755431201f84","name":"Roman Garbar","image":{"@type":"ImageObject","inLanguage":"pt-PT","@id":"https:\/\/tenjin.com\/ru\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/fe7957b272f6044b3f45b39cd1bb097cb540cf7f0b903790729fa43b1e43d739?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/fe7957b272f6044b3f45b39cd1bb097cb540cf7f0b903790729fa43b1e43d739?s=96&d=mm&r=g","caption":"Roman Garbar"},"url":"https:\/\/tenjin.com\/pt\/blog\/author\/romantenjin\/"}]}},"_links":{"self":[{"href":"https:\/\/tenjin.com\/pt\/wp-json\/wp\/v2\/posts\/8528","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tenjin.com\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/tenjin.com\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/tenjin.com\/pt\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/tenjin.com\/pt\/wp-json\/wp\/v2\/comments?post=8528"}],"version-history":[{"count":0,"href":"https:\/\/tenjin.com\/pt\/wp-json\/wp\/v2\/posts\/8528\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/tenjin.com\/pt\/wp-json\/wp\/v2\/media\/8476"}],"wp:attachment":[{"href":"https:\/\/tenjin.com\/pt\/wp-json\/wp\/v2\/media?parent=8528"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/tenjin.com\/pt\/wp-json\/wp\/v2\/categories?post=8528"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/tenjin.com\/pt\/wp-json\/wp\/v2\/tags?post=8528"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}