<?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: Ranjith Kumar Nagella</title>
    <description>The latest articles on DEV Community by Ranjith Kumar Nagella (@rnagella).</description>
    <link>https://dev.to/rnagella</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%2F387176%2F7fb80459-e4c6-45f2-a770-10180100ea33.jpg</url>
      <title>DEV Community: Ranjith Kumar Nagella</title>
      <link>https://dev.to/rnagella</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/rnagella"/>
    <language>en</language>
    <item>
      <title>Simplify APNs configuration </title>
      <dc:creator>Ranjith Kumar Nagella</dc:creator>
      <pubDate>Tue, 07 Jul 2020 00:47:05 +0000</pubDate>
      <link>https://dev.to/rnagella/simplify-apns-configuration-1e4d</link>
      <guid>https://dev.to/rnagella/simplify-apns-configuration-1e4d</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--uiQ6RqFC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/an4oztkgcuofb4y7hlb9.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--uiQ6RqFC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/an4oztkgcuofb4y7hlb9.jpg" alt="Alt Text"&gt;&lt;/a&gt;&lt;br&gt;
&lt;span&gt;Photo by &lt;a href="https://unsplash.com/@jamie452?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText"&gt;Jamie Street&lt;/a&gt; on &lt;a href="https://unsplash.com/s/photos/push-notification?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText"&gt;Unsplash&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;Do you know we can set up iOS Push Notification using &lt;em&gt;APNs Auth Key&lt;/em&gt; (token-based)? If not, keep reading.&lt;/p&gt;

&lt;p&gt;This week I was setting up Push Notification for iOS in one of our marketing tools (Responsys) and, I noticed you can choose APNs Auth Key (Token-based) over Certificate-based connection to APNs.&lt;/p&gt;

&lt;p&gt;This way, we could use &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Same token for multiple providers server&lt;/li&gt;
&lt;li&gt;One token to distribute notifications for all your company's app&lt;/li&gt;
&lt;li&gt;We don't have to renew the Push notification certificates every year as we do with Certificate-based.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;How do you achieve this - &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Log in to your &lt;a href="http://developer.apple.com/"&gt;Developer Account&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Go to Certificates, Identifiers &amp;amp; Profiles&lt;/li&gt;
&lt;li&gt;Keys section&lt;/li&gt;
&lt;li&gt;Add&lt;/li&gt;
&lt;li&gt;Register a New Key
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--qzuJGXXc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/xj5ktiwfbm3zxqosx7x1.png" alt="Alt Text"&gt;

&lt;ul&gt;
&lt;li&gt;Enter the key's name&lt;/li&gt;
&lt;li&gt;Select the APNs service&lt;/li&gt;
&lt;li&gt;Go to the next step&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;When you request a key, Apple gives us the following - &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A 10-character string with the Key ID&lt;/li&gt;
&lt;li&gt;An authentication token signing key, specified as a text file (with a .p8 file extension)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Note:&lt;/em&gt; We need to secure both pieces of information carefully.&lt;/p&gt;

&lt;p&gt;You can learn more about this at - &lt;a href="https://developer.apple.com/documentation/usernotifications/setting_up_a_remote_notification_server/establishing_a_token-based_connection_to_apns"&gt;https://developer.apple.com/documentation/usernotifications/setting_up_a_remote_notification_server/establishing_a_token-based_connection_to_apns&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Clean up untracked files in git repository based on .gitignore</title>
      <dc:creator>Ranjith Kumar Nagella</dc:creator>
      <pubDate>Mon, 29 Jun 2020 19:57:41 +0000</pubDate>
      <link>https://dev.to/rnagella/clean-up-untracked-files-in-git-repository-based-on-gitignore-56dl</link>
      <guid>https://dev.to/rnagella/clean-up-untracked-files-in-git-repository-based-on-gitignore-56dl</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--sr9_Sw7i--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/0jdtrw14ihx2uem3zso1.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--sr9_Sw7i--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/0jdtrw14ihx2uem3zso1.jpg" alt="Why am I here?"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://unsplash.com/photos/pBFuAP0Ap9c"&gt;Photo by Jon Tyson on Unsplash&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The other day I had created a new React Native module project and pushed it to the git repository. Then later, I added the file &lt;code&gt;.gitignore.&lt;/code&gt; Since we added it later, these files will still exist in our repository index. How can we clean them up?&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Commit all your local changes including .gitignore&lt;br&gt;
