<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: U Sai Rajesh</title>
    <description>The latest articles on DEV Community by U Sai Rajesh (@srajesh636).</description>
    <link>https://dev.to/srajesh636</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F382319%2F70c072a4-6b7b-469c-9c8a-e094bcebec24.png</url>
      <title>DEV Community: U Sai Rajesh</title>
      <link>https://dev.to/srajesh636</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/srajesh636"/>
    <language>en</language>
    <item>
      <title>How we reduced our production apk size by 70% in React Native? </title>
      <dc:creator>U Sai Rajesh</dc:creator>
      <pubDate>Sat, 16 May 2020 23:54:48 +0000</pubDate>
      <link>https://dev.to/srajesh636/how-we-reduced-our-production-apk-size-by-70-in-react-native-1lci</link>
      <guid>https://dev.to/srajesh636/how-we-reduced-our-production-apk-size-by-70-in-react-native-1lci</guid>
      <description>&lt;p&gt;Android app size was one of the biggest concerns we had while working on React Native. As it makes tough on lower-end devices to deal will storage and performance issues.&lt;/p&gt;

&lt;p&gt;Also app's with larger apk sizes makes it less interesting to download for some audiences.&lt;/p&gt;

&lt;p&gt;So we decided to reduce the android &lt;code&gt;apk&lt;/code&gt; size 📦 and started researching and analyzed what are the factors that bloat's up the app size and helped us to reduce size of production apk from &lt;code&gt;43 MB&lt;/code&gt; to &lt;code&gt;17 MB&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;We will explain the whole process of reducing the apk size through a simple &lt;code&gt;Hello World&lt;/code&gt; react-native app in the article.&lt;/p&gt;

&lt;h2&gt;
  
  
  Lets get Started
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;Create a  React Native app called "HelloWorld"&lt;br&gt;
&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight javascript"&gt;&lt;code&gt; &lt;span class="nx"&gt;npx&lt;/span&gt; &lt;span class="nx"&gt;react&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;native&lt;/span&gt; &lt;span class="nx"&gt;init&lt;/span&gt; &lt;span class="nx"&gt;HelloWorld&lt;/span&gt; 
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;After the &lt;code&gt;HelloWorld&lt;/code&gt; app is successfully created 🎉🎉&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;We removed the boilerplate code from &lt;code&gt;App.js&lt;/code&gt; and replaced it with just a Text displaying &lt;code&gt;Hello World !&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;React&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;react&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;View&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;StyleSheet&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;Text&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;react-native&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;App&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="o"&gt;&amp;lt;&amp;gt;&lt;/span&gt;
      &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;View&lt;/span&gt; &lt;span class="nx"&gt;style&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;styles&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;container&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;Text&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="nx"&gt;Hello&lt;/span&gt; &lt;span class="nx"&gt;World&lt;/span&gt; &lt;span class="o"&gt;!&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/Text&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;      &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/View&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;    &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;  &lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;styles&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;StyleSheet&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;create&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;container&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;flex&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;alignItems&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;center&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;justifyContent&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;center&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="nx"&gt;App&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--rRYe1Qvv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://user-images.githubusercontent.com/13884296/82128364-41269880-97d8-11ea-8609-c1fb44721a84.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--rRYe1Qvv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://user-images.githubusercontent.com/13884296/82128364-41269880-97d8-11ea-8609-c1fb44721a84.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let's create a production release apk for &lt;code&gt;HelloWorld&lt;/code&gt; App and see what is the apk size.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;We Noticed that we got an apk with size &lt;code&gt;23 MB&lt;/code&gt; 🙄 for just a app with Text &lt;code&gt;Hello World !&lt;/code&gt;.
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--tUdQs7YE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://user-images.githubusercontent.com/13884296/82129104-01fb4600-97de-11ea-9528-bfab28e58295.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--tUdQs7YE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://user-images.githubusercontent.com/13884296/82129104-01fb4600-97de-11ea-9528-bfab28e58295.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Why does &lt;code&gt;react-native&lt;/code&gt; created an &lt;code&gt;apk&lt;/code&gt; of size 23 MB 🤔 ?
&lt;/h3&gt;

&lt;p&gt;After reading through React Native official docs we found that All the apps from Google Playstore work's on different ABI such as &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;armeabi-v7a&lt;/li&gt;
&lt;li&gt;arm64-v8a&lt;/li&gt;
&lt;li&gt;x86&lt;/li&gt;
&lt;li&gt;x86_64&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So in order to support all the above ABI's &lt;code&gt;react-native&lt;/code&gt; by default creates a &lt;code&gt;Universal APK&lt;/code&gt; which contains files required for different device configuration into a single &lt;code&gt;apk&lt;/code&gt; which bloated the apk size to &lt;code&gt;23 MB&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  What is an ABI 🤔 ?
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;Different Android devices use different CPUs, which in turn support different instruction sets. Each combination of CPU and instruction set has its own Application Binary Interface (ABI).&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  How did we reduce our apk size?
&lt;/h3&gt;

