{"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\/ja\/blog\/ios-14-mmp-free-publisher-guide\/","title":{"rendered":"iOS 14\u3078\u306e\u6e96\u5099\uff1aElixir\u306e\u958b\u767a\u8005Kevin Bravo\u306b\u3088\u308bMMP\u30d5\u30ea\u30fc\u30d1\u30d6\u30ea\u30c3\u30b7\u30e3\u30fc\u30ac\u30a4\u30c9"},"content":{"rendered":"<p>One month before the\u00a0<a href=\"https:\/\/blog.tenjin.com\/new-rules-of-attribution-ios-14\/\">release of iOS 14<\/a>, there are still many speculations around what\u2019s happening next for <a href=\"https:\/\/docs.tenjin.com\/docs\/mmp\">MMP<\/a>s. 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 it wasn\u2019t mentioned in any Apple documentation? While those questions are unclear, we decided to tackle things that developers can do today, without the involvement of MMPs.<\/p>\n\n\n\n<p>We sat down with the co-founder of the mobile growth agency&nbsp;<a href=\"https:\/\/2ndpotion.com\/\">2ndPotion<\/a>,&nbsp;<a href=\"https:\/\/www.linkedin.com\/in\/kevinbravo\/\">Kevin Bravo<\/a>, to talk about things that developers can utilize right now that are documented by Apple. Kevin created the first open-source solution that interacts with Apple\u2019s SKAdNetwork called&nbsp;<a href=\"https:\/\/github.com\/2ndpotion\/ElixiriOS\">Elixir<\/a>, so we know he\u2019s perfect for this sort of conversation.<\/p>\n\n\n\n<p>Here is what we will cover today with Kevin.<\/p>\n\n\n\n<p>1)&nbsp;<strong>For developers and game designers<\/strong>, iOS pop-up asks for consent to share the user\u2019s IDFA \u2013 &nbsp;<em>AppTrackingTransparency<\/em>&nbsp;method.<\/p>\n\n\n\n<p>2)&nbsp;<strong>For developers<\/strong>, an overview of the new attribution framework from Apple \u2013 &nbsp;<em>SKAdNetwork<\/em>.<\/p>\n\n\n\n<p>2.1)&nbsp;<strong>For developers<\/strong>, attribution of installs \u2013 &nbsp;integrate&nbsp;<em>registerAppForAdNetworkAttribution()<\/em>method<\/p>\n\n\n\n<p>2.2)&nbsp;<strong>For developers<\/strong>, attribute post-install events \u2013 integrate&nbsp;<em>updateConversionValue(_:)<\/em>method<\/p>\n\n\n\n<p>2.3)&nbsp;<strong>For UA managers<\/strong>, understand how Apple reports installs and post-install events to ad network \u2013 &nbsp;Postbacks and timers<\/p>\n\n\n\n<p>3)<strong>&nbsp;For the whole team to brainstorm<\/strong>, what could be better&nbsp;<strong>\u2013&nbsp;<\/strong>Best Practices &amp; Current Pain points<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">1) Asking users to share their IDFA \u2013 Integrating<a href=\"https:\/\/developer.apple.com\/documentation\/apptrackingtransparency\">&nbsp;ApptrackingTransparency<\/a><\/h2>\n\n\n\n<p><strong>Kevin:&nbsp;<\/strong>AppTrackingTransparency is a framework available for iOS 14 that allows app developers to ask permission to track the user. This permission is required to access the user\u2019s IDFA for attribution purposes.<\/p>\n\n\n\n<p>Integrating it and using it will require you to prompt the user to access their IDFA with this 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>If the user accepts tracking, you\u2019ll have the ability to request their IDFA. Otherwise, the IDFA will be 0000-0000-0000-0000.<\/p>\n\n\n\n<p>Keep in mind that you won\u2019t be able to ask permission if the user is LAT (Limited Ad Tracking) ON.<\/p>\n\n\n\n<p><strong>Q: How many times can I show native popup?<\/strong><\/p>\n\n\n\n<p><strong>Kevin:&nbsp;<\/strong>You can only show itonly once per device.<\/p>\n\n\n\n<p><strong>Q: Can I ask for user consent again if it\u2019s rejected initially?<\/strong><\/p>\n\n\n\n<p><strong>Kevin:&nbsp;<\/strong>If the user already saw this popup, you won\u2019t be able to display it again.<\/p>\n\n\n\n<p><strong>Q: Can I show my custom popup before the native one?<\/strong><\/p>\n\n\n\n<p><strong>Kevin:&nbsp;<\/strong>You can decide when you will display this pop-up, which means that you\u2019re allowed to post an additional pop up before.<\/p>\n\n\n\n<p>This way, you can decide to show the permission popup only if the user said yes to your custom one<strong>.<\/strong><\/p>\n\n\n\n<p>This strategy is already used by many companies to push notifications requests and will help allow you to have a 2nd opportunity to ask for permission.<\/p>\n\n\n\n<p><strong>Q: What happens if an app developer does not integrate AppTrackingTransparency?<\/strong><\/p>\n\n\n\n<p><strong>Kevin:&nbsp;<\/strong>If you don\u2019t want\/need to request the IDFA, you can decide not to display this popup.<\/p>\n\n\n\n<p>This means that you won\u2019t have access to their IDFA (it will display as 0000-0000-0000-0000) and that ad networks won\u2019t have access to it as well.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">2) Overview of the new attribution framework from Apple \u2013 &nbsp;<a href=\"https:\/\/developer.apple.com\/documentation\/storekit\/skadnetwork\">SKAdNetwork<\/a><\/h2>\n\n\n\n<p><strong>Kevin:<\/strong>&nbsp;Apple provides an anonymized attribution solution called&nbsp;<strong>SKADNetwork<\/strong>, enabling apps to keep tracking installs coming from different ad networks, without compromising users\u2019 anonymity.<\/p>\n\n\n\n<p>When using SKADNetwork, a signature is attached to each ad click. When the user opens your app for the first time, Apple will be able to verify if they\u2019re coming from a specific ad with this signature.<\/p>\n\n\n\n<p>Then, a postback is sent back to the ad network to attribute a new install.<\/p>\n\n\n\n<p>The signature doesn\u2019t contain any identification data, keeping privacy at maximum by making it impossible to attach an install to a specific user.<\/p>\n\n\n\n<p>To integrate SKADNetwork, you need to call two methods:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/developer.apple.com\/documentation\/storekit\/skadnetwork\/2943654-registerappforadnetworkattributi\">registerAppForAdNetworkAttribution<\/a>(): This method should be called at first launch and register the user for attribution. If the user is from a signed ad, a postback will be fired in the following hours, notifying the ad network of this app install.<\/li>\n\n\n\n<li><a href=\"https:\/\/developer.apple.com\/documentation\/storekit\/skadnetwork\/3566697-updateconversionvalue\">updateConversionValue(_:)<\/a>&nbsp;This method should be called every time you want to update the conversion value attached to this specific user. You can call this method as many times as you want, but the conversion value will only be updated if it is higher than the previous one.<\/li>\n<\/ul>\n\n\n\n<p>For ad monetization, developers need to determine, in advance, the ad networks they are going to use for monetization, and specify them inside their app via plist as it\u2019s specified in&nbsp;<a href=\"https:\/\/developer.apple.com\/documentation\/storekit\/skadnetwork\/configuring_the_participating_apps\">this documentation<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">2.1) Attribute Installs \u2013 Integrate of&nbsp;<a href=\"https:\/\/developer.apple.com\/documentation\/storekit\/skadnetwork\/2943654-registerappforadnetworkattributi\">registerAppForAdNetworkAttribution<\/a><\/h2>\n\n\n\n<p><strong>Kevin:<\/strong>&nbsp;By calling registerAppForAdNetworkAttribution at first app launch, you\u2019re doing everything required to enable app install attribution with SKADNetwork.<\/p>\n\n\n\n<p>However, the install attribution will only be possible if the ad network is signing their ads with SKADNetwork.<\/p>\n\n\n\n<p>For advertising, developers need to ensure that ad networks have SKADNetwork integrated on their side to enable attribution and postbacks.<\/p>\n\n\n\n<p>To make things easier, a list of all available ad network IDs is available&nbsp;<a href=\"https:\/\/github.com\/skadnetwork\/ad-network-ids\">here<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">2.2) Attribute post-install events \u2013 &nbsp;Integrate&nbsp;<a href=\"https:\/\/developer.apple.com\/documentation\/storekit\/skadnetwork\/3566697-updateconversionvalue\">updateConversionValue(_:)<\/a><\/h2>\n\n\n\n<p><strong>Kevin:<\/strong>&nbsp;You can assign a conversion value to a specific install. This is a numeric value between 0 and 63.<\/p>\n\n\n\n<p>It\u2019s a \u201csignal\u201d that will help you understand how valuable this specific user is, without giving you a way to identify them.<\/p>\n\n\n\n<p>Ad networks can use this information to understand how valuable each install is for your business. This signal can help ad networks identify better audiences to serve your ads and improve your campaigns\u2019 performances.<\/p>\n\n\n\n<p><strong>Q: When should you use updateConversionValue(_:)?<\/strong><\/p>\n\n\n\n<p><strong>Kevin:<\/strong>&nbsp;Conversion value can be updated multiple times for the same user, but there are some limitations:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>You can only update the conversion value with a higher value than your previous call (1-&gt; 2 but not 3-&gt;2)<\/li>\n\n\n\n<li>A limited value between 0-63<\/li>\n<\/ul>\n\n\n\n<p>You want to use conversion values because it delivers valuable signals to your ad networks. It will also allow you to<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Analyze essential behavior in the app after installing from a specific campaign\/channel\/country<\/li>\n\n\n\n<li>Offer additional data points to the ad network you can use to identify valuable cohorts for your game and optimize your campaigns\u2019 performance.<\/li>\n<\/ul>\n\n\n\n<p>You want to think about how you will define each conversion value to get the most out of SKADNetwork.<\/p>\n\n\n\n<p>There are different approaches to conversion values management:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Track revenue<\/li>\n\n\n\n<li>e.g., Conversion value 1 is .1 EUR, 50 is &nbsp;5.0 EUR<\/li>\n\n\n\n<li>Track events<\/li>\n\n\n\n<li>e.g., level1_completed = conversion value 1<\/li>\n\n\n\n<li>Track revenue and progress events<\/li>\n\n\n\n<li>e.g., Conversion value 10 = lvl5_completed and spend 1EUR<\/li>\n\n\n\n<li>Etc..<\/li>\n<\/ul>\n\n\n\n<p>For the Revenue + progress events, I created a conversion table that allows you to define each event you\u2019ll track and understand the conversion value you\u2019ll be sending.<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>As you\u2019ll see in the spreadsheet, we\u2019re using binaries to convert events to conversion values:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Each conversion value translates to a set of 6 binary values.<\/li>\n\n\n\n<li>The first 3 binary values represent the revenue for this specific user (e.g., purchase &gt; 10$ = \u201c101\u201d)<\/li>\n\n\n\n<li>The last 3 binary values represent progress (e.g., 10 levels completed = \u201c011\u201d)<\/li>\n\n\n\n<li>By combining the two sets of binary values, we get a conversion value (e.g., \u201c<strong>101001<\/strong>\u201d converts to the conversion value&nbsp;<strong>43<\/strong>)<\/li>\n<\/ul>\n\n\n\n<p>You can find the spreadsheet&nbsp;<a href=\"https:\/\/docs.google.com\/spreadsheets\/d\/1jrRrTP6YX62of2WaJamtPBSWZJ-97IpTWn0IwTroH6Y\/edit?usp=drive_web&amp;ouid=110875297429935682272\">here<\/a>:<\/p>\n\n\n\n<p><strong>Q: What is Elixir, and how does it help?<\/strong><\/p>\n\n\n\n<p><strong>Kevin<\/strong>: Conversion values can only be sent from the app, making it complex to adjust the way you track conversion values without updating it.<\/p>\n\n\n\n<p>Elixir is an&nbsp;<strong>open-source SDK<\/strong>&nbsp;that allows you to define and update your conversion values without updating the app after each change.<\/p>\n\n\n\n<p>The way it works:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>You define your conversion table using one of the approaches available (revenue \/ mixed \/ progress)<\/li>\n\n\n\n<li>You store it on your server as a JSON<\/li>\n\n\n\n<li>You integrate Elixir SDK, tracking all the events available in the app<\/li>\n\n\n\n<li>At first launch, Elixir SDK will request the JSON, and match conversion values to actions taken by the user in real-time<\/li>\n\n\n\n<li>Elixir SDK will update the conversionValue based on the table you created<\/li>\n<\/ol>\n\n\n\n<p><a href=\"https:\/\/github.com\/2ndpotion\/ElixiriOS\">The SDK is available here<\/a><\/p>\n\n\n\n<p>You can see an example of&nbsp;<a href=\"https:\/\/jsonkeeper.com\/b\/9J5B\">conversion table JSON<\/a>. This is the document that Elixir read to generate the conversion value to track after each user\u2019s actions.<\/p>\n\n\n\n<p>Currently, there is only one type of table available&nbsp;<a href=\"https:\/\/docs.google.com\/spreadsheets\/d\/1jrRrTP6YX62of2WaJamtPBSWZJ-97IpTWn0IwTroH6Y\/edit?usp=drive_web&amp;ouid=110875297429935682272\">(link to the table)<\/a>&nbsp;for Elixir. As developers collaborate on the project, every model will be easily covered (ad revenue binary, timestamp, geo, etc.)<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">2.3) Understand how Apple reports installs and post-install events to ad network \u2013 Postbacks and timers<\/h2>\n\n\n\n<p><strong>Q: Can you explain how the postbacks timer work in updateConversionValue(_:)?<\/strong><\/p>\n\n\n\n<p><strong>Kevin<\/strong>: There is additional complexity on the way postbacks are scheduled.<\/p>\n\n\n\n<p>Two timers occur as follow:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>24\u6642\u9593\u30bf\u30a4\u30de\u30fc: \u8907\u6570\u56de\u30ea\u30bb\u30c3\u30c8\u3055\u308c\u3001\u30bf\u30a4\u30de\u30fc\u306e\u9593\u9694\u306f24\u6642\u9593\u56fa\u5b9a\u3002<\/li>\n\n\n\n<li>Random timer: once it starts, it can\u2019t reset. The duration is random, between 0-24hours<\/li>\n<\/ul>\n\n\n\n<p>When you fire registerAppForAdNetworkAttribution(), the 24 hours timer starts. If you decide to fire&nbsp;<a href=\"https:\/\/developer.apple.com\/documentation\/storekit\/skadnetwork\/3566697-updateconversionvalue\">updateConversionValue(_:)<\/a>, timer 1 is reset to zero and starts again.<\/p>\n\n\n\n<p>Every time you fire&nbsp;<a href=\"https:\/\/developer.apple.com\/documentation\/storekit\/skadnetwork\/3566697-updateconversionvalue\">updateConversionValue(_:)<\/a>, 24 hours timer will reset.<\/p>\n\n\n\n<p>Suppose you don\u2019t fire&nbsp;<a href=\"https:\/\/developer.apple.com\/documentation\/storekit\/skadnetwork\/3566697-updateconversionvalue\">updateConversionValue(_:)<\/a>&nbsp;before 24 hours timer expires, a random timer will start. Once the random timer starts, you can\u2019t update the conversion value anymore.<\/p>\n\n\n\n<p>At the end of the random timer, the postback is sent to the ad network. This postback can include (or not) a conversion value (it will be the latest value you set for this specific user)<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>Apple documentation doesn\u2019t specify a time or occurrences limit on updateConversionValue. It means that, as long as the user comes every 24hours, you can send a new conversionValue up to 63 times (based on the limitations described in &nbsp;\u2018When should you use updateConversionValue(_:)?\u2019 question ).<\/em><\/p>\n\n\n\n<p><strong>Q: What data are ad networks receiving from SKADNetwork?<\/strong><\/p>\n\n\n\n<p><strong>Kevin<\/strong>: Ad networks will receive a postback for each install that looks like this:<img decoding=\"async\" src=\"https:\/\/lh5.googleusercontent.com\/Xy9AXKm1arTL1LR5HNNBKjezwgcne0Cv5w98MtYnehf3XFC2ph0xpFXT8qzEn_ysA8RsJrd-XCFLLq0XIbYpzL_W3QR2BtAGF3TmEVB6AzFPEM4G3uJbi_fmOoaZ0eN834G5kNJf\"><\/p>\n\n\n\n<p>Some values are optional (e.g., conversion value) and may not be included in the postback.<\/p>\n\n\n\n<p>More details about this postback and how ad networks can verify the authenticity of each install are&nbsp;<a href=\"https:\/\/developer.apple.com\/documentation\/storekit\/skadnetwork\/verifying_an_install_validation_postback\">here<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">3) Best practices and existing pain points<\/h2>\n\n\n\n<p><strong>Q: What are your recommendations when using updateConversionValue(_:)?<\/strong><\/p>\n\n\n\n<p><strong>Kevin:<\/strong>&nbsp;You need to determine the most valuable actions that users can do in their first session and the following 1 to 3 days.<\/p>\n\n\n\n<p>A valuable event gives you a good indication of users\u2019 engagement within your app. Purchase being the highest signal you can get.<\/p>\n\n\n\n<p>Then, you should order events from the lowest signal to the highest. This list of events will help you define the conversion table.<\/p>\n\n\n\n<p><strong>Q: What are other pain points that developers might face when working with SKAdNetwork?<\/strong><\/p>\n\n\n\n<p><strong>Kevin:&nbsp;<\/strong>There are different challenges that you\u2019ll face when working with SKADNetwork:<\/p>\n\n\n\n<p>\u2013&nbsp;<strong>Managing install timestamp:&nbsp;<\/strong>SKADNetwork randomizes the time when the postback is sent to the ad network, and there is no installation timestamp included. This makes it complicated to determine when the install occurs. It even gets harder if you decide to send conversion values after the first 24 hours.<\/p>\n\n\n\n<p>The longer you wait before stopping to update conversion values, the broader the install time window gets.<\/p>\n\n\n\n<p>One solution could be to use some of the conversion value bits to define the install day and limit the number of days when you\u2019ll update the conversion value (e.g., three days).<\/p>\n\n\n\n<p>\u2013&nbsp;<strong>Getting data back \/ verifying signatures:&nbsp;<\/strong>Currently, only ad networks will have access to install postbacks. It is still unclear which ad networks will enable advertisers to get access to SKADNetwork data. Requesting this data will be vital as you\u2019ll be able to&nbsp;<a href=\"https:\/\/developer.apple.com\/documentation\/storekit\/skadnetwork\/verifying_an_install_validation_postback\">verify installs authenticity with a signature<\/a>.<\/p>\n\n\n\n<p>\u2013&nbsp;<strong>Managing IDFA attribution + SKADNetwork:&nbsp;<\/strong>How do you work with SKADNetwork and keep measuring user-level attribution opted in for the IDFA tracking? This mixed model will be complex and will require an excellent workflow to avoid dedupe install logs.<\/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\/ja\/blog\/ios-14-mmp-free-publisher-guide\/\" \/>\n<meta property=\"og:locale\" content=\"ja_JP\" \/>\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\/ja\/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=\"\u57f7\u7b46\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"Roman Garbar\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u63a8\u5b9a\u8aad\u307f\u53d6\u308a\u6642\u9593\" \/>\n\t<meta name=\"twitter:data2\" content=\"10\u5206\" \/>\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\":\"ja\"},{\"@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\":\"ja\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/tenjin.com\/ja\/blog\/ios-14-mmp-free-publisher-guide\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"ja\",\"@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\":\"ja\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/tenjin.com\/ru\/#\/schema\/person\/bbb089a8de6e9a87d102755431201f84\",\"name\":\"Roman Garbar\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ja\",\"@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\/ja\/blog\/author\/romantenjin\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Preparing for iOS 14: MMP-free publisher guide with Kevin Bravo, creator of 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\/ja\/blog\/ios-14-mmp-free-publisher-guide\/","og_locale":"ja_JP","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\/ja\/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":{"\u57f7\u7b46\u8005":"Roman Garbar","\u63a8\u5b9a\u8aad\u307f\u53d6\u308a\u6642\u9593":"10\u5206"},"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":"ja"},{"@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":"ja","potentialAction":[{"@type":"ReadAction","target":["https:\/\/tenjin.com\/ja\/blog\/ios-14-mmp-free-publisher-guide\/"]}]},{"@type":"ImageObject","inLanguage":"ja","@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":"ja"},{"@type":"Person","@id":"https:\/\/tenjin.com\/ru\/#\/schema\/person\/bbb089a8de6e9a87d102755431201f84","name":"\u30ed\u30fc\u30de\u30f3\u30fb\u30ac\u30fc\u30d0\u30fc","image":{"@type":"ImageObject","inLanguage":"ja","@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\/ja\/blog\/author\/romantenjin\/"}]}},"_links":{"self":[{"href":"https:\/\/tenjin.com\/ja\/wp-json\/wp\/v2\/posts\/8528","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tenjin.com\/ja\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/tenjin.com\/ja\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/tenjin.com\/ja\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/tenjin.com\/ja\/wp-json\/wp\/v2\/comments?post=8528"}],"version-history":[{"count":0,"href":"https:\/\/tenjin.com\/ja\/wp-json\/wp\/v2\/posts\/8528\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/tenjin.com\/ja\/wp-json\/wp\/v2\/media\/8476"}],"wp:attachment":[{"href":"https:\/\/tenjin.com\/ja\/wp-json\/wp\/v2\/media?parent=8528"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/tenjin.com\/ja\/wp-json\/wp\/v2\/categories?post=8528"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/tenjin.com\/ja\/wp-json\/wp\/v2\/tags?post=8528"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}