{"id":17717,"date":"2026-05-21T16:32:49","date_gmt":"2026-05-21T16:32:49","guid":{"rendered":"https:\/\/tenjin.com\/?post_type=docs&#038;p=17717"},"modified":"2026-05-21T16:32:51","modified_gmt":"2026-05-21T16:32:51","password":"","slug":"ios-cloudx","status":"publish","type":"docs","link":"https:\/\/tenjin.com\/ja\/docs\/ios-cloudx\/","title":{"rendered":"iOS \u2013 CloudX"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">The Tenjin SDK can listen to CloudX impression level revenue data and send revenue events to Tenjin. This integration will send revenue related data for each ad impression served from CloudX. Here are the steps to integrate:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Install the CloudX iOS SDK by following the integration guide:<a href=\"https:\/\/docs.cloudx.io\/en\/ios\/integration\"> https:\/\/docs.cloudx.io\/en\/ios\/integration<br><br><\/a> Please ensure you have the latest Tenjin iOS SDK installed (>= 1.17.0), which adds CloudX support via the TenjinSDK+CloudXILRD category.<br><\/li>\n\n\n\n<li>Pass the revenue data to Tenjin from the CloudX revenueListener (or CloudXAdRevenueListener) callback, using the following sample code.<br><\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Objective-C<\/strong><\/h3>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1.125rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.625rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 0 16px;font-size:0.8em;width:100%;text-align:left;background-color:#2e3440ff;font-style:italic;color:#d8dee9ff\"><span style=\"border-bottom:1px solid rgba(201, 218, 248, 0.2)\">Objective-C<\/span><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>#import &lt;TenjinSDK\/TenjinSDK.h>\n\n#import &lt;TenjinSDK\/TenjinSDK+CloudXILRD.h>\n\n\/**\n\n\u00a0Invoked when CloudX records an impression and reports revenue for the ad **\/\n\n- (void)didPayRevenueForAd:(CloudXAd *)cloudXAd {\n\n\u00a0\u00a0\u00a0\u00a0NSLog(@\"%s\", __PRETTY_FUNCTION__);\n\n\u00a0\u00a0\u00a0\u00a0\/\/ Create JSON object for Tenjin\n\n\u00a0\u00a0\u00a0\u00a0NSDictionary *impressionDict = @{\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0@\"format\": \u00a0 \u00a0 \u00a0 \u00a0 cloudXAd.adFormat \u00a0 \u00a0 \u00a0 \u00a0 ?: @\"\",\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0@\"ad_unit_id\":\u00a0 \u00a0 \u00a0 \u00a0 cloudXAd.adUnitId \u00a0 \u00a0 \u00a0 \u00a0 ?: @\"\",\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0@\"network_name\":\u00a0 \u00a0 \u00a0 cloudXAd.networkName\u00a0 \u00a0 \u00a0 ?: @\"\",\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0@\"network_placement\": cloudXAd.networkPlacement ?: @\"\",\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0@\"placement\": \u00a0 \u00a0 \u00a0 \u00a0 cloudXAd.placement\u00a0 \u00a0 \u00a0 \u00a0 ?: @\"\",\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0@\"revenue\": \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 @(cloudXAd.revenue),\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0@\"currency\":\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 @\"USD\"\n\n\u00a0\u00a0\u00a0\u00a0};\n\n\u00a0\u00a0\u00a0\u00a0\/\/ Convert to JSON string\n\n\u00a0\u00a0\u00a0\u00a0NSError *error;\n\n\u00a0\u00a0\u00a0\u00a0NSData *jsonData = &#91;NSJSONSerialization dataWithJSONObject:impressionDict\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0options:0\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0error:&amp;error&#93;;\n\n\u00a0\u00a0\u00a0\u00a0if (jsonData &amp;&amp; !error) {\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0NSString *jsonString = [&#91;NSString alloc&#93; initWithData:jsonData\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0encoding:NSUTF8StringEncoding];\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ Send to Tenjin\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&#91;TenjinSDK cloudXImpressionFromJSON:jsonString&#93;;\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0NSLog(@\"Sent CloudX impression to Tenjin: %@\", jsonString);\n\n\u00a0\u00a0\u00a0\u00a0} else {\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0NSLog(@\"Error creating JSON: %@\", error.localizedDescription);\n\n\u00a0\u00a0\u00a0\u00a0}\n\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #ECEFF4\">#<\/span><span style=\"color: #81A1C1\">import<\/span><span style=\"color: #5E81AC\"> <\/span><span style=\"color: #ECEFF4\">&lt;<\/span><span style=\"color: #A3BE8C\">TenjinSDK\/TenjinSDK.h<\/span><span style=\"color: #ECEFF4\">&gt;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">#<\/span><span style=\"color: #81A1C1\">import<\/span><span style=\"color: #5E81AC\"> <\/span><span style=\"color: #ECEFF4\">&lt;<\/span><span style=\"color: #A3BE8C\">TenjinSDK\/TenjinSDK+CloudXILRD.h<\/span><span style=\"color: #ECEFF4\">&gt;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #616E88\">\/**<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #616E88\">\u00a0Invoked when CloudX records an impression and reports revenue for the ad **\/<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #81A1C1\">void<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #D8DEE9FF\">didPayRevenueForAd:<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">CloudXAd <\/span><span style=\"color: #81A1C1\">*<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #D8DEE9FF\">cloudXAd <\/span><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #88C0D0\">NSLog<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #ECEFF4\">@&quot;<\/span><span style=\"color: #A3BE8C\">%s<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> __PRETTY_FUNCTION__<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #616E88\">\/\/ Create JSON object for Tenjin<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #8FBCBB\">NSDictionary<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">*<\/span><span style=\"color: #D8DEE9FF\">impressionDict <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> @<\/span><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #ECEFF4\">@&quot;<\/span><span style=\"color: #A3BE8C\">format<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #D8DEE9FF\">: \u00a0 \u00a0 \u00a0 \u00a0 <\/span><span style=\"color: #D8DEE9\">cloudXAd<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9\">adFormat<\/span><span style=\"color: #D8DEE9FF\"> \u00a0 \u00a0 \u00a0 \u00a0 <\/span><span style=\"color: #81A1C1\">?:<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">@&quot;&quot;<\/span><span style=\"color: #ECEFF4\">,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #ECEFF4\">@&quot;<\/span><span style=\"color: #A3BE8C\">ad_unit_id<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #D8DEE9FF\">:\u00a0 \u00a0 \u00a0 \u00a0 <\/span><span style=\"color: #D8DEE9\">cloudXAd<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9\">adUnitId<\/span><span style=\"color: #D8DEE9FF\"> \u00a0 \u00a0 \u00a0 \u00a0 <\/span><span style=\"color: #81A1C1\">?:<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">@&quot;&quot;<\/span><span style=\"color: #ECEFF4\">,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #ECEFF4\">@&quot;<\/span><span style=\"color: #A3BE8C\">network_name<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #D8DEE9FF\">:\u00a0 \u00a0 \u00a0 <\/span><span style=\"color: #D8DEE9\">cloudXAd<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9\">networkName<\/span><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0 \u00a0 <\/span><span style=\"color: #81A1C1\">?:<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">@&quot;&quot;<\/span><span style=\"color: #ECEFF4\">,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #ECEFF4\">@&quot;<\/span><span style=\"color: #A3BE8C\">network_placement<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #D8DEE9FF\">: <\/span><span style=\"color: #D8DEE9\">cloudXAd<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9\">networkPlacement<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">?:<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">@&quot;&quot;<\/span><span style=\"color: #ECEFF4\">,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #ECEFF4\">@&quot;<\/span><span style=\"color: #A3BE8C\">placement<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #D8DEE9FF\">: \u00a0 \u00a0 \u00a0 \u00a0 <\/span><span style=\"color: #D8DEE9\">cloudXAd<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9\">placement<\/span><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0 \u00a0 \u00a0 <\/span><span style=\"color: #81A1C1\">?:<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">@&quot;&quot;<\/span><span style=\"color: #ECEFF4\">,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #ECEFF4\">@&quot;<\/span><span style=\"color: #A3BE8C\">revenue<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #D8DEE9FF\">: \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 @<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9\">cloudXAd<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9\">revenue<\/span><span style=\"color: #ECEFF4\">),<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #ECEFF4\">@&quot;<\/span><span style=\"color: #A3BE8C\">currency<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #D8DEE9FF\">:\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 <\/span><span style=\"color: #ECEFF4\">@&quot;<\/span><span style=\"color: #A3BE8C\">USD<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #ECEFF4\">}<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #616E88\">\/\/ Convert to JSON string<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #8FBCBB\">NSError<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">*<\/span><span style=\"color: #D8DEE9FF\">error<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #8FBCBB\">NSData<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">*<\/span><span style=\"color: #D8DEE9FF\">jsonData <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&#91;<\/span><span style=\"color: #D8DEE9FF\">NSJSONSerialization <\/span><span style=\"color: #88C0D0\">dataWithJSONObject<\/span><span style=\"color: #ECEFF4\">:<\/span><span style=\"color: #D8DEE9FF\">impressionDict<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #88C0D0\">options<\/span><span style=\"color: #ECEFF4\">:<\/span><span style=\"color: #B48EAD\">0<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #88C0D0\">error<\/span><span style=\"color: #ECEFF4\">:<\/span><span style=\"color: #81A1C1\">&amp;<\/span><span style=\"color: #D8DEE9FF\">error<\/span><span style=\"color: #ECEFF4\">&#93;<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #81A1C1\">if<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">jsonData <\/span><span style=\"color: #81A1C1\">&amp;&amp;<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">!<\/span><span style=\"color: #D8DEE9FF\">error<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #8FBCBB\">NSString<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">*<\/span><span style=\"color: #D8DEE9FF\">jsonString <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">[&#91;<\/span><span style=\"color: #8FBCBB\">NSString<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">alloc<\/span><span style=\"color: #ECEFF4\">&#93;<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">initWithData<\/span><span style=\"color: #ECEFF4\">:<\/span><span style=\"color: #D8DEE9FF\">jsonData<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #88C0D0\">encoding<\/span><span style=\"color: #ECEFF4\">:<\/span><span style=\"color: #81A1C1\">NSUTF8StringEncoding<\/span><span style=\"color: #ECEFF4\">]<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #616E88\">\/\/ Send to Tenjin<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #ECEFF4\">&#91;<\/span><span style=\"color: #D8DEE9FF\">TenjinSDK <\/span><span style=\"color: #88C0D0\">cloudXImpressionFromJSON<\/span><span style=\"color: #ECEFF4\">:<\/span><span style=\"color: #D8DEE9FF\">jsonString<\/span><span style=\"color: #ECEFF4\">&#93;<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #88C0D0\">NSLog<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #ECEFF4\">@&quot;<\/span><span style=\"color: #A3BE8C\">Sent CloudX impression to Tenjin: %@<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> jsonString<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #ECEFF4\">}<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">else<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #88C0D0\">NSLog<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #ECEFF4\">@&quot;<\/span><span style=\"color: #A3BE8C\">Error creating JSON: %@<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">error<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9\">localizedDescription<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #ECEFF4\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Swift<\/strong><\/h3>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1.125rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.625rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 0 16px;font-size:0.8em;width:100%;text-align:left;background-color:#2e3440ff;font-style:italic;color:#d8dee9ff\"><span style=\"border-bottom:1px solid rgba(201, 218, 248, 0.2)\">Swift<\/span><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>import TenjinSDK\n\n\/\/ Conform to CloudX's revenue listener protocol on your ad delegate\n\nextension MyAdDelegate: CloudXAdRevenueListener {\n\n\u00a0\u00a0\u00a0\u00a0func onAdRevenuePaid(_ cloudXAd: CloudXAd) {\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0let impressionDict: &#91;String: Any&#93; = &#91;\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"ad_format\": \u00a0 \u00a0 \u00a0 \u00a0 cloudXAd.adFormat \u00a0 \u00a0 \u00a0 \u00a0 ?? \"\",\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"ad_unit_id\":\u00a0 \u00a0 \u00a0 \u00a0 cloudXAd.adUnitId \u00a0 \u00a0 \u00a0 \u00a0 ?? \"\",\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"network_name\":\u00a0 \u00a0 \u00a0 cloudXAd.networkName\u00a0 \u00a0 \u00a0 ?? \"\",\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"network_placement\": cloudXAd.networkPlacement ?? \"\",\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"placement\": \u00a0 \u00a0 \u00a0 \u00a0 cloudXAd.placement\u00a0 \u00a0 \u00a0 \u00a0 ?? \"\",\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"revenue\": \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 cloudXAd.revenue,\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"currency\":\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \"USD\"\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&#93;\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0guard\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0let jsonData = try? JSONSerialization.data(withJSONObject: impressionDict, options: []),\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0let jsonString = String(data: jsonData, encoding: .utf8)\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0else {\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0print(\"Error creating CloudX impression JSON\")\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ Send to Tenjin\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0TenjinSDK.cloudXImpression(fromJSON: jsonString)\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0print(\"Sent CloudX impression to Tenjin: \\(jsonString)\")\n\n\u00a0\u00a0\u00a0\u00a0}\n\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #81A1C1\">import<\/span><span style=\"color: #D8DEE9FF\"> TenjinSDK<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #616E88\">\/\/ Conform to CloudX&#39;s revenue listener protocol on your ad delegate<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">extension<\/span><span style=\"color: #D8DEE9FF\"> MyAdDelegate<\/span><span style=\"color: #ECEFF4\">:<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB; font-weight: bold\">CloudXAdRevenueListener <\/span><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #81A1C1\">func<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">onAdRevenuePaid<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #88C0D0\">_<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">cloudXAd<\/span><span style=\"color: #D8DEE9FF\">: CloudXAd<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #81A1C1\">let<\/span><span style=\"color: #D8DEE9FF\"> impressionDict: <\/span><span style=\"color: #ECEFF4\">&#91;<\/span><span style=\"color: #8FBCBB\">String<\/span><span style=\"color: #ECEFF4\">:<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">Any<\/span><span style=\"color: #ECEFF4\">&#93;<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> &#91;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">ad_format<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #81A1C1\">:<\/span><span style=\"color: #D8DEE9FF\"> \u00a0 \u00a0 \u00a0 \u00a0 cloudXAd.<\/span><span style=\"color: #D8DEE9\">adFormat<\/span><span style=\"color: #D8DEE9FF\"> \u00a0 \u00a0 \u00a0 \u00a0 <\/span><span style=\"color: #81A1C1\">??<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&quot;&quot;<\/span><span style=\"color: #D8DEE9FF\">,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">ad_unit_id<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #81A1C1\">:<\/span><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0 \u00a0 \u00a0 cloudXAd.<\/span><span style=\"color: #D8DEE9\">adUnitId<\/span><span style=\"color: #D8DEE9FF\"> \u00a0 \u00a0 \u00a0 \u00a0 <\/span><span style=\"color: #81A1C1\">??<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&quot;&quot;<\/span><span style=\"color: #D8DEE9FF\">,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">network_name<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #81A1C1\">:<\/span><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0 \u00a0 cloudXAd.<\/span><span style=\"color: #D8DEE9\">networkName<\/span><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0 \u00a0 <\/span><span style=\"color: #81A1C1\">??<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&quot;&quot;<\/span><span style=\"color: #D8DEE9FF\">,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">network_placement<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #81A1C1\">:<\/span><span style=\"color: #D8DEE9FF\"> cloudXAd.<\/span><span style=\"color: #D8DEE9\">networkPlacement<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">??<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&quot;&quot;<\/span><span style=\"color: #D8DEE9FF\">,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">placement<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #81A1C1\">:<\/span><span style=\"color: #D8DEE9FF\"> \u00a0 \u00a0 \u00a0 \u00a0 cloudXAd.<\/span><span style=\"color: #D8DEE9\">placement<\/span><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0 \u00a0 \u00a0 <\/span><span style=\"color: #81A1C1\">??<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&quot;&quot;<\/span><span style=\"color: #D8DEE9FF\">,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">revenue<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #81A1C1\">:<\/span><span style=\"color: #D8DEE9FF\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 cloudXAd.<\/span><span style=\"color: #D8DEE9\">revenue<\/span><span style=\"color: #D8DEE9FF\">,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">currency<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #81A1C1\">:<\/span><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">USD<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&#93;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #81A1C1\">guard<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #81A1C1\">let<\/span><span style=\"color: #D8DEE9FF\"> jsonData <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">try?<\/span><span style=\"color: #D8DEE9FF\"> JSONSerialization.<\/span><span style=\"color: #88C0D0\">data<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #88C0D0\">withJSONObject<\/span><span style=\"color: #ECEFF4\">:<\/span><span style=\"color: #D8DEE9FF\"> impressionDict, <\/span><span style=\"color: #88C0D0\">options<\/span><span style=\"color: #ECEFF4\">:<\/span><span style=\"color: #D8DEE9FF\"> []<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #D8DEE9FF\">,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #81A1C1\">let<\/span><span style=\"color: #D8DEE9FF\"> jsonString <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">String<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #88C0D0\">data<\/span><span style=\"color: #ECEFF4\">:<\/span><span style=\"color: #D8DEE9FF\"> jsonData, <\/span><span style=\"color: #88C0D0\">encoding<\/span><span style=\"color: #ECEFF4\">:<\/span><span style=\"color: #D8DEE9FF\"> .utf8<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #81A1C1\">else<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #88C0D0\">print<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">Error creating CloudX impression JSON<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #81A1C1\">return<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #ECEFF4\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #616E88\">\/\/ Send to Tenjin<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0TenjinSDK.<\/span><span style=\"color: #88C0D0\">cloudXImpression<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #88C0D0\">fromJSON<\/span><span style=\"color: #ECEFF4\">:<\/span><span style=\"color: #D8DEE9FF\"> jsonString<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #88C0D0\">print<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">Sent CloudX impression to Tenjin: <\/span><span style=\"color: #81A1C1\">\\(<\/span><span style=\"color: #A3BE8C\">jsonString<\/span><span style=\"color: #81A1C1\">)<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #ECEFF4\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Attach the listener to each ad object (banner, MREC, interstitial, rewarded) before loading the ad, for example:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>bannerAd.revenueListener = self<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Here is an example impression level revenue data entry from CloudX:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>Parameter<\/strong><\/td><td><strong>Required?<\/strong><\/td><td><strong>Example<\/strong><\/td><\/tr><tr><td>format<\/td><td>No<\/td><td>&#8220;banner&#8221;, &#8220;mrec&#8221;, &#8220;interstitial&#8221;, &#8220;rewarded&#8221;<\/td><\/tr><tr><td>ad_unit_id<\/td><td>No<\/td><td>abc-123-banner<\/td><\/tr><tr><td>network_name<\/td><td>No<\/td><td>meta<\/td><\/tr><tr><td>network_placement<\/td><td>No<\/td><td>1234567890_9876543210<\/td><\/tr><tr><td>placement<\/td><td>No<\/td><td>home_screen<\/td><\/tr><tr><td>revenue<\/td><td>Yes<\/td><td>0.0123<\/td><\/tr><tr><td>currency<\/td><td>No<\/td><td>USD<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\">reference:<a href=\"https:\/\/docs.cloudx.io\/en\/ios\/integration\"> https:\/\/docs.cloudx.io\/en\/ios\/integration<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>The Tenjin SDK can listen to CloudX impression level revenue data and send revenue events to Tenjin. This integration will send revenue related data for each ad impression served from CloudX. Here are the steps to integrate: Objective-C Swift Attach the listener to each ad object (banner, MREC, interstitial, rewarded) before loading the ad, for&#8230;<\/p>","protected":false},"author":17,"featured_media":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"footnotes":""},"doc_category":[250],"glossaries":[],"doc_tag":[],"class_list":["post-17717","docs","type-docs","status-publish","hentry","doc_category-cloudx"],"acf":[],"year_month":"2026-05","word_count":609,"total_views":0,"reactions":{"happy":0,"normal":0,"sad":0},"author_info":{"name":"anurag","author_nicename":"anurag","author_url":"https:\/\/tenjin.com\/ja\/blog\/author\/anurag\/"},"doc_category_info":[{"term_name":"CloudX","term_url":"https:\/\/tenjin.com\/ja\/docs\/category\/cloudx\/"}],"doc_tag_info":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>iOS \u2013 CloudX | Tenjin<\/title>\n<meta name=\"description\" content=\"iOS \u2013 CloudX Tenjin | %\" \/>\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\/docs\/ios-cloudx\/\" \/>\n<meta property=\"og:locale\" content=\"ja_JP\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"iOS \u2013 CloudX | Tenjin\" \/>\n<meta property=\"og:description\" content=\"iOS \u2013 CloudX Tenjin | %\" \/>\n<meta property=\"og:url\" content=\"https:\/\/tenjin.com\/ja\/docs\/ios-cloudx\/\" \/>\n<meta property=\"og:site_name\" content=\"Tenjin\" \/>\n<meta property=\"article:modified_time\" content=\"2026-05-21T16:32:51+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:site\" content=\"@TenjinMMP\" \/>\n<meta name=\"twitter:label1\" content=\"\u63a8\u5b9a\u8aad\u307f\u53d6\u308a\u6642\u9593\" \/>\n\t<meta name=\"twitter:data1\" content=\"1\u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/tenjin.com\\\/docs\\\/ios-cloudx\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/tenjin.com\\\/docs\\\/ios-cloudx\\\/\"},\"author\":{\"name\":\"anurag\",\"@id\":\"https:\\\/\\\/tenjin.com\\\/#\\\/schema\\\/person\\\/e039df04bf002f4a0825fce9d6d5f13b\"},\"headline\":\"iOS \u2013 CloudX\",\"datePublished\":\"2026-05-21T16:32:49+00:00\",\"dateModified\":\"2026-05-21T16:32:51+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/tenjin.com\\\/docs\\\/ios-cloudx\\\/\"},\"wordCount\":164,\"publisher\":{\"@id\":\"https:\\\/\\\/tenjin.com\\\/#organization\"},\"inLanguage\":\"ja\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/tenjin.com\\\/docs\\\/ios-cloudx\\\/\",\"url\":\"https:\\\/\\\/tenjin.com\\\/docs\\\/ios-cloudx\\\/\",\"name\":\"iOS \u2013 CloudX | Tenjin\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/tenjin.com\\\/#website\"},\"datePublished\":\"2026-05-21T16:32:49+00:00\",\"dateModified\":\"2026-05-21T16:32:51+00:00\",\"description\":\"iOS \u2013 CloudX Tenjin | %\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/tenjin.com\\\/docs\\\/ios-cloudx\\\/#breadcrumb\"},\"inLanguage\":\"ja\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/tenjin.com\\\/docs\\\/ios-cloudx\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/tenjin.com\\\/docs\\\/ios-cloudx\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/tenjin.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Docs\",\"item\":\"https:\\\/\\\/tenjin.com\\\/docs\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"iOS \u2013 CloudX\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/tenjin.com\\\/#website\",\"url\":\"https:\\\/\\\/tenjin.com\\\/\",\"name\":\"Tenjin\",\"description\":\"Growth Made Simple\",\"publisher\":{\"@id\":\"https:\\\/\\\/tenjin.com\\\/#organization\"},\"alternateName\":\"Tenjin - Mobile Measurement Partner\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/tenjin.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"ja\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/tenjin.com\\\/#organization\",\"name\":\"Tenjin\",\"url\":\"https:\\\/\\\/tenjin.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ja\",\"@id\":\"https:\\\/\\\/tenjin.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/tenjin.com\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/images.webp\",\"contentUrl\":\"https:\\\/\\\/tenjin.com\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/images.webp\",\"width\":429,\"height\":117,\"caption\":\"Tenjin\"},\"image\":{\"@id\":\"https:\\\/\\\/tenjin.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/x.com\\\/TenjinMMP\",\"https:\\\/\\\/www.youtube.com\\\/@TenjinMMP\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/tenjin\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/tenjin.com\\\/#\\\/schema\\\/person\\\/e039df04bf002f4a0825fce9d6d5f13b\",\"name\":\"anurag\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ja\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/dc89d050d7f8053be5b8856ebaaabf82adb98e0ea57d1579b8397fb09de189c8?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/dc89d050d7f8053be5b8856ebaaabf82adb98e0ea57d1579b8397fb09de189c8?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/dc89d050d7f8053be5b8856ebaaabf82adb98e0ea57d1579b8397fb09de189c8?s=96&d=mm&r=g\",\"caption\":\"anurag\"},\"url\":\"https:\\\/\\\/tenjin.com\\\/ja\\\/blog\\\/author\\\/anurag\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"iOS \u2013 CloudX | Tenjin","description":"iOS \u2013 CloudX 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\/docs\/ios-cloudx\/","og_locale":"ja_JP","og_type":"article","og_title":"iOS \u2013 CloudX | Tenjin","og_description":"iOS \u2013 CloudX Tenjin | %","og_url":"https:\/\/tenjin.com\/ja\/docs\/ios-cloudx\/","og_site_name":"Tenjin","article_modified_time":"2026-05-21T16:32:51+00:00","twitter_card":"summary_large_image","twitter_site":"@TenjinMMP","twitter_misc":{"\u63a8\u5b9a\u8aad\u307f\u53d6\u308a\u6642\u9593":"1\u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/tenjin.com\/docs\/ios-cloudx\/#article","isPartOf":{"@id":"https:\/\/tenjin.com\/docs\/ios-cloudx\/"},"author":{"name":"anurag","@id":"https:\/\/tenjin.com\/#\/schema\/person\/e039df04bf002f4a0825fce9d6d5f13b"},"headline":"iOS \u2013 CloudX","datePublished":"2026-05-21T16:32:49+00:00","dateModified":"2026-05-21T16:32:51+00:00","mainEntityOfPage":{"@id":"https:\/\/tenjin.com\/docs\/ios-cloudx\/"},"wordCount":164,"publisher":{"@id":"https:\/\/tenjin.com\/#organization"},"inLanguage":"ja"},{"@type":"WebPage","@id":"https:\/\/tenjin.com\/docs\/ios-cloudx\/","url":"https:\/\/tenjin.com\/docs\/ios-cloudx\/","name":"iOS \u2013 CloudX | Tenjin","isPartOf":{"@id":"https:\/\/tenjin.com\/#website"},"datePublished":"2026-05-21T16:32:49+00:00","dateModified":"2026-05-21T16:32:51+00:00","description":"iOS \u2013 CloudX Tenjin | %","breadcrumb":{"@id":"https:\/\/tenjin.com\/docs\/ios-cloudx\/#breadcrumb"},"inLanguage":"ja","potentialAction":[{"@type":"ReadAction","target":["https:\/\/tenjin.com\/docs\/ios-cloudx\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/tenjin.com\/docs\/ios-cloudx\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/tenjin.com\/"},{"@type":"ListItem","position":2,"name":"Docs","item":"https:\/\/tenjin.com\/docs\/"},{"@type":"ListItem","position":3,"name":"iOS \u2013 CloudX"}]},{"@type":"WebSite","@id":"https:\/\/tenjin.com\/#website","url":"https:\/\/tenjin.com\/","name":"Tenjin","description":"Growth Made Simple","publisher":{"@id":"https:\/\/tenjin.com\/#organization"},"alternateName":"Tenjin - Mobile Measurement Partner","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/tenjin.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"ja"},{"@type":"Organization","@id":"https:\/\/tenjin.com\/#organization","name":"Tenjin","url":"https:\/\/tenjin.com\/","logo":{"@type":"ImageObject","inLanguage":"ja","@id":"https:\/\/tenjin.com\/#\/schema\/logo\/image\/","url":"https:\/\/tenjin.com\/wp-content\/uploads\/2026\/04\/images.webp","contentUrl":"https:\/\/tenjin.com\/wp-content\/uploads\/2026\/04\/images.webp","width":429,"height":117,"caption":"Tenjin"},"image":{"@id":"https:\/\/tenjin.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/x.com\/TenjinMMP","https:\/\/www.youtube.com\/@TenjinMMP","https:\/\/www.linkedin.com\/company\/tenjin"]},{"@type":"Person","@id":"https:\/\/tenjin.com\/#\/schema\/person\/e039df04bf002f4a0825fce9d6d5f13b","name":"anurag","image":{"@type":"ImageObject","inLanguage":"ja","@id":"https:\/\/secure.gravatar.com\/avatar\/dc89d050d7f8053be5b8856ebaaabf82adb98e0ea57d1579b8397fb09de189c8?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/dc89d050d7f8053be5b8856ebaaabf82adb98e0ea57d1579b8397fb09de189c8?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/dc89d050d7f8053be5b8856ebaaabf82adb98e0ea57d1579b8397fb09de189c8?s=96&d=mm&r=g","caption":"anurag"},"url":"https:\/\/tenjin.com\/ja\/blog\/author\/anurag\/"}]}},"knowledge_base_info":[],"knowledge_base_slug":[],"_links":{"self":[{"href":"https:\/\/tenjin.com\/ja\/wp-json\/wp\/v2\/docs\/17717","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tenjin.com\/ja\/wp-json\/wp\/v2\/docs"}],"about":[{"href":"https:\/\/tenjin.com\/ja\/wp-json\/wp\/v2\/types\/docs"}],"author":[{"embeddable":true,"href":"https:\/\/tenjin.com\/ja\/wp-json\/wp\/v2\/users\/17"}],"replies":[{"embeddable":true,"href":"https:\/\/tenjin.com\/ja\/wp-json\/wp\/v2\/comments?post=17717"}],"version-history":[{"count":1,"href":"https:\/\/tenjin.com\/ja\/wp-json\/wp\/v2\/docs\/17717\/revisions"}],"predecessor-version":[{"id":17718,"href":"https:\/\/tenjin.com\/ja\/wp-json\/wp\/v2\/docs\/17717\/revisions\/17718"}],"wp:attachment":[{"href":"https:\/\/tenjin.com\/ja\/wp-json\/wp\/v2\/media?parent=17717"}],"wp:term":[{"taxonomy":"doc_category","embeddable":true,"href":"https:\/\/tenjin.com\/ja\/wp-json\/wp\/v2\/doc_category?post=17717"},{"taxonomy":"glossaries","embeddable":true,"href":"https:\/\/tenjin.com\/ja\/wp-json\/wp\/v2\/glossaries?post=17717"},{"taxonomy":"doc_tag","embeddable":true,"href":"https:\/\/tenjin.com\/ja\/wp-json\/wp\/v2\/doc_tag?post=17717"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}