&lt;p&gt;Instead of Generating a &lt;code&gt;Universal apk&lt;/code&gt; we switched to a completely new Publishing format called &lt;code&gt;.aab&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;After generating aab file and uploading to Google Playstore, The Application size reduced drastically by 70% and App size to &lt;code&gt;7.29 MB&lt;/code&gt; from &lt;code&gt;23 MB&lt;/code&gt; 🍻&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--yKUtEtIo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://user-images.githubusercontent.com/13884296/82130925-696cc200-97ed-11ea-8ea8-f1f4f333e0f5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--yKUtEtIo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://user-images.githubusercontent.com/13884296/82130925-696cc200-97ed-11ea-8ea8-f1f4f333e0f5.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Seems Interesting Right 😎&lt;/p&gt;

&lt;h3&gt;
  
  
  So What exactly is &lt;code&gt;aab&lt;/code&gt; and how did it help us ?
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;An AAB (Android App Bundle) is a new  publishing format from google that includes all your app’s compiled code and resources.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Google Play uses the app bundle uploaded to generate and serve optimized and smaller APK for each device configuration and hardware, so only the code and resources that are needed for a specific device are downloaded to run your app and no extra files are bundled in &lt;code&gt;apk&lt;/code&gt; which reduces the &lt;code&gt;apk&lt;/code&gt; size massively.&lt;/p&gt;

&lt;p&gt;Below Flowchart will help you to understand how does the whole process a little better.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;APK&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Ej4jI-it--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://user-images.githubusercontent.com/13884296/82132079-814a4300-97f9-11ea-8d1f-b203464d47f5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Ej4jI-it--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://user-images.githubusercontent.com/13884296/82132079-814a4300-97f9-11ea-8d1f-b203464d47f5.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;AAB&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ylUvurC8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://user-images.githubusercontent.com/13884296/82132077-7e4f5280-97f9-11ea-9a6a-c8e7dea59a2f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ylUvurC8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://user-images.githubusercontent.com/13884296/82132077-7e4f5280-97f9-11ea-9a6a-c8e7dea59a2f.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  How to generate aab ?
&lt;/h3&gt;

&lt;p&gt;To generate an aab is very simple.You can generate an aab both from &lt;code&gt;Android studio&lt;/code&gt; and also through &lt;code&gt;terminal&lt;/code&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Android Studio&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--dEbLmQM2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://user-images.githubusercontent.com/13884296/82132119-06355c80-97fa-11ea-8e2e-e8c35f8cb14e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--dEbLmQM2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://user-images.githubusercontent.com/13884296/82132119-06355c80-97fa-11ea-8e2e-e8c35f8cb14e.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Terminal&lt;br&gt;
&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight javascript"&gt;&lt;code&gt; &lt;span class="nx"&gt;cd&lt;/span&gt; &lt;span class="nx"&gt;android&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;gradlew&lt;/span&gt; &lt;span class="nx"&gt;bundleRelease&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;The generated AAB can be found under &lt;code&gt;android/app/build/outputs/bundle/release/app.aab&lt;/code&gt;, and is ready to be uploaded to Google Play.&lt;/p&gt;

&lt;p&gt;That's it let us know if you have any doubt's in the comments below 🍻&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>reactnative</category>
      <category>beginners</category>
    </item>
    <item>
      <title>How to show Ads in React Native?</title>
      <dc:creator>U Sai Rajesh</dc:creator>
      <pubDate>Sat, 09 May 2020 22:08:05 +0000</pubDate>
      <link>https://dev.to/srajesh636/how-to-show-ads-in-react-native-lcj</link>
      <guid>https://dev.to/srajesh636/how-to-show-ads-in-react-native-lcj</guid>
      <description>&lt;p&gt;Mobile Ads are always considered to the best part of monetizing 💰 the app So we decided to integrate Google Admob in our app, which would let us display ads on both ios and android.&lt;/p&gt;

&lt;p&gt;After roaming through various articles and reading official documentation for AdMob from google and scattered information here and there. I decided to write this blog which has everything in one place.&lt;/p&gt;

&lt;p&gt;We can integrate Google Admob very easily by following the below 2 steps.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Admob Account Setup&lt;/li&gt;
&lt;li&gt;Code Level Integration&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Admob Account Setup
&lt;/h2&gt;

&lt;p&gt;First, you need to create an AdMob account from &lt;a href="https://apps.admob.com/signup/admob-account"&gt;Here&lt;/a&gt; to start using google AdMob services.&lt;/p&gt;

