{"_id":"59a3dc113026cb0019bf41d8","project":"574ff4bd3fa1870e00889ba6","version":{"_id":"574ff4bd3fa1870e00889ba9","project":"574ff4bd3fa1870e00889ba6","__v":21,"createdAt":"2016-06-02T08:56:29.492Z","releaseDate":"2016-06-02T08:56:29.492Z","categories":["574ff4bd3fa1870e00889baa","577278ecdceb570e003a9001","577279865617b117009e643f","577279985617b117009e6440","577279bc8c48e00e00503504","5774fe18605b770e0037be8a","577ce3ad87acf617003c4187","577f8476a77c700e006a6c52","57b486ae0d2b640e00e9d3f5","57b722133d3e620e004ec74b","57bd95f00fe3a00e003e2cc5","57c8349359cd4b0e00b888ef","57c8349b5754fa1700b12242","57cedb0bad483e0e00890239","57cedbe807d7ea0e00e438cc","57d82967156ef72b007ffcd8","58ee353ad1ee2f0f0034a13d","596623221738df00298622a5","59a51730192dba000fc9ca38","59a8129f1e7b26000fa0fb1a","5a0322bf044b6f001c236e36"],"is_deprecated":false,"is_hidden":false,"is_beta":false,"is_stable":true,"codename":"","version_clean":"3.0.0","version":"3.0"},"category":{"_id":"57b722133d3e620e004ec74b","__v":0,"version":"574ff4bd3fa1870e00889ba9","project":"574ff4bd3fa1870e00889ba6","sync":{"url":"","isSync":false},"reference":false,"createdAt":"2016-08-19T15:13:23.417Z","from_sync":false,"order":9,"slug":"ios-native-ads-mediation-layer","title":"iOS SDK"},"user":"5770fa1ce5a0000e0023c680","__v":0,"parentDoc":null,"updates":[],"next":{"pages":[],"description":""},"createdAt":"2017-08-28T09:02:09.343Z","link_external":false,"link_url":"","githubsync":"","sync_unique":"","hidden":false,"api":{"results":{"codes":[]},"settings":"","auth":"required","params":[],"url":""},"isReference":false,"order":4,"body":"Large layout Ad is mediation of standard units that can be configured from the PubNative dashboard. Large layout ad view contains a predefined set of icon, banner, title, description, CTA and disclosure view. You can choose ad type from PubNative dashboard like video only, banner only or description-banner-icon etc. You will get a fully created view in Large Layout that can be shown on screen using **show** method. If you want to remove an ad from the screen or you're exiting the activity, you can use **hide** method.\n[block:api-header]\n{\n  \"title\": \"Getting Started\"\n}\n[/block]\n  * Before integrating large layout ads in your app, you’ll need to go through the steps in our Getting started guide, create an account on PubNative and integrate the SDK into your project.\n  * Add a large layout ad unit to your app in the PubNative dashboard.\n  * Make sure you have added the ad network SDKs you wish to use in your app. \n[block:api-header]\n{\n  \"title\": \"Integration\"\n}\n[/block]\n##1. Create Layout\nYou can create predefined large layout ad request using **PNLargeLayout** \n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"let largeLayout = PNLargeLayout()\",\n      \"language\": \"swift\"\n    }\n  ]\n}\n[/block]\n\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"PNLargeLayout *largeLayout = [[PNLargeLayout alloc] init];\",\n      \"language\": \"objectivec\"\n    }\n  ]\n}\n[/block]\n##2. Integrate Lifecycle Callbacks\nYou can track the load process, user interaction and ad behavior with callbacks using **PNLayoutLoadDelegate**.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"class YourClass: PNLayoutLoadDelegate {\\n//...\\nfunc layoutDidFinishLoading(_ layout: PNLayout!)\\n{\\n    // Layout loaded\\n}\\nfunc layout(_ layout: PNLayout!, didFailLoading error: Error!)\\n{\\n    // Layout load failed\\n}\",\n      \"language\": \"swift\"\n    }\n  ]\n}\n[/block]\n\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \":::at:::interface YourClass () <PNLayoutLoadDelegate>\\n//...\\n- (void)layoutDidFinishLoading:(PNLayout *)layout\\n{\\n    // Layout loaded\\n}\\n- (void)layout:(PNLayout *)layout didFailLoading:(NSError *)error\\n{\\n    // Layout load failed\\n}\",\n      \"language\": \"objectivec\"\n    }\n  ]\n}\n[/block]\nYou can track the tracking process, user interaction and ad behavior with callbacks using **PNLayoutTrackDelegate**. But you should set delegate only when Layout already loaded. You need to set listener as\n\n\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"class YourClass: PNLayoutTrackDelegate {\\n//...\\nlargeLayout.trackDelegate = self\\n//...\\nfunc layoutTrackClick(_ layout: PNLayout!) {\\n    // Layout click tracked\\n}\\n    \\nfunc layoutTrackImpression(_ layout: PNLayout!) {\\n    // Layout impression tracked\\n}\",\n      \"language\": \"swift\"\n    }\n  ]\n}\n[/block]\n\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"@interface YourClass () <PNLayoutTrackDelegate>\\n//...\\nlargeLayout.trackDelegate = self;\\n//...\\n- (void)layoutTrackImpression:(PNLayout *)layout\\n{\\n    // Layout impression tracked\\n}\\n- (void)layoutTrackClick:(PNLayout *)layout\\n{\\n    // Layout click tracked\\n}\",\n      \"language\": \"objectivec\",\n      \"name\": null\n    }\n  ]\n}\n[/block]\nYou can track the view status with callbacks using **PNLayoutViewDelegate**. But you should set delegate only when Layout already loaded. You need to set listener as\n\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"class YourClass: PNLayoutViewDelegate {\\n//...\\nlargeLayout.viewDelegate = self\\n//...\\nfunc layoutDidShow(_ layout: PNLayout!) {\\n    // Layout shown\\n}\\n    \\nfunc layoutDidHide(_ layout: PNLayout!)\\n    // Layout hidden\\n}\",\n      \"language\": \"swift\"\n    }\n  ]\n}\n[/block]\n\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"@interface YourClass () <PNLayoutViewDelegate>\\n//...\\nlargeLayout.viewDelegate = self;\\n//...\\n- (void)layoutDidShow:(PNLayout *)layout\\n{\\n    // Layout shown\\n}\\n- (void)layoutDidHide:(PNLayout *)layout\\n{\\n    // Layout hidden\\n}\",\n      \"language\": \"objectivec\"\n    }\n  ]\n}\n[/block]\n##3. Load Ad\nTo load Large layout Ad\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"largeLayout.load(withAppToken: \\\"<YOUR_APP_TOKEN>\\\", placement: \\\"<YOUR_PLACEMENT>\\\", delegate: self)\",\n      \"language\": \"swift\"\n    }\n  ]\n}\n[/block]\n\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"[largeLayout loadWithAppToken:@\\\"<YOUR_APP_TOKEN>\\\" placement:@\\\"<YOUR_PLACEMENT>\\\" delegate:self];\",\n      \"language\": \"objectivec\"\n    }\n  ]\n}\n[/block]\nFor getting callbacks from **PNLayout**, you should implement **PNLayoutLoadDelegate** for your class. Once an ad is loaded, you will get a fully created view in Large Layout that can be shown on screen using **show** method. If you want to remove an ad from the screen, you can use **hide** method.\n\n##4. Use the ad\nOnce the PNLayoutLoadDelegate callback is invoked you can show the ad using the **show** method or hide externally using **hide**. Expect the user to close the ad by itself unless you have a specific need to hide it. If the ad is not ready any interaction with this method will do nothing\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"// Use this to show the full screen interstitial\\nlargeLayout.show()\\n// Use this to hide the full screen interstitial\\nlargeLayout.hide()\",\n      \"language\": \"swift\"\n    }\n  ]\n}\n[/block]\n\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"// Use this to show the full screen interstitial\\n[largeLayout show];\\n// Use this to hide the full screen interstitial\\n[largeLayout hide];\",\n      \"language\": \"objectivec\"\n    }\n  ]\n}\n[/block]","excerpt":"","slug":"large-ad-layouts-1","type":"basic","title":"Large Ad Layout"}
Large layout Ad is mediation of standard units that can be configured from the PubNative dashboard. Large layout ad view contains a predefined set of icon, banner, title, description, CTA and disclosure view. You can choose ad type from PubNative dashboard like video only, banner only or description-banner-icon etc. You will get a fully created view in Large Layout that can be shown on screen using **show** method. If you want to remove an ad from the screen or you're exiting the activity, you can use **hide** method. [block:api-header] { "title": "Getting Started" } [/block] * Before integrating large layout ads in your app, you’ll need to go through the steps in our Getting started guide, create an account on PubNative and integrate the SDK into your project. * Add a large layout ad unit to your app in the PubNative dashboard. * Make sure you have added the ad network SDKs you wish to use in your app. [block:api-header] { "title": "Integration" } [/block] ##1. Create Layout You can create predefined large layout ad request using **PNLargeLayout** [block:code] { "codes": [ { "code": "let largeLayout = PNLargeLayout()", "language": "swift" } ] } [/block] [block:code] { "codes": [ { "code": "PNLargeLayout *largeLayout = [[PNLargeLayout alloc] init];", "language": "objectivec" } ] } [/block] ##2. Integrate Lifecycle Callbacks You can track the load process, user interaction and ad behavior with callbacks using **PNLayoutLoadDelegate**. [block:code] { "codes": [ { "code": "class YourClass: PNLayoutLoadDelegate {\n//...\nfunc layoutDidFinishLoading(_ layout: PNLayout!)\n{\n // Layout loaded\n}\nfunc layout(_ layout: PNLayout!, didFailLoading error: Error!)\n{\n // Layout load failed\n}", "language": "swift" } ] } [/block] [block:code] { "codes": [ { "code": "@interface YourClass () <PNLayoutLoadDelegate>\n//...\n- (void)layoutDidFinishLoading:(PNLayout *)layout\n{\n // Layout loaded\n}\n- (void)layout:(PNLayout *)layout didFailLoading:(NSError *)error\n{\n // Layout load failed\n}", "language": "objectivec" } ] } [/block] You can track the tracking process, user interaction and ad behavior with callbacks using **PNLayoutTrackDelegate**. But you should set delegate only when Layout already loaded. You need to set listener as [block:code] { "codes": [ { "code": "class YourClass: PNLayoutTrackDelegate {\n//...\nlargeLayout.trackDelegate = self\n//...\nfunc layoutTrackClick(_ layout: PNLayout!) {\n // Layout click tracked\n}\n \nfunc layoutTrackImpression(_ layout: PNLayout!) {\n // Layout impression tracked\n}", "language": "swift" } ] } [/block] [block:code] { "codes": [ { "code": "@interface YourClass () <PNLayoutTrackDelegate>\n//...\nlargeLayout.trackDelegate = self;\n//...\n- (void)layoutTrackImpression:(PNLayout *)layout\n{\n // Layout impression tracked\n}\n- (void)layoutTrackClick:(PNLayout *)layout\n{\n // Layout click tracked\n}", "language": "objectivec", "name": null } ] } [/block] You can track the view status with callbacks using **PNLayoutViewDelegate**. But you should set delegate only when Layout already loaded. You need to set listener as [block:code] { "codes": [ { "code": "class YourClass: PNLayoutViewDelegate {\n//...\nlargeLayout.viewDelegate = self\n//...\nfunc layoutDidShow(_ layout: PNLayout!) {\n // Layout shown\n}\n \nfunc layoutDidHide(_ layout: PNLayout!)\n // Layout hidden\n}", "language": "swift" } ] } [/block] [block:code] { "codes": [ { "code": "@interface YourClass () <PNLayoutViewDelegate>\n//...\nlargeLayout.viewDelegate = self;\n//...\n- (void)layoutDidShow:(PNLayout *)layout\n{\n // Layout shown\n}\n- (void)layoutDidHide:(PNLayout *)layout\n{\n // Layout hidden\n}", "language": "objectivec" } ] } [/block] ##3. Load Ad To load Large layout Ad [block:code] { "codes": [ { "code": "largeLayout.load(withAppToken: \"<YOUR_APP_TOKEN>\", placement: \"<YOUR_PLACEMENT>\", delegate: self)", "language": "swift" } ] } [/block] [block:code] { "codes": [ { "code": "[largeLayout loadWithAppToken:@\"<YOUR_APP_TOKEN>\" placement:@\"<YOUR_PLACEMENT>\" delegate:self];", "language": "objectivec" } ] } [/block] For getting callbacks from **PNLayout**, you should implement **PNLayoutLoadDelegate** for your class. Once an ad is loaded, you will get a fully created view in Large Layout that can be shown on screen using **show** method. If you want to remove an ad from the screen, you can use **hide** method. ##4. Use the ad Once the PNLayoutLoadDelegate callback is invoked you can show the ad using the **show** method or hide externally using **hide**. Expect the user to close the ad by itself unless you have a specific need to hide it. If the ad is not ready any interaction with this method will do nothing [block:code] { "codes": [ { "code": "// Use this to show the full screen interstitial\nlargeLayout.show()\n// Use this to hide the full screen interstitial\nlargeLayout.hide()", "language": "swift" } ] } [/block] [block:code] { "codes": [ { "code": "// Use this to show the full screen interstitial\n[largeLayout show];\n// Use this to hide the full screen interstitial\n[largeLayout hide];", "language": "objectivec" } ] } [/block]