<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های samira gheibipour</title>
        <link>https://virgool.io/feed/@samira.ghaibepoor</link>
        <description>Programmer</description>
        <language>fa</language>
        <pubDate>2026-06-16 16:19:49</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/1500534/avatar/O0xzNN.jpeg?height=120&amp;width=120</url>
            <title>samira gheibipour</title>
            <link>https://virgool.io/@samira.ghaibepoor</link>
        </image>

                    <item>
                <title>نحوه گرفتن apk موبایل در ریکت نیتیو</title>
                <link>https://virgool.io/@samira.ghaibepoor/%D9%86%D8%AD%D9%88%D9%87-%DA%AF%D8%B1%D9%81%D8%AA%D9%86-apk-%D9%85%D9%88%D8%A8%D8%A7%DB%8C%D9%84-%D8%AF%D8%B1-%D8%B1%DB%8C%DA%A9%D8%AA-%D9%86%DB%8C%D8%AA%DB%8C%D9%88-kdz5dves3b7b</link>
                <description>1- ابتدا درون فایل build.gradle رفته (آدرس این فایل از مسیر android/app/build.gradle/. ) و درون این فایل دوتا پارامتر هستند با نام versionCode,versionName ک این دو مقدار را افزایش دادهمی توان جهت اطمینان پوشه build (از مسیرandroid/app/build/.) را پاک کرده2- تو ترمینال درون خود پروژه (منظور توی root پروژه یه ترمینال باز کنید به ترتیب دستورات زیر را بنویسید)cd android./gradlew app:assembleReleaseهرگاه تمام شدمیتوان فایل apk مورد نظر را از آدرس.\android\app\build\outputs\apk\releaseو فایلی با نام universal را برداشته و هر اسم دلخواهی ک میخواین بدین</description>
                <category>samira gheibipour</category>
                <author>samira gheibipour</author>
                <pubDate>Wed, 26 Mar 2025 12:23:31 +0330</pubDate>
            </item>
                    <item>
                <title>رفع خطای ssl در pfsense</title>
                <link>https://virgool.io/@samira.ghaibepoor/%D8%B1%D9%81%D8%B9-%D8%AE%D8%B7%D8%A7%DB%8C-ssl-%D8%AF%D8%B1-pfsense-f8gopkuqx3rr</link>
                <description>ابتدا nginx همون سرور بریدو قسمت سرتیفیکت آن دامین رفته و آن را دانلود کنید مانند (شکل زیر)SSL Certification &gt; select your domain &gt; click on 3 point &gt; downloadسپس با ip وارد پنل ادمین pfSense شوید و در قسمت منویSystem &gt; Cert. Mangerرفته ( مانند شکل زیر)سپس در رکورد دامین مورد نظر ویرایش را زده و قسمت هایCertificate dataPrivate key dataرا که دانلود کردید از nginx را ویرایش کنیدو گاهی پیش میاد که خود pfSense ریلود نمیشه هرگاه ssl رو آپدیت میکنی. که برای این کار میتوان یک بار بهSystem&gt;Advancedرفته و دکمه save را بزنید</description>
                <category>samira gheibipour</category>
                <author>samira gheibipour</author>
                <pubDate>Sat, 13 Jul 2024 09:35:24 +0330</pubDate>
            </item>
                    <item>
                <title>patch-package</title>
                <link>https://virgool.io/@samira.ghaibepoor/patch-package-vmlfjc8115wb</link>
                <description>گاهی پیش میاد که شما توی پروژه تون تغییراتی رو توی پکیجهای(پلاگین،لایبرری) که نصب کردید میدیدحالا میتونه برطرف کردن باگ پلاگینه باشه یا تغییرات کوچیکی مثل تغییر رنگ و ...حالا مشکل اینجاست که میخواید این تغییرات همیشه بمونه و نخواید اگه احیانا پوشه نود ماژول(node_modules ) پروژه تون رو پاک کردید و دوباره پکیجهارو نصب کنید (با حفظ تغییرات) برای تغییراتتون  مشکلی پیش نیاد، و با خیال راحت (یعنی نکه بصورت دستی از دوباره بعد از نصب برید تغییرات رو برگردونید ) به کارتون ادامه بدیدخب این مشکل رو لایبرری patch-package حل کرده که از لینک زیر  https://www.npmjs.com/package/patch-packageمیتونید مراجعه کنید و هلپش رو بخونیدهمونطور که گفته ابتدا توی فایل package.json پروژه تون خط کد زیر رو توی scripts اضافه کنید&quot;postinstall&quot;: &quot;patch-package&quot;و سپس حالا بر حسب اینکه yarn یا npm  استفاده میکنید دستور زیر رو توی ترمینال پروژه تون ران کنیدnpm i patch-packageو سپس پکیجی رو که تغییرات دادید و میخواید تغییراتش حفظ بشه رو توی این دستور بزارید npx  patch-package  package-nameیعنی به جای package-name اسم لایبرری رو بزاریدمثلا یه تغییری توی پکیج react-native-share دادید و میخواید این لایبرری رو با حفظ تغییراتش داشته باشید، این میشه دستوری ک باید ران کنید npx  patch-package  react-native-shareبعد از اتمام مراحل بالا اگه دقت کرده باشید درون پوشه root پروژه تون یک فولدر به اسم patches اضافه شدهکه داخلش لیست همه لایبرری های که شما میخواید با حفظ تغییرات شما بیاد توی پروژه هستش </description>
                <category>samira gheibipour</category>
                <author>samira gheibipour</author>
                <pubDate>Mon, 01 May 2023 17:23:30 +0330</pubDate>
            </item>
                    <item>
                <title>راه اندازی iis درون ویندوز</title>
                <link>https://virgool.io/@samira.ghaibepoor/%D8%B1%D8%A7%D9%87-%D8%A7%D9%86%D8%AF%D8%A7%D8%B2%DB%8C-iis-%D8%AF%D8%B1%D9%88%D9%86-%D9%88%DB%8C%D9%86%D8%AF%D9%88%D8%B2-ourxzftbxika</link>
                <description>سلاموقت همگی بخیرسریع میرم سر اصل مطلب ک چطور بتونیم iis رو روی ویندوز بیاریم بالا که بتونیم روش یه سرویس رو راه اندازی کنیمابتدا برای اینکه خود iis رو بیاریم روی ویندوز بیاریم بالا توی start ویندوز بنویسیدturn windows features on or off و کلیک نماییدسپس در پنجره باز شدهدر قسمت internet information servicesرو تیک میزنید و باید اینا پیش فرض تیک شده باشن حالا بر حسب نیاز فیچرها رو کم و زیاد کنیدسپس اوکی کنید و توی start بنویسید internet information services و یه iis میاد بالاو سپس احتمالا با همچین صفحه ای مواجه میشیداز سمت چپ منو بر روی سایت کلیک راست کردهو بر روی add website زده، با پنجره ای به این شکل مواجه میشویدو باقی موارد هم خودتون احتمالا بدونید که یه اسم پیش فرض انتخاب میکنید و بعد هم مسیر پوشه پابلیش و بعد هم یه پورت رو براش ست میکنیدو بعد از ساختن اگر بر روی پروژه خود کلیک نمایید در سمت راست صفحه همونطور ک مشاهده میکنیدمیتونید سرویس رو استارت یا استاپ کنید و یا ریسارتو از قسمت پایین هم browse(port) هم میتونید سرویس خودتون رو ران کرده و نتیجه کارتون رو ببینید</description>
                <category>samira gheibipour</category>
                <author>samira gheibipour</author>
                <pubDate>Wed, 01 Mar 2023 13:48:31 +0330</pubDate>
            </item>
                    <item>
                <title>ریکت کوئری</title>
                <link>https://virgool.io/@samira.ghaibepoor/%D8%B1%DB%8C%DA%A9%D8%AA-%DA%A9%D9%88%D8%A6%D8%B1%DB%8C-sfkyp0zjon16</link>
                <description>با ریکت کوئری کنترل بیشتری روی داده های دریافتی از سمت سرور داریم، میتوان داده های مورد نظر رو از api گرفت و اون رو کش(cache) میکنه و...در واقع منطق ریکت کوئری میگه ک شما یه تابع fetcher به من بده ( مثل fetch ,axios ,... اون چیزی که میخواد یه تابع یک دیتا برگردونه) بقیه عملیات مثل کش کردن و آپدیت کردن و... با من.در واقع ریکت کوئری میاد چیکار میکنه؟ میاد اول دیتا ما رو میگیره از api و بعد با همون key ک تعریف کردیم، دیتا رو با همون key کش میکنه و بعد نشون کاربر میده( توجه داشته باشید که اگه دفعه بعدی همون useQuery  یا هر تابعی از react query رو با همون key  صدا زد -&gt; بصورت موازی که داره دیتا کش شده همون key  رو نشون کاربر میده، میره دیتا رو از سرور میگیره و اگه دیتا تغییری نکرد ک هیچ کاری نمیکنه. اما اگه دیتا گرفته شده مغایرت داشت با دیتا کش شده( حتی یه کلمه اش) میاد کل دیتا رو جایگزین دیتا کش شده میکنه و نشون کاربر میده.)ببینید از مزایای ریکت کوئری میشه به این اشاره کرد ک دیگه شما state اضافه ای مثل loading,data,error و اینا تعریف نمیکنید. یعنی چی؟یعنی اینکه شما وقتی بصورت عادی یه Api  رو کال میکنید call api=&gt;setState loading=true;setState data=fetch from data;setState error=&quot;message error&quot;;نیاز دارید به حداقل این نمونه stateها ک با استفاده از ریکت کوئری دیگه نیازی به تعریف این قبیل stateها ندارید و خودش هندل میکنه و هر زمان خروجی رو به ما میدهتوجه: توجه داشته باشید که ریکت کوئری رو باید توی خود کامپوننت تعریفش کنید! یعنی نمیتونید توی یه فانشن تعریفش کنید و... باید توی خود root کامپوننت تعریفش کنید.خب برای استفاده از  ریکت کوئری ابتدا باید در اولین پیجی ک برنامتون فراخوانی میشه حالا یا app  یا index پروژه تون این کانفیگ رو بزارید(البته توجه داشته باشید ک باید @tanstack/react-query رو نصب کنید )import {QueryClient, QueryClientProvider} from &#x27;@tanstack/react-query&#x27;;const queryClient = new QueryClient();وQueryClientProvider  رو اول کدهای ک نوشتید بزارید &lt;QueryClientProvider client={queryClient}&gt;&lt;/QueryClientProvider&gt;بعنوان مثال من توی فایل index.js م اومدم اینطور گذاشتمimport React from &#x27;react&#x27;;import {AppRegistry} from &#x27;react-native&#x27;;import {QueryClient, QueryClientProvider} from &#x27;@tanstack/react-query&#x27;;import App from &#x27;./app/App&#x27;;import {name as appName} from &#x27;./app.json&#x27;;const queryClient = new QueryClient();const MyProject= () =&gt; (&lt;QueryClientProvider client={queryClient}&gt;&lt;App /&gt;&lt;/QueryClientProvider&gt;);AppRegistry.registerComponent(appName, () =&gt; MyProject);خب حالا نمونه استفاده از useQuery رو اول میگمتوی جای ک میخواید استفاده کنید(منظورم کامپوننت یا صفحه و...)اول importش میکنیدimport { useQuery } from &#x27;@tanstack/react-query&#x27;سپسconst { isLoading, isError, data, error } = useQuery({queryKey: [&#x27;todos&#x27;],queryFn: fetchTodoList,})اینطور استفاده میکنیم، ک حالا به توضیح تک تکشون میپردازیمفقط دقت داشته باشید کخروجی useQuery بیشتر از این 4 مورد هست ک از پایین میتونید بقیه موارد رو اضافه یا کم کنید،و همینطور ورودیش https://tanstack.com/query/v4/docs/reference/useQuery ک در ابتدا وقتی تو صفحه میخواید لودش کنید اول isLoading مقدارش trueهست تا هر موقع دیتا گرفت این isLoading مقدارش فالس میشهیعنی خود ریکت کوئری متناسب خروجی هرکدوم رو ست میکنه ک ما با این خروجیا میتونیم دیتا مورد نظرمون رو به کاربر بگیممثلا میتونیم بزاریم isLaoding? (&lt;/Loading&gt;):(data or error handel)یعنی  اگه loading مقدارش true بود میگیم به کاربر loading  رو نشون بده اگه نه بره همینطور error  یا data  رو هندل کنه و متناسب باهاش داده مورد نظر رو به کاربر نشون بدهاما آرگومانهای ورودی:queryKey این مقدار برای هر useQuery که ما میسازیم باید uniqe باشه(یعنی خاص و غیر تکراری چون دیتا دریافتی از سرور با این key  ذخیره میشه) و همینطور ک توی مثالش هم مشخصه باید رشته باشهو آرگومان دومqueryFnهمون تابع fetcherی ک از قبل ساختیمو همینطور ما option های اضافه تری هم میتونیم داشته باشیممثلا ما نمیخوایم با لود صفحه useQuery ما صدا زده بشه میخوایم وقتی روی یه دکمه(یا باتن) بزنیم این useQuey فراخوانی بشه خب از enable=fale استفاده میکنیمبرای مثال من اینطور نوشتمconst {isLoading,isInitialLoading,isError,data,error,refetch,isFetching,} = useQuery({queryKey: [&#x27;useInventoryList&#x27;],queryFn: () =&gt;getInventoryList({RowFrom:0,RowCount:10}),enabled: false,});ک هر موقع میخواید صداش بزنید باید refetch  رو صدا بزنیدو همینطور میتونید تایم کش رو کم و زیاد کنید و آپشنهای زیاد دیگه ای ک خودتون بقیه داکیومنت رو بخونید و تست کنیدهدف من یه سمپل ساده از useQuery بود اما یه هوک دیگه از ریکت کوئری useQueryClient هست (البته یکی از کاربرداش ک من کار کردم میدونم اینه)  که داریم یه useQuery رو مثلا با page=1 صداش میزنیم و توی بطن ماجرا هم میخوایم همزمان page=2 رو هم صدا بزنیمبعنوان مثالqueryClient=useQueryClient();queryClient.prefetchQuery(queryKey,queryFn)در واقع میره دیتا page بعد رو هم میگیره و کش میکنه ک برای دفعات بعدی میخوایم page بعد رو صدا بزنیم سرعت لودش سریع باشهاما هوک دیگه useInfiniteQueryهست ، ما گاهی یک Api  داریم ک علاوه بر page=1 باز به page قبل و بعدش نیاز داریم در واقع دیتا همراه با paggination بیاد ک از این هوک استفاده میکنیم ک در واقع دیتا قبل و بعدی رو هندل میکنه و چک میکنه ک آیا page بعدی دیتا داره یا نه و...نمونه استفاده ازشconst {fetchNextPage,fetchPreviousPage,hasNextPage,hasPreviousPage,isFetchingNextPage,isFetchingPreviousPage,...result} = useInfiniteQuery({queryKey,queryFn: ({ pageParam = 1 }) =&gt; fetchPage(pageParam),...options,getNextPageParam: (lastPage, allPages) =&gt; lastPage.nextCursor,getPreviousPageParam: (firstPage, allPages) =&gt; firstPage.prevCursor,}) https://tanstack.com/query/v4/docs/reference/useInfiniteQuery که پارامترهای ورودی باز مشخصه و خروجیاما یه توضیح لازم هست بدم درمورد getNextPageParamکه دوتا ورودی داره این تابع و یک خروجیک ورودی اولش ک به اسم lastPage هست در واقع مقدار آخرین دیتا از آخرین pageی که ما به سرور ریکوست دادیم برای گرفتن دیتا api رو درون خودش نگه میدارد ( بنظرم بهتره اسمش رو به DataOfLastPage تغییر بدیم خوانایی و مفهوم رو بهتر میرسونه، این نظر شخصی منه! چون وقتی میگیم lastPage توی ذهن ما یه عدد تداعی میشه تا یه دیتا)ورودی دوم allPage که داخلش همه دیتاهای همه pageهای ک تا حالا ریکوست داده به سرور رو داره(یعنی همه pageهای تا حالا دیتا گرفته رو داخش داره)page =1  -&gt; data1page=2 -&gt; data2page=3 -&gt; data3که اگه بخوایم این مثال رو برای سه درخواست به سرور درنظر بگیرم مقدار lastPage ما شامل data3 میشه و مقدار allPage ما میشه هر سه مقدار data1, data2,data3 و همینطور خروجی getNextPageParam یک عدد هست ( در واقع یک شماره page رو ریترن میکنه) ک اون عدد میشه page بعدی ک باید queryFn فراخوانی کنه رو برمیگردونه ک این مقدار رو ما باید ست کنیم و توی ریترنش برگردونیمتوجه : مقدار pageParam از تابع queryFn: ({ pageParam = 1 }) =&gt; fetchPage(pageParam) ک در بار اول مقدارش رو میتونیم با 1 ست کنیم و برای بارهای بعد pageParam مقدار جدیدش رو از تابع getNaxtPageParam میگیره( که آخرین pageی ک باید فراخوانی بشه رو برمیگردونه)       </description>
                <category>samira gheibipour</category>
                <author>samira gheibipour</author>
                <pubDate>Tue, 29 Nov 2022 14:30:50 +0330</pubDate>
            </item>
                    <item>
                <title>تنظیمات اولیه برای راه اندازی پروژه ریکت نیتیو</title>
                <link>https://virgool.io/@samira.ghaibepoor/%D8%AA%D9%86%D8%B8%DB%8C%D9%85%D8%A7%D8%AA-%D8%A7%D9%88%D9%84%DB%8C%D9%87-%D8%A8%D8%B1%D8%A7%DB%8C-%D8%B1%D8%A7%D9%87-%D8%A7%D9%86%D8%AF%D8%A7%D8%B2%DB%8C-%D9%BE%D8%B1%D9%88%DA%98%D9%87-%D8%B1%DB%8C%DA%A9%D8%AA-%D9%86%DB%8C%D8%AA%DB%8C%D9%88-d1ninrsqgayk</link>
                <description>1- برای اینکه وقتی زبان گوشی رو تغییر بدیم، المانهای توی اپمون تغییر نکنهباید زبان گوشی رو فیکس بزاریم روی همون ltr بمونه و جلوگیری کنیم از rtl آنروش اول:ک توی app.js و یا توی index.js بیاید این قطعه کد رو قرار بدیمimport { I18nManager,Platform } from &#x27;react-native&#x27;; I18nManager.forceRTL(false); I18nManager.allowRTL(false);روش دوم:و یا  میتوان از روش دوم زیر استفاده کردداخل MainApplication ابتدا importزیرا وارد نماییدimport com.facebook.react.modules.i18nmanager.I18nUtil;و سپس درون متد oncreate این قطعه کد رو بزاریدI18nUtil sharedI18nUtilInstance = I18nUtil.getInstance();

 sharedI18nUtilInstance.allowRTL(getApplicationContext(), false);و همینوط توی androidManifestتوی قسمت application این کد رو بزاریدandroid:supportsRtl=&amp;quotfalse&amp;quot2- برای اینکه بخوایم از فونتهای خاصی استفاده کنیم توی اپمون ابتدا فونتهای موردنظرمون رو توی یه پوشه قرار میدیمو سپس یه فایل با این اسم react-native.config.js درون روت( یا شاخه اصلی) پروژه ساخته و قطعه کد زیر رو وارد نماییدmodule.exports   = {assets: [&#x27;./app/assets/fonts&#x27;],};که ./app/assets/fonts&#x27; میشه آدرس محل قرارگیری فونتهای خودتونو سپس توی ترمینال پروژه این دستور رو میزنیدnpx react-native link3- ساختار استاندارد پروژه ها اینه که توی آدرس زیرAndroid/app/src/main/java/your_domain/your_site/…که به جای your_domainدامین خودتون که ir  یا com  هست رو بزارید و به جای your_site هم اسم سایت شرکت یا خودتون رو بزارید4- ساین اپ ( که با یه سرچ توی ویرگول از پستهای بنده، ساین اپ رو انجام بدید)5- بنظرم دو پرمیژن برای اپتون لازمه ک توی androidManifestاضافه اش کنید&lt;uses-permission android:name=&amp;quotandroid.permission.WRITE_EXTERNAL_STORAGE&amp;quot /&gt;

&lt;uses-permission android:name=&amp;quotandroid.permission.READ_EXTERNAL_STORAGE&amp;quot /&gt;و توی قسمت application هم بنظرم اینو بزاریدandroid:requestLegacyExternalStorage=&amp;quottrue&amp;quot6- اگه از git استفاده میکنید، تنظیماتش رو انجام بدید برای پروژه مورد نظرتون</description>
                <category>samira gheibipour</category>
                <author>samira gheibipour</author>
                <pubDate>Sat, 05 Nov 2022 13:26:13 +0330</pubDate>
            </item>
                    <item>
                <title>استفاده از git برای پروژه مورد نظرتون</title>
                <link>https://virgool.io/@samira.ghaibepoor/%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-git-k08ii78crimz</link>
                <description>من فرض رو بر این گذاشتم ک شما میدونید git چی هستش و دستوراتش رو هم یاد گرفتید و الان میخواید توی پروژه تون راه اندازیش کنیدبه چند روش میتونید git init رو انجام بدیدروی پروژه مورد نظر کلیک راست کرده و git bash here را زدهو یادرون پروژه رفته و با ترمینال دستور git init را زدهو یابسته با ide(محیط برنامه نویسی) مورد نظرتون init گیت رو انجام بدید، که اگه از محصولات جت برینز استفاده میکنید میتونید از منوی بالا vcs  و سپس  enable version  رو زده  و git رو انتخاب نماییدمن فرض رو بر این گذاشتم ک از یه ide معتبر استفاده میکنید که تقریبا روال هاشون مثل همه و من چون علاقه خاصی به محصولات جت برینز دارم با همون ادامه میدم ک برای کار خودم ریکت نیتیو از idea استفاده میکنمکه حالا یه منو به ide موردنظرتون به اسم Git اضافه شده تا اینجا رو داشته باشیم بریم سمت سرور و پروژه مون رو اضافه کنیم، و سپس new project رو میزنیم و بعد هم create blank project  و اسم مورد نظر و تایپ کرده(ترجیح بر اینه که هم نام با اسم پروژه موردنظرتون باشه) و Visibility Level  رو هم روی مد private بزارید اگه پروژه شخص هستشو سپس بعد از ساختن   از صفحه باز شده این دستورgit clone http://git....از قسمت http:// را کپی کردهو سپس در ide مورد نظر رفته و از منوی بالا git و سپس manage remote رو زده و بعد این آدرس کپی شده رو اونجا بزاریدو سپس با یه commit و push یوزرنیم و پسوردتون رو بزنید  و و بعد یادتون باشه به ازای هر push باید merge request رو بزنید رو سرور </description>
                <category>samira gheibipour</category>
                <author>samira gheibipour</author>
                <pubDate>Sat, 05 Nov 2022 13:05:59 +0330</pubDate>
            </item>
                    <item>
                <title>Deep link in react native</title>
                <link>https://virgool.io/@samira.ghaibepoor/deep-link-in-react-native-piun1r5nsthd</link>
                <description>گاهی پیش اومده که بخواید از اپتون برید به یه مرورگر و سپس وقتی روی دکمه بازگشت درون صفحه وب تعریف کردید برگردید به اپ با یه سری پارامتربیشتر این برای حالتی پیش میاد که بخواید از اپ قسمت درگاه رو صدا بزنید و بعدش که برمیگردید به اپ پیغام یا وب سرویس خاصی رو براساس اطلاعات پاس داده شده از مرورگر رو هندل کنیدابتدا درAndroidManifest.xmlدرون تگActivityاین مقدار رو بزاریدandroid:launchMode=&quot;singleTask&quot;به اینصورت&lt;activity  android:name=&quot;.MainActivity&quot;  android:label=&quot;@string/app_name&quot;  android:configChanges=&quot;keyboard|keyboardHidden|orientation|screenSize&quot;  android:screenOrientation=&quot;portrait&quot;  android:windowSoftInputMode=&quot;adjustResize&quot;  android:launchMode=&quot;singleTask&quot;&gt;مانند این مدلدرون تگintent-filterاین کد رو بزاریدandroid:autoVerify=&quot;true&quot;&gt;به اینصورت&lt;intent-filter android:autoVerify=&quot;true&quot;&gt;    &lt;action android:name=&quot;android.intent.action.MAIN&quot; /&gt;    &lt;category android:name=&quot;android.intent.category.LAUNCHER&quot; /&gt;&lt;/intent-filter&gt;به اینصورتسپس یهintent-filterدرست کنید و این قطعه کد رو بزارید&lt;intent-filter  android:label=&quot;@string/app_name&quot;&gt;    &lt;action android:name=&quot;android.intent.action.VIEW&quot; /&gt;    &lt;category android:name=&quot;android.intent.category.DEFAULT&quot; /&gt;    &lt;category android:name=&quot;android.intent.category.BROWSABLE&quot; /&gt;    &lt;data android:scheme=&quot;unic_name&quot; android:host=&quot;test.com&quot; /&gt;&lt;/intent-filter&gt;توجه داشته باشید که به جایunic_nameهر اسمی که میخواید بزارید که هرموقع یا این اسم شما بیرون اپ صدا زده بشه بیاد داخل اپ وtest.comرو هرچی دوست دارید بزاریدمن سمپل کدهرموقع که هرجای موبایل بودید و این آی دی رو زدید که بگه میخواید از مرورگر یا از اپ نگاه کنید این صفحه رو می بایست توی برنامه اینکار کنی تویApp.jsتنظمات رو انجام میدید که تقریبا اینطوره، سپس در جای که میخواهید استفاده کنید در قسمتcomponentDidMountاون صفحه این کد را نوشتهLinking.getInitialURL().then((url) =&gt; console.log(&quot;in initial url:&quot;, url)); Linking.addEventListener(&quot;url&quot;, this.handleOpenUrl);و در قسمتcomponentWillUnmountBackHandler.removeEventListener(&#x27;handleOpenUrl&#x27;, this.handleOpenUrl);که  تابعhandleOpenUrlبه این صورت می باشدhandleOpenUrl(e) {  console.log(&quot;on handle open url:&quot;, e.url);  var urlStr=e.url;  if(urlStr.includes(&#x27;return_from_payment&#x27;)){  const arrValue = urlStr.match(/\d+/g);  var TransactionId=arrValue[0];  var BookletId=arrValue[1];  console.log(&quot;_arr:::::::::&quot;+JSON.stringify(TransactionId ));  .....  }}و موقعی که میخواد از توی اپ اون لینک رو باز کنه هم کدش مشخصhandleClick = (url) =&gt; {  Linking.canOpenURL(url).then(supported =&gt; {  if (supported) {  Linking.openURL(url);  // Linking.openURL(&#x27;http://172.10.20.98:8000/Redirect.html&#x27;);  } else {  console.log(&quot;Don&#x27;t know how to open URI: &quot; + url);  }  }); };</description>
                <category>samira gheibipour</category>
                <author>samira gheibipour</author>
                <pubDate>Tue, 14 Jun 2022 10:26:00 +0430</pubDate>
            </item>
                    <item>
                <title>ساین کردن اپ در ریکت نیتیو</title>
                <link>https://virgool.io/@samira.ghaibepoor/%D8%B3%D8%A7%DB%8C%D9%86-%DA%A9%D8%B1%D8%AF%D9%86-%D8%A7%D9%BE-%D8%AF%D8%B1-%D8%B1%DB%8C%DA%A9%D8%AA-%D9%86%DB%8C%D8%AA%DB%8C%D9%88-qs63rqrlydnp</link>
                <description>برای اینکار میتوان از سایت زیر کمک گرفتhttps://reactnative.dev/docs/signed-apk-androidهمون طور ک گفته شده در مرحله اول وارد این آدرس بشیدC:\Program Files\Java\jdkx.x.x_x\binحالا با ترمینال( با پرمیژنadminsstartor  (و دستور زیرا درون ترمینال خود زده(وارد پوشه ورژن جاوا نصب شده درون سیستم بشید)cd C:\Program Files\Java\jdk-10.0.2\binسپس دستور زیرا وارد نماییدkeytool -genkeypair -v -storetype PKCS12 -keystore my-upload-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000ک به جای my-key-alias اسم اپ یا هر اسم خاص دیگه ای که دوست دارید بزاریدکه مرحله بعد دوتا پسورد میخواد که دوتا پسورد مطمئن براش بزارید و در دسترس هیچکسی نباشه جز دولوپر اپ و کارفرما ( میتونید هر دوتا پسورد هم یکی باشه، به مشکل برنمیخورید)سپس به همین صورت اطلاعات دیگر رو هم وارد نماییدبرای مثال من به این صورت گذاشتمو در آخر هم yes و یه اسکرین شات از این بخش یا نوشته ای از بخش هم داشته باشیدسپس ترمینال را بسته و در مسیر پوشه قبلی فایلی با اسمmy-upload-key.keystoreرا برداشته  و در مسیر android/app گذاشتههمانطور ک در سایت خودش گفتهسپس در gradle.properties این 4 خط کد رو با اطلاعات جدید وارد نماییدبرای مثال با این اطلاعااتسپس در قسمت android/app/build.gradle این خط کدها رو اضافه کنیدو این خط کد رو هم اضافه کنیدو سپس میتوانید فایل apk ساین شده بگیرید از این طریقcd androidgradlew bundleReleaseاگر ساختن فایل apk موردی نداشت و ساخته شد apkمیتوان جهت تست برای اطمینان اینکه مراحل اوکی هستدر این قسمت پسورد اشتباه بدهید اگر ساختن فایلapk با مشکل روبه رو شد پس میشه گفت مراحل رو درست رفتیدسمیرا غیبی پورموفق باشید</description>
                <category>samira gheibipour</category>
                <author>samira gheibipour</author>
                <pubDate>Wed, 09 Feb 2022 12:49:25 +0330</pubDate>
            </item>
                    <item>
                <title>کد پوش در ریکت نیتیو</title>
                <link>https://virgool.io/@samira.ghaibepoor/%DA%A9%D8%AF-%D9%BE%D9%88%D8%B4-%D8%AF%D8%B1-%D8%B1%DB%8C%DA%A9%D8%AA-%D9%86%DB%8C%D8%AA%DB%8C%D9%88-vraku8gxqwzk</link>
                <description>code push in react nativeسایتهای مهمی که بنظرم بدرد میخورن1- https://github.com/microsoft/react-native-code-push2- https://medium.com/cybermonkey/mastering-over-the-air-updates-in-react-native-with-codepush-part-1-faf241a7f84b3- https://appcenter.ms/users4- https://docs.microsoft.com/en-us/appcenter/distribution/codepush/rn-get-started#android-setupدر ابندا این دستور رو توی ترمینال پروژه تون ران کنیدnpm install --save react-native-code-pushسپس وارد پنل زیر شویدhttps://appcenter.ms/حالا از قبل هم ثبت نام نماییدو سپسAdd New &gt; Add New Appو سپس در قسمت این قسمت من این تنظیمات رو گذاشتمو سپس در قسمت distributeرفته و منو code pushرفته و روی باتن Create Standard Deployments زدهو یه همچین صفحه ای میبینیدو دستور اول روnpm install -g appcenter-cliتوی ترمینال پروژه تون بزنیدو از قسمت بالا رو آچار بالا بزنید همچین چیزی میبینید*که کد قسمت Production  را کپی کرده که در مراحل جلوتر بهتون میگم کجا استفاده اش کنید*و در قسمت کمبو بالا بزارید روی گزینه Productionخب فعلا کارمون توی این پنل تموم شده بزاریدش فعلا کنار بریم توی پروژه مون تنظیمات رو انجام بدیمبریم به این سایت و بقیه کدهای که باید توی پروژه مون بزاریم از اینجا کپی کنیم و جلو بریمhttps://docs.microsoft.com/en-us/appcenter/distribution/codepush/rn-get-started#android-setupکه بسته به نسخه تون این تنظیمات رو انجام بدید، من چون پروژه ریکتم بالای 60 بود این مراحل رو پیش رفتمخب مرحله اول بریم اینجاکه در settings.gradle این کد اضافه شودinclude &#x27;:app&#x27;, &#x27;:react-native-code-push&#x27;project(&#x27;:react-native-code-push&#x27;).projectDir = new File&#40;rootProject.projectDir, &#x27;../node_modules/react-native-code-push/android/app&#x27;&#41;و سپس بریم برای مرحله دومandroid/app/build.gradleو دو خط کد رو بزارید...apply from: &quot;../../node_modules/react-native/react.gradle&quot;apply from: &quot;../../node_modules/react-native-code-push/android/codepush.gradle&quot;...و مرحله سوم هم بهMainApplication.javaرفته و کد زیرا بگذارید...// 1..import com.microsoft.codepush.react.CodePush;...// 2.@Overrideprotected String getJSBundleFile&#40;&#41; {returnCodePush.getJSBundleFile&#40;&#41;;}مانند عکس زیرو در مرحله 4 هم بریدstrings.xmlکد زیر را اضافه کرده&lt;resources&gt;&lt;string moduleConfig=&quot;true&quot; name=&quot;CodePushDeploymentKey&quot;&gt;DeploymentKey&lt;/string&gt;&lt;/resources&gt;و حواستون باشه که به جای DeploymentKeyهمون کد Production  که توی بالا بهش اشاره کرده بزارید(مراجه شود به قسمت ستاره بالا *)مانند عکس زیرخب کارمون برای اضافه کردن کد توی پروژه تموم شدهمن یادم رفت بگم که باید این کد رو هم توی ترمینال پروژه تون ران کنیدappcenter loginخب الان میتونید فایل apk بگیرید و بزارید توی گوشیتون و سپس تغییر برید توی کدتون و کد رو تغییر بدید و توی ترمینال برنامتون این کد رو اجرا کنیدو اون کدی که توی مرحله 4 پنل appcenter بود رو توی پروژه تون ران کنید فقط دقت کنید که به جای staging بزارید productionیه همچین کدی رو باید ران کنیدappcenter codepush release-react -a username/yourProject -d Productionهمیچنین شما میتونید لاگ های کدپوشتون رو توی همین پنل ببینید و حتی اینکه چندتا از یوزرها گرفتند و ....همچنین توی قسمت app برنامه این کد رو بزارید حتماimport codePush from &quot;react-native-code-push&quot;;let codePushOptions = { checkFrequency: codePush.CheckFrequency.ON_APP_RESUME };const App = () =&gt; {export default codePush(codePushOptions)(App);در این سایت نمونه ها هستنhttps://github.com/microsoft/react-native-code-pushسمیرا غیبی پورموفق باشید</description>
                <category>samira gheibipour</category>
                <author>samira gheibipour</author>
                <pubDate>Wed, 09 Feb 2022 12:28:48 +0330</pubDate>
            </item>
            </channel>
</rss>