&lt;p&gt;Once you have successfully created an account at AdMob you need to create an App with its name platform (ios or android).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--VCuEZdAB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://user-images.githubusercontent.com/13884296/81353131-e6a98000-90e5-11ea-99f2-6b1b4af17611.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--VCuEZdAB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://user-images.githubusercontent.com/13884296/81353131-e6a98000-90e5-11ea-99f2-6b1b4af17611.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once the app is created you will be getting an appId as below which will be used to target all the ads to a specific application.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;App&lt;/span&gt; &lt;span class="nx"&gt;ID&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;ca&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;pub&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;3940256099942544&lt;/span&gt;&lt;span class="o"&gt;~&lt;/span&gt;&lt;span class="mi"&gt;1458002511&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;So now we have an App ID which is registered at Admob lets try to create some ads, You can select ads from the Banner, Interstitial, and Rewarded ads. We will be using a simple Banner Ad here as an example.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--PdRRI8MV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://user-images.githubusercontent.com/13884296/81353226-1d7f9600-90e6-11ea-816d-62908bfc31a1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--PdRRI8MV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://user-images.githubusercontent.com/13884296/81353226-1d7f9600-90e6-11ea-816d-62908bfc31a1.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now here the last and most important step comes in Admob account setup.&lt;br&gt;
we have to create an Ad Slot, these are the slot that we use in our ios and android app where can target our ads.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Ml8QN8g---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://user-images.githubusercontent.com/13884296/81353355-74856b00-90e6-11ea-8767-1753c54e665a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Ml8QN8g---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://user-images.githubusercontent.com/13884296/81353355-74856b00-90e6-11ea-8767-1753c54e665a.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We will be using the Ad Slot we created just now for the code level integration in the next step.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;Ad&lt;/span&gt; &lt;span class="nx"&gt;Unit&lt;/span&gt; &lt;span class="nx"&gt;Id&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;ca&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;pub&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;3940256099942544&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="mi"&gt;6300978111&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Note : Ads will only start serving on the above adSlot Id once you finish payment information &lt;a href="https://apps.admob.com/v2/payments/overview?pli=1"&gt;Here&lt;/a&gt; and in case of the new account it may take some time to start serving the ads.&lt;/p&gt;

&lt;h2&gt;
  
  
  Code level Integration
&lt;/h2&gt;

&lt;p&gt;We need to install a library called &lt;code&gt;react-native-admob&lt;/code&gt; for using Google Admob in a react native app.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;npm i -S react-native-admob@next&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;and then run&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;react-native link react-native-admob &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Ios app's out of the box does not allow you to display ads on the app for that we have to add &lt;code&gt;GoogleMobileAds.framework&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;The simplest way to import the above framework into our app will be through CocoaPods.Add the below line in your Podfile.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;pod 'Google-Mobile-Ads-SDK'&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;and then run below command&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;pod install --repo-update&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;For more information on Google Mobile Ads Framework you can read &lt;a href="https://developers.google.com/admob/ios/quick-start#import_the_mobile_ads_sdk"&gt;Here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Now let's add the &lt;code&gt;appId&lt;/code&gt; and &lt;code&gt;adUnitId&lt;/code&gt; we got from account set up in the android and ios code for displaying ads.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;IOS &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;AdMob application id should be added to Info.plist.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight javascript"&gt;&lt;code&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;key&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="nx"&gt;GADApplicationIdentifier&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/key&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;string&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="nx"&gt;ca&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;pub&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;3940256099942544&lt;/span&gt;&lt;span class="o"&gt;~&lt;/span&gt;&lt;span class="mi"&gt;1458002511&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/string&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;Android&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Add Admob application id (com.google.android.gms.ads.APPLICATION_ID) in AndroidManifest.xml&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight javascript"&gt;&lt;code&gt;
&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;meta&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt; &lt;span class="nx"&gt;android&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;com.google.android.gms.ads.APPLICATION_ID&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="nx"&gt;android&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;ca-app-pub-3940256099942544~1458002511&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="o"&gt;/&amp;gt;&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;react-native-admob usage&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The implementation of &lt;code&gt;react-native-admob&lt;/code&gt; was quite simple, I just imported ‘AdMobBanner’ and passed adSlot Id to it.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;React&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;react&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;SafeAreaView&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;View&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;react-native&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;AdMobBanner&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;react-native-admob&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;App&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;onFailToRecieveAd&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="o"&gt;&amp;lt;&amp;gt;&lt;/span&gt;
      &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;SafeAreaView&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;AdMobBanner&lt;/span&gt;
          &lt;span class="nx"&gt;adSize&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;largeBanner&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
          &lt;span class="nx"&gt;adUnitID&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;ca-app-pub-3940256099942544/6300978111&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
          &lt;span class="nx"&gt;testDeviceID&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;CF583E54-34C6-453C-80FC-493D2468A51E&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
          &lt;span class="nx"&gt;didFailToReceiveAdWithError&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;onFailToRecieveAd&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="sr"&gt;/&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;      &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/SafeAreaView&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;    &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;  &lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="nx"&gt;App&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;And that’s it :), You will be seeing the ads on your app 🍻 &lt;/p&gt;

&lt;p&gt;If you face any issues,You can find the above example in the Github Repo &lt;a href="https://github.com/srajesh636/React-Native-Admob-Integration/blob/master/App.js"&gt;Here&lt;/a&gt;&lt;/p&gt;

</description>
      <category>react</category>
      <category>reactnative</category>
      <category>javascript</category>
      <category>npm</category>
    </item>
  </channel>
</rss>