&lt;code&gt;git commit -am "file changes"&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Remove everything from the repository&lt;br&gt;
&lt;code&gt;git rm -r --cached .&lt;/code&gt; &lt;br&gt;
&lt;code&gt;#&lt;/code&gt; --cached will only remove files from the index.&lt;br&gt;
&lt;code&gt;.&lt;/code&gt; Indicates all files will be untracked&lt;br&gt;
or&lt;br&gt;
you can un-track individual files&lt;br&gt;
&lt;code&gt;git rm --cached ios/Pods&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Re-add everything&lt;br&gt;
&lt;code&gt;git add --all&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Commit the files&lt;br&gt;
&lt;code&gt;git commit -m "cleanup .gitignore files"&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>reactnative</category>
      <category>git</category>
      <category>github</category>
    </item>
    <item>
      <title>Integrate Native module w/o Auto Linking in React Native</title>
      <dc:creator>Ranjith Kumar Nagella</dc:creator>
      <pubDate>Tue, 23 Jun 2020 21:48:52 +0000</pubDate>
      <link>https://dev.to/rnagella/integrate-native-module-w-o-auto-linking-in-react-native-ccf</link>
      <guid>https://dev.to/rnagella/integrate-native-module-w-o-auto-linking-in-react-native-ccf</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--oRIGnp-1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/v6jhmman20b5elm0w7aj.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--oRIGnp-1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/v6jhmman20b5elm0w7aj.jpg" alt="Alt Text"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://unsplash.com/photos/KfLJLJvkovo"&gt;Photo by Andriyko Podilnyk on Unsplash&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This week I had to help one of my engineers understand how to integrate a Native Module that is not enabled by Auto Linking and how it works for iOS and Android. It might happen to one of us who is not familiar with changes that occurred in the React Native ecosystem over the years.&lt;/p&gt;

&lt;p&gt;The following are the reasons you might have to use manual linking Native modules for iOS, Android, or both.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;There is a 3rd party, and they don't yet support or configured Auto Linking&lt;/li&gt;
&lt;li&gt;The 3rd party you are using is creating issues with iOS/Android builds&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For example, when adding &lt;code&gt;flipper-plugin-reactotron,&lt;/code&gt; you need to add &lt;code&gt;react-native-flipper&lt;/code&gt; as a dependency. In this case, the flipper dependency copies the scripts to debug and release targets. As you know already, Flipper only supports in debug scheme. Hence, we need this solution.&lt;/p&gt;

&lt;p&gt;Here is how you can achieve it- &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Run auto-linking manually&lt;br&gt;
&lt;code&gt;react-native link &amp;lt;module-name&amp;gt;&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Review and commit changes for iOS and Android&lt;br&gt;
&lt;code&gt;git commit -am "Add 3rd party module - XYZ"&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Disable auto-linking for that particular module such that React Native stops warning or error in your console.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create a file &lt;code&gt;react-native.config.js&lt;/code&gt;, if not exist, in your project root dir. If not, add to the &lt;code&gt;dependencies&lt;/code&gt; object.
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Commit the file changes&lt;br&gt;
&lt;code&gt;git commit -am "Ignore React Native auto-linking for react-native-flipper"&lt;/code&gt;&lt;br&gt;
&lt;a href="https://gist.github.com/rnagella/318c43a2d75e845395a87f581a8e71ab"&gt;https://gist.github.com/rnagella/318c43a2d75e845395a87f581a8e71ab&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;In case, you need to update to next version. You need to unlink and link it again&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;react-native unlink &amp;lt;module-name&amp;gt;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;git commit -am "Unlink &amp;lt;module-name&amp;gt;"&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;yarn upgrade --latest&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Comment the dependency within &lt;code&gt;react-native-config.js&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;react-native link &amp;lt;module-name&amp;gt;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;git commit -am "Update &amp;lt;module-name&amp;gt; to latest"&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>reactnative</category>
      <category>ios</category>
      <category>android</category>
    </item>
    <item>
      <title>App Onboarding - iOS</title>
      <dc:creator>Ranjith Kumar Nagella</dc:creator>
      <pubDate>Mon, 15 Jun 2020 23:49:35 +0000</pubDate>
      <link>https://dev.to/rnagella/app-onboarding-ios-588h</link>
      <guid>https://dev.to/rnagella/app-onboarding-ios-588h</guid>
      <description>&lt;p&gt;&lt;em&gt;How to Onboard employee for your iOS app&lt;/em&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--uydhj_8A--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/2nq2ibyac0dy7w1lw5m0.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--uydhj_8A--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/2nq2ibyac0dy7w1lw5m0.jpg" alt="App OnBoarding - iOS"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://unsplash.com/photos/n31x0hhnzOs"&gt;Photo by Yura Fresh on Unsplash&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There is a team of Developers, QA, Designers, and Products that works daily. Beyond, there are cross-functional teams, other departments., who want to get access to your apps such as Growth and Marketing.&lt;/p&gt;

&lt;p&gt;If you are in a position that helps provide access to your iOS app, then you know how painful it is to manage these requests. You might never think of explaining how this process works to your co-workers who aren't familiar with the iOS ecosystem and new to the app development.&lt;/p&gt;

&lt;p&gt;I want to share the below flow diagram, which helps you think about the options available and how to evaluate who belongs to which groups.&lt;/p&gt;

&lt;p&gt;I hope this helps you with a clear understanding, and if it finds useful, please leave a comment or suggestion.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Ib0leeXG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/ndb3wqajqhutngytosnw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Ib0leeXG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/ndb3wqajqhutngytosnw.png" alt="App Onboarding - iOS"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>reactnative</category>
      <category>ios</category>
      <category>flutter</category>
    </item>
  </channel>
</rss>
