{"id":1175,"date":"2025-04-25T10:43:19","date_gmt":"2025-04-25T10:43:19","guid":{"rendered":"https:\/\/www.freelifemakers.org\/wordpress\/?p=1175"},"modified":"2025-04-27T07:13:41","modified_gmt":"2025-04-27T07:13:41","slug":"nodejs9-reactnative-login","status":"publish","type":"post","link":"https:\/\/www.freelifemakers.org\/wordpress\/index.php\/2025\/04\/25\/nodejs9-reactnative-login\/","title":{"rendered":"nodejs9-\ub9ac\uc561\ud2b8\ub124\uc774\ud2f0\ube0c \ub85c\uadf8\uc778\/ReactNative Login(1)"},"content":{"rendered":"\n<p>ReactNative Login \uc571\uc5d0 \ub300\ud55c \uc124\uba85\uc785\ub2c8\ub2e4.<br>Description of the ReactNative Login app.<br>\uc544\ub798\ub294 \ud504\ub85c\uc81d\ud2b8 \uc0dd\uc131\uacfc \uc14b\ud305\uc5d0 \ub300\ud55c \uc124\uba85\uc785\ub2c8\ub2e4.<br>Below are instructions for creating and setting up a project.<\/p>\n\n\n\n<p><strong>1.RN\ud504\ub85c\uc81d\ud2b8 \uc0dd\uc131<\/strong> \/ Create ReactNative Project<br><a rel=\"noreferrer noopener\" href=\"https:\/\/reactnative.dev\/docs\/getting-started-without-a-framework\" target=\"_blank\">https:\/\/reactnative.dev\/docs\/getting-started-without-a-framework<\/a><br>\uc544\ub798\uc758 \uba85\ub839\uc5b4\ub85c \ud504\ub85c\uc81d\ud2b8\ub97c \uc0dd\uc131\ud569\ub2c8\ub2e4.<br>Create a project with the command below.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>npx @react-native-community\/cli@latest init Your Project name<\/code><\/pre>\n\n\n\n<p><strong>2.\uc548\ub4dc\ub85c\uc774\ub4dc \uc124\uc815 \/ Android Settings <\/strong><br><strong><br>1)sdk location\uc124\uc815 \/ sdk location settings<br><\/strong>project\/android\/locals.properties\ud30c\uc77c\uc774 \uc5c6\uc73c\uba74 \uc0dd\uc131 <\/p>\n\n\n\n<p><strong>2)locals.properties\ud30c\uc77c\uc5d0 \uc548\ub4dc\ub85c\uc774\ub4dc sdk\uc704\uce58\ub97c \uc785\ub825<\/strong> \/ Enter the Android SDK location in the locals.properties file<br>\u203bsdk\uc704\uce58\ub294 \uc548\ub4dc\ub85c\uc774\ub4dc \uc2a4\ud29c\ub514\uc624 \uba54\ub274\uc758 settings-&gt;Language &amp; Frameworks-&gt;Android SDK-&gt;Android SDK Location\uc5d0\uc11c \ud655\uc778 \uac00\ub2a5<br>You can check the SDK location in the Android Studio menu: settings-&gt;Language &amp; Frameworks-&gt;Android SDK-&gt;Android SDK Location<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sdk.dir=\/Users\/gimdaegyeong\/Library\/Android\/sdk<\/code><\/pre>\n\n\n\n<p><strong>3)AndroidManifest.xml \uc124\uc815 \/ AndroidManifest.xml settings<br><\/strong>&#8211; \uc778\ud130\ub137 \uad8c\ud55c \uc124\uc815\uc774 \ud544\uc694\ud55c\ub370 \uc800\uac19\uc740 \uacbd\uc6b0\ub294 \ubcc4\ub3c4\ub85c \uc218\uc815\ud558\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4<br>Internet permission settings are required, but in my case, I didn&#8217;t change anything separately.<br>&#8211; \uae30\ubcf8\uac12\uc73c\ub85c \uc778\ud130\ub137 \uc0ac\uc6a9\uc774 \ud5c8\uc6a9\uc73c\ub85c \uc124\uc815\ub418\uc5b4 \uc788\uc5c8\uc2b5\ub2c8\ub2e4.<br>By default, Internet access was set to Allowed.<br>&#8211; \ud30c\uc77c\uc744 \uc5f4\uc5b4\ubcf4\uace0 &lt;uses-permission android:name=&#8221;android.permission.INTERNET&#8221; \/&gt; \uc774 \ubd80\ubd84\uc774 \uc788\uc73c\uba74 \ub429\ub2c8\ub2e4.<br>Open the file and you should see this line:<br>&#8211; file location : project\/android\/app\/src\/main\/AndroidManifest.xml<\/p>\n\n\n\n<p><strong>3.ios\uc124\uc815<\/strong> \/ ios settings<br>&#8211; https\uac00 \uc544\ub2cc http\ud504\ub85c\ud1a0\ucf5c\uc744 \uc0ac\uc6a9\ud558\uae30 \ub54c\ubb38\uc5d0 http\ud504\ub85c\ud1a0\ucf5c \ud5c8\uc6a9 \uc124\uc815\uc744 \ud574\uc57c\ud569\ub2c8\ub2e4.<br>Since we are using the http protocol instead of https, we need to allow the http protocol.<br><br><strong>1)info.plist\ud30c\uc77c \uc218\uc815<\/strong><br>&#8211; \ud30c\uc77c\uc704\uce58 \/ file location : project\/ios\/project name directory\/info.plist <br>&#8211; \uc624\ub80c\uc9c0 \uceec\ub7ec \ubd80\ubd84\uc744 \uc5ec\ub7ec\ubd84\uc758 \ud615\ud3b8\uc5d0 \ub9de\uac8c \ubc14\uafc9\ub2c8\ub2e4.<br>Change the orange colored part to suit your needs.<br>&#8211; \uc800\uc758 \uacbd\uc6b0\ub294 \ub85c\uceec nodejs\uc708\ub3c4\uc6b0\uc11c\ubc84\uc640 \ud074\ub77c\uc6b0\ub4dc \uc11c\ubc84\ub97c \uc0ac\uc6a9\ud558\uace0 \uc788\uae30 \ub54c\ubb38\uc5d0  \ud5c8\uc6a9 \uc124\uc815\uc744 \ub450 \uad70\ub370 \ud574\uc92c\uc2b5\ub2c8\ub2e4. <br>In my case, I am using a local nodejs Windows server and a cloud server, so I set the permission in two places.<br><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n&lt;!DOCTYPE plist PUBLIC \"-\/\/Apple\/\/DTD PLIST 1.0\/\/EN\" \"http:\/\/www.apple.com\/DTDs\/PropertyList-1.0.dtd\"&gt;\n&lt;plist version=\"1.0\"&gt;\n&lt;dict&gt;\n\t&lt;key&gt;CFBundleDevelopmentRegion&lt;\/key&gt;\n\t&lt;string&gt;en&lt;\/string&gt;\n\t&lt;key&gt;CFBundleDisplayName&lt;\/key&gt;\n\t&lt;string&gt;flmLogin&lt;\/string&gt;\n\t&lt;key&gt;CFBundleExecutable&lt;\/key&gt;\n\t&lt;string&gt;$(EXECUTABLE_NAME)&lt;\/string&gt;\n\t&lt;key&gt;CFBundleIdentifier&lt;\/key&gt;\n\t&lt;string&gt;$(PRODUCT_BUNDLE_IDENTIFIER)&lt;\/string&gt;\n\t&lt;key&gt;CFBundleInfoDictionaryVersion&lt;\/key&gt;\n\t&lt;string&gt;6.0&lt;\/string&gt;\n\t&lt;key&gt;CFBundleName&lt;\/key&gt;\n\t&lt;string&gt;$(PRODUCT_NAME)&lt;\/string&gt;\n\t&lt;key&gt;CFBundlePackageType&lt;\/key&gt;\n\t&lt;string&gt;APPL&lt;\/string&gt;\n\t&lt;key&gt;CFBundleShortVersionString&lt;\/key&gt;\n\t&lt;string&gt;$(MARKETING_VERSION)&lt;\/string&gt;\n\t&lt;key&gt;CFBundleSignature&lt;\/key&gt;\n\t&lt;string&gt;????&lt;\/string&gt;\n\t&lt;key&gt;CFBundleVersion&lt;\/key&gt;\n\t&lt;string&gt;$(CURRENT_PROJECT_VERSION)&lt;\/string&gt;\n\t&lt;key&gt;LSRequiresIPhoneOS&lt;\/key&gt;\n\t&lt;true\/&gt;\n<strong>&lt;!--http\ud5c8\uc6a9\uc744 \uc704\ud55c \ubcf4\uc548\uc124\uc815:http security settings--&gt;\n&lt;key&gt;NSAppTransportSecurity&lt;\/key&gt;\n&lt;dict&gt;\n    &lt;key&gt;NSAllowsArbitraryLoads&lt;\/key&gt;\n    &lt;false\/&gt;\n    &lt;key&gt;NSExceptionDomains&lt;\/key&gt;\n    &lt;dict&gt;\n\n        <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-orange-color\">&lt;key&gt;192.168.0.10&lt;\/key&gt;<\/mark>\n        &lt;dict&gt;\n            &lt;key&gt;NSExceptionAllowsInsecureHTTPLoads&lt;\/key&gt;\n            &lt;true\/&gt;\n            &lt;key&gt;NSExceptionRequiresForwardSecrecy&lt;\/key&gt;\n            &lt;false\/&gt;\n            &lt;key&gt;NSIncludesSubdomains&lt;\/key&gt;\n            &lt;false\/&gt;\n        &lt;\/dict&gt;<\/strong>\n\t\t\n        <strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-orange-color\">&lt;key&gt;media.freelifemakers.org&lt;\/key&gt;<\/mark>\n        &lt;dict&gt;\n            &lt;key&gt;NSExceptionAllowsInsecureHTTPLoads&lt;\/key&gt;\n            &lt;true\/&gt;\n            &lt;key&gt;NSExceptionRequiresForwardSecrecy&lt;\/key&gt;\n            &lt;false\/&gt;\n            &lt;key&gt;NSIncludesSubdomains&lt;\/key&gt;\n            &lt;true\/&gt;\n        &lt;\/dict&gt;\n\n    &lt;\/dict&gt;\n&lt;\/dict&gt;\n&lt;!--\/\/ http\ud5c8\uc6a9\uc744 \uc704\ud55c \ubcf4\uc548\uc124\uc815:http security settings--&gt;<\/strong>\n\t&lt;key&gt;NSLocationWhenInUseUsageDescription&lt;\/key&gt;\n\t&lt;string&gt;&lt;\/string&gt;\n\t&lt;key&gt;UILaunchStoryboardName&lt;\/key&gt;\n\t&lt;string&gt;LaunchScreen&lt;\/string&gt;\n\t&lt;key&gt;UIRequiredDeviceCapabilities&lt;\/key&gt;\n\t&lt;array&gt;\n\t\t&lt;string&gt;arm64&lt;\/string&gt;\n\t&lt;\/array&gt;\n\t&lt;key&gt;UISupportedInterfaceOrientations&lt;\/key&gt;\n\t&lt;array&gt;\n\t\t&lt;string&gt;UIInterfaceOrientationPortrait&lt;\/string&gt;\n\t\t&lt;string&gt;UIInterfaceOrientationLandscapeLeft&lt;\/string&gt;\n\t\t&lt;string&gt;UIInterfaceOrientationLandscapeRight&lt;\/string&gt;\n\t&lt;\/array&gt;\n\t&lt;key&gt;UIViewControllerBasedStatusBarAppearance&lt;\/key&gt;\n\t&lt;false\/&gt;\n&lt;\/dict&gt;\n&lt;\/plist&gt;\n<\/code><\/pre>\n\n\n\n<p><strong>4.\uc2e4\ud589\ud654\uba74<\/strong> \/ Run Screen<\/p>\n\n\n\n<p>-npm run android \ub610\ub294 npm run ios\ub85c \uae30\ubcf8 \uc571\uc774 \uc2e4\ud589\ub418\ub294\uc9c0 \ud655\uc778 \ud569\ub2c8\ub2e4.<br>Make sure the native app runs with npm run android or npm run ios .<br>\u203b \uc548\ub4dc\ub85c\uc774\ub4dc \uc2e4\ud589\uc2dc\uc5d0\ub294 \ubc18\ub4dc\uc2dc \uc548\ub4dc\ub85c\uc774\ub4dc \uc2a4\ud29c\ub514\uc624\uac00 \uc2e4\ud589\ub418\uc5b4 \uc788\uc5b4\uc57c \ud569\ub2c8\ub2e4.<br>Android Studio must be running when running Android.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>ReactNative Login \uc571\uc5d0 \ub300\ud55c \uc124\uba85\uc785\ub2c8\ub2e4.Description of the ReactNative Login app.\uc544\ub798\ub294 \ud504\ub85c\uc81d\ud2b8 \uc0dd\uc131\uacfc \uc14b\ud305\uc5d0 \ub300\ud55c \uc124\uba85\uc785\ub2c8\ub2e4.Below are instructions for creating and setting up a project. 1.RN\ud504\ub85c\uc81d\ud2b8 \uc0dd\uc131 \/ Create ReactNative Projecthttps:\/\/reactnative.dev\/docs\/getting-started-without-a-framework\uc544\ub798\uc758 \uba85\ub839\uc5b4\ub85c \ud504\ub85c\uc81d\ud2b8\ub97c \uc0dd\uc131\ud569\ub2c8\ub2e4.Create a project with the command below. 2.\uc548\ub4dc\ub85c\uc774\ub4dc \uc124\uc815 \/ Android Settings 1)sdk location\uc124\uc815 \/ sdk location settingsproject\/android\/locals.properties\ud30c\uc77c\uc774 \uc5c6\uc73c\uba74 \uc0dd\uc131 2)locals.properties\ud30c\uc77c\uc5d0 \uc548\ub4dc\ub85c\uc774\ub4dc sdk\uc704\uce58\ub97c [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[9,5,1],"tags":[],"class_list":["post-1175","post","type-post","status-publish","format-standard","hentry","category-nodejs","category-reactnative","category-uncategorized","missing-thumbnail"],"_links":{"self":[{"href":"https:\/\/www.freelifemakers.org\/wordpress\/index.php\/wp-json\/wp\/v2\/posts\/1175","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.freelifemakers.org\/wordpress\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.freelifemakers.org\/wordpress\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.freelifemakers.org\/wordpress\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.freelifemakers.org\/wordpress\/index.php\/wp-json\/wp\/v2\/comments?post=1175"}],"version-history":[{"count":24,"href":"https:\/\/www.freelifemakers.org\/wordpress\/index.php\/wp-json\/wp\/v2\/posts\/1175\/revisions"}],"predecessor-version":[{"id":1204,"href":"https:\/\/www.freelifemakers.org\/wordpress\/index.php\/wp-json\/wp\/v2\/posts\/1175\/revisions\/1204"}],"wp:attachment":[{"href":"https:\/\/www.freelifemakers.org\/wordpress\/index.php\/wp-json\/wp\/v2\/media?parent=1175"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.freelifemakers.org\/wordpress\/index.php\/wp-json\/wp\/v2\/categories?post=1175"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.freelifemakers.org\/wordpress\/index.php\/wp-json\/wp\/v2\/tags?post=1175"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}