ابزار سایت

راهنمای_سفارشی_سازی_و_توسعه_نسخه_اندروید_شبکه_اجتماعی

تفاوت‌ها

تفاوت دو نسخهٔ متفاوت از صفحه را مشاهده می‌کنید.

پیوند به صفحه‌ی تفاوت‌ها

راهنمای_سفارشی_سازی_و_توسعه_نسخه_اندروید_شبکه_اجتماعی [2019/01/15 11:55]
admin [1-2-2- نحوه ایجاد فایل APK]
راهنمای_سفارشی_سازی_و_توسعه_نسخه_اندروید_شبکه_اجتماعی [2019/01/15 12:45]
خط 1: خط 1:
-====== فصل 1- ساخت و سفارشی‌سازی نسخه اندروید تلفن همراه ====== 
-===== 1-1- مقدمه ===== 
-موتوشاب به عنوان بستری برای تولید شبکه‌های اجتماعی است. لذا نسخه تلفن همراه موتوشاب نیز باید بستری برای متولیان ایجاد کند تا بتوانند نسخه تلفن همراه شبکه اجتماعی خود را ایجاد کنند. به همین منظور تمامی اقداماتی که لازم است تا نسخه تلفن همراه شبکه اجتماعی تولید شده توسط موتوشاب ایجاد شود، انجام شده است. 
  
-=====1-2- راهنمای ساخت و سفارشی‌سازی برنامه ===== 
- 
-مطابق <imgref 20171122-102704>​ کد منبع نرم‌افزار اندروید موتوشاب در درگاه شاب ​ قابل دریافت است، برای دریافت کافیست دکمه مورد نظر انتخاب شود تا لیستی از نسخه‌های کد منبع نمایش داده شود. همواره دریافت و استفاده از آخرین و جدیدترین نسخه کد منبع توصیه می‌شود. 
- 
-<​imgcaption 20171122-102704|محل دریافت کد منبع در درگاه شاب>​{{ :​pasted:​20171122-102704.png }}</​imgcaption>​ 
- 
-تمامی کدهای ایجاد شده و ارائه شده به کاربران به نحوی طراحی شده است که تا متولیان با کمترین تغییرات در کد بتوانند نسخه تلفن همراه شبکه اجتماعی خود را ایجاد کنند. به همین منظور فایلی تحت عنوان «config.json» ایجاد شده است که تمامی تنظیمات مورد نیاز را شامل می¬شود. <tabref 1> نشان دهنده محتویان درون این فایل است. 
- 
-<​tabcaption 1|متغیرهای درون فایل تنظیمات پروژه اندروید>​ 
- 
-^    نام متغیر ​ ^      مقدار پیشفرض ​  ​^ ​  ​شرح ​ ^  نیازمند تغییر توسط متولیان ​ ^ 
-|  home_url ​ |  http://​demo.shub.ir/ ​ |   ​نشانی اینترنتی شبکه اجتماعی ​  ​| ​  ​بله ​ | 
-|  information_url |  mobile/​service/​information | نشانی کنترل‌کننده درخواست‌ها ​ |  خیر ​ | 
-|  sign_in_url ​ |  sign-in |  نشانی ورود ​ |  خیر | 
-|  sign_out_url ​ |  sign-out |  نشانی خروج ​ |  خیر ​ | 
-| join_url ​ |  join  | نشانی عضویت ​ |  خیر ​ | 
-|  persian_font_asset_path | fonts/​IRANSansMobile.ttf ​ |  آدرس فونت ​ | خیر ​ | 
-|  application_exit_code |  99999  |  کد دکمه خروج از برنامه |  خیر ​ | 
-|  using_mobile_cookie_label |  UsingMobileApp=android ​ |  نشان‌دهنده استفاده‌کننده از برنامه اندروید ​ |  خیر ​ | 
-|  user_agent_description |  Mozilla/5.0 (Linux; 7.0; Android SDK built Chrome/​51.0.2704.91 Mobile Safari/​537.36 ​ |  توضیحات مرورگر ​ |   ​خیر | 
-|  information_receiver_timeout ​ | 20000 |  میزان زمان انتظار پاسخ درخواست |  در صورت نیاز ​ | 
-|  show_desktop_version ​ | false  |  نمایش نسخه رومیزی ​ |  در صورت نیاز ​ | 
-|  default_language_tag ​ |  fa-IR  |  برچسب زبان پیش‌فرض شبکه اجتماعی ​ |  در صورت نیاز ​ | 
-|  download_folder ​ |  shub  |  نام پوشه اسناد دریافتی کاربران ​ |  در صورت نیاز ​ | 
- 
-</​tabcaption>​ 
- 
-همان‌طور که در <tabref 1> قابل مشاهده است، تعداد متغیرهای مورد نیاز برای تغییر توسط متولیان کم بوده که این امر، باعث تولید سریع‌تر نسخه تلفن همراه توسط آن‌ها می‌شود. 
- 
-متولیان علاوه بر تغییراتی که باید در فایل «config.json» بدهند باید اقدامات زیر را نیز انجام دهند: 
- 
-  - ایجاد بستر اعلان 
-  - تغییر نشان شبکه اجتماعی 
-  - تغییرات مورد نظر در فایل ترجمه 
-  - تغییرات مورد نظر در رنگ‌ها 
- 
-شرح تغییرات هر یک از موارد بالا در <tabref 2> آمده است. 
- 
-<​tabcaption 2|شرح تغییرات منابع>​ 
- 
-^    عنوان تغییر ​  ​^ ​     شرح ​  ^ 
-|   ​ایجاد بستر اعلان ​  ​| ​ وارد پوشه app شده و فایل google-services.json تولیدشده توسط FCM را در آن پوشه قرار دهید. ​  | 
-|   ​تغییر نشان (logo) ​ |   ​وارد پوشه mipmap شده و نشان‌های با عناوین «ic_launcher.png» و «ic_launcher_raw.png» را برابر نشان مورد نظر خود قرار دهید. ​ | 
-|   ​تغییرات نوشته‌های درون ترجمه ​  ​| ​  ​وارد پوشه values/​strins شده و متن مورد نیاز خود را شناسایی و تغییر دهید. ​  | 
-|  تغییرات رنگ‌ها ​  ​| ​ وارد پوشه values/​colors شده و رنگ مورد نظر خود را انتخاب کنید. ​  | 
- 
-</​tabcaption>​ 
- 
- 
-====1-2-1- ایجاد بستر اعلان ==== 
- 
-به‌منظور استفاده از بستر اعلان به تلفن همراه، از سامانه FCM شرکت گوگل استفاده‌شده است. برای استفاده از این سامانه، باید پس از ورود به وب‌گاه فایربیس((https://​console.firebase.google.com))، مطابق <imgref 20171122-104202>​ باید دکمه مشخص شده انتخاب شود.. قابل ذکر است که به دلیل تحریم‌های موجود گوگل علیه IP های ایران، این سایت از دسترس کاربران ایرانی خارج است و برای دسترسی به آن حتما باید از ابزارهای تغییر IP استفاده کرد. 
- 
-<​imgcaption 20171122-104202|سامانه Firebase>​{{ :​pasted:​20171122-104202.png }}</​imgcaption>​ 
- 
-پس از درج اطلاعات مورد نیاز و اتمام موفقیت‌آمیز ثبت‌نام، صفحه اصلی به نمایش در می‌آید که شامل تمامی پروژه‌های موجود است. بدیهی در ابتدا هیچ پروژه‌ای موجود نیست و باید مطابق <imgref 20171122-104644>​ با کلیک بر روی دکمه ایجاد پروژه جدید، جهت شروع فرایند ایجاد پروژه اقدام نمود. 
- 
-<​imgcaption 20171122-104644|شروع فرایند ایجاد پروژه جدید>​{{ :​pasted:​20171122-104644.png }}</​imgcaption>​ 
- 
-با انتخاب دکمه ایجاد پروژه جدید، صفحه‌ای مطابق <imgref 20171122-105440>​ نمایش داده می‌شود. در این پنجره پس از درج نام پروژه، کشور باید به همان صورت پیش‌فرض رها شده و در نهایت با انتخاب دکمه ایجاد پروژه، فرایند ادامه پیدا کند. 
- 
-<​imgcaption 20171122-105440|صفحه ورود اطلاعات پروژه>​{{ :​pasted:​20171122-105440.png }}</​imgcaption>​ 
- 
-پس از چند ثانیه در صورت موفقیت‌آمیز بودن ایجاد پروژه، صفحه مدیریت پروژه مطابق <imgref 20171122-110320>​ به نمایش در می‌آيد. در این صفحه باید جهت افزودن فایربیس به پروژه اندروید، دکمه مشخص شده انتخاب شود. 
- 
-<​imgcaption 20171122-110320|افزودن Firebase به پروژه اندروید>​{{ :​pasted:​20171122-110320.png }}</​imgcaption>​ 
- 
-در هنگام تولید پروژه باید متغیر «package name» دقیقاً برابر متغیر «package identifier» پروژه اندروید باشد. مطابق <imgref 20171122-110908>​ لازم است پس از درج مقدار صحیح این متغیر، دکمه ثبت برنامه انتخاب شود. 
- 
-<​imgcaption 20171122-110908|درج package name>{{ :​pasted:​20171122-110908.png }}</​imgcaption>​ 
- 
-پس از درج اطلاعات مورد نیاز، یک فایل با نام google-services.json به صورت خودکار ایجاد می‌شود که حاوی تنظیمات فایربیس برای پروژه اندروید است. مطابق <imgref 20171122-111746>​ باید دکمه مشخص شده انتخاب و پس از دریافت فایل مورد نظر، لازم است این فایل درون پروژه اندروید در ذیل فایل app قرار گیرد. 
- 
-<​imgcaption 20171122-111746|دریافت فایل google-services.json>​{{ :​pasted:​20171122-111746.png }}</​imgcaption>​ 
- 
-در مرحله بعد، مطابق <imgref 20171122-112041>​ راهنمای تنظیمات پروژه اندروید برای راه‌اندازی فایربیس به نمایش در می‌آید که باید مطابق آن عمل شود. 
- 
-<​imgcaption 20171122-112041|راهنمای تنظیمات پروژه اندروید برای فایربیس>​{{ :​pasted:​20171122-112041.png }}</​imgcaption>​ 
- 
-برای تکمیل فرایند، باید کد ارسال اعلان نیز از پروژه ایجادشده در سامانه FCM وارد موتوشاب شود. به همین منظور وارد بخش «Cloud Messaging» شده و مقدار متغیر «Server key» باید وارد متغیر «کلید پروژه FCM برای ارسال اعلان» درون بخش تنظیمات افزونه «پشتیبانی از نرم‌افزار تلفن همراه» شود. <imgref 20170302-100300>​ بخش تنظیمات افزونه «پشتیبانی از نرم‌افزار تلفن همراه» را نشان می‌دهد. 
- 
-<​imgcaption 20170302-100300|بخش تنظیمات افزونه پشتیبانی از نرم‌افزار تلفن همراه>​{{ :​pasted:​20170302-100300.png }}</​imgcaption>​ 
- 
-====1-2-2- نحوه ایجاد فایل APK ==== 
- 
-1- استفاده از نرم‌افزار محیط توسعه یکپارچه 
-به‌منظور تولید فایل apk برنامه تلفن همراه، ابتدا باید پروژه با نرم‌افزار محیط توسعه یکپارچه باز شود. برای این کار می‌توان از نرم‌افزار Android Stuido استفاده کرد. 
-2- اعمال تغییرات مورد نیاز 
-با توجه به توضیحات گفته شده و مستندات فنی ارائه شده در بخش بعدی، تغییرات مورد نیاز باید در فایل‌ها اعمال شوند. 
-3- تولید فایل APK 
-از طریق منو در قسمت بالا نرم‌افزار Android Studio وارد مورد Build شده و زیرمورد Generate Signed APK انتخاب شود. ​ <imgref 20170302-100532>​ نشان‌دهنده پنجره بازشده بعد از کلیک بر روی زیرمورد فوق را نشان می‌دهد. 
- 
- 
-<​imgcaption 20170302-100532|پنجره ایجاد شناسه به‌منظور تولید APK>{{ :​pasted:​20170302-100532.png }}</​imgcaption>​ 
- 
-با واردکردن اطلاعات مورد نیاز و انتخاب مقدار release در متغیر Build Type در مرحله بعد، فایل APK مورد نظر ایجاد خواهد شد. از نظر نسخه‌های sign کردن، لازم است تا تیک مربوط به V1 jar زده شود. 
- 
-====1-2-3- تشریح ​ فنی ==== 
- 
-این بخش شامل تشریح فنی کدهای نوشته‌شده در پروژه اندروید است. پروژه اندروید از چند کلاس و فایل تشکیل شده است که در ادامه هر یک به‌صورت مختصر توضیح داده شده‌اند. 
- 
-  * **کلاس MainActivity** 
- 
-این کلاس به‌عنوان اصلی‌ترین موجودیت، وظیفه مدیریت تمامی مؤلفه‌ها را بر عهده دارد. تمامی توابع درون این کلاس در <tabref 3> به همراه شرح آمده است. 
- 
-<​tabcaption 3|شرح توابع درون کلاس MainActivity>​ 
- 
-^    نام تابع ​  ​^ ​     شرح ​  ^ 
-|  getSwipeContainer ​ |  این تابع مؤلفه‌ای که امکان بارگذاری مجدد صفحه را از طریق کشیدن به پایین صفحه فراهم می‌کند، بازمی‌گرداند. ​ | 
-|  getProfileMenu ​ |  این تابع مؤلفه نمایشگر منوی کاربری را که به‌صورت یک دکمه در پایین سمت چپ برنامه قابل مشاهده است را برمی‌گرداند. ​ | 
-|  getNavigationView ​ |  این تابع مؤلفه نمایشگر منو را برمی‌گرداند. ​ | 
-|  getUserAvatar ​ |  این تابع مؤلفه نمایشگر تصویر نمایه کاربر را برمی‌گرداند. ​ | 
-|  getRegisterImage ​ |  این تابع مؤلفه نمایشگر تصویر دکمه ثبت‌نام در منو را برمی‌گرداند. ​ | 
-|  getSignInImage ​ |  این تابع مؤلفه نمایشگر تصویر دکمه ورود در منو را برمی‌گرداند. ​ | 
-|  initSwipeContainer ​ |  این تابع وظیفه راه‌اندازی مؤلفه‌ای که امکان بارگذاری مجدد صفحه را از طریق کشیدن به پایین صفحه فراهم می‌کند، را دارد. ​ | 
-|  onResume ​ |  این تابع به‌صورت فراخوان در زمان ورود به برنامه صدا زده می‌شود. ​ | 
-|  onPause ​ |  این تابع به‌صورت فراخوان در زمان خروج از برنامه صدا زده می‌شود. ​ | 
-|  onStop ​ |  این تابع به‌صورت فراخوان در زمان بسته شدن برنامه صدا زده می‌شود. ​ | 
-|  onDestroy ​ |  این تابع به‌صورت فراخوان در زمان بسته شدن برنامه به‌صورت کامل صدا زده می‌شود. ​ | 
-|  onActivityResult ​ |  این تابع زمانی صدا زده می‌شود که کاربر قصد بارگذاری فایلی را از تلفن همراه خود کرده باشد و آن فایل را انتخاب کرده باشد. این تابع وظیفه مدیریت فایل و نحوه قرارگیری آن در فرم را دارد. ​ | 
-|  showProfileMenu ​ |  این تابع وظیفه نمایش دکمه منوی کاربری را برعهده دارد. ​ | 
-|  hideProfileMenu ​ |  این تابع وظیفه حذف دکمه منوی کاربری را برعهده دارد. ​ | 
-|  pageStartToLoad ​ |  این تابع زمانی‌که یک صفحه شروع به بارگیری کند، صدا زده می‌شود. با صدا شدن این تابع، منوی کاربری حذف و مؤلفه پیش‌بارگذار نمایش داده می‌شود. ​ | 
-|  loadingPageFinished ​ |  این تابع زمانی‌که بارگیری صفحه کامل شود، صدا زده می‌شود. با صدا شدن این تابع، منوی کاربری نمایش داده‌شده و مؤلفه پیش‌بارگذار حذف می‌شود. ​ | 
-|  clickOnUserAvatar ​ |  این تابع با کلیک کاربر بر روی تصویر نمایه صدا زده شده و کاربران ورود یافته را به صفحه نمایه و کاربر مهمان را به صفحه ورود هدایت می‌کند. ​ | 
-|  clickOnRegisterImage ​ |  این تابع با کلیک کاربر مهمان بر روی تصویر ثبت‌نام صدا زده شده و کاربران مهمان را به صفحه ثبت‌نام هدایت می‌کند. ​ | 
-|  clickOnSignInImage ​ |  این تابع با کلیک کاربر بر روی تصویر ورود (خروج) صدا زده شده و کاربران مهمان را به صفحه ورود (کاربران ورود یافته را به صفحه خروج) هدایت می‌کند. ​ | 
-|  closeMenu ​ |  این تابع وظیفه بستن مؤلفه منو را برعهده دارد. ​ | 
-|  isMenuOpen ​ |  این تابع مشخص‌کننده باز یا بسته بودن مؤلفه منو را دارد. ​ | 
-|  getLoadingIndicator ​ |  این تابع مؤلفه نمایشگر پیش‌بارگزار را برمی‌گرداند. ​ | 
-|  initLoadingIndicator ​ |  این تابع وظیفه راه‌اندازی مؤلفه نمایشگر پیش‌بارگذار را برعهده دارد. ​ | 
-|  showLoadingIndicator ​ |  این تابع وظیفه نمایش مؤلفه نمایشگر پیش‌بارگذار را برعهده دارد. ​ | 
-|  hideLoadingIndicator ​ |  این تابع وظیفه حذف مؤلفه نمایشگر پیش‌بارگذار را برعهده دارد. ​ | 
-|  setLocale ​ |  این تابع وظیفه تعیین زبان محلی برنامه است. از طریق این تابع زبان محلی برنامه تغییر کرده و تمامی مؤلفه‌ها به‌صورت راست‌چین یا چپ‌چین نمایش داده می‌شوند. ​ | 
-|  getCurrentLanguageTag ​ |  این تابع وظیفه بازگردانی زبان محلی فعلی برنامه را دارد. ​ | 
-|  changeLocale ​ |  این تابع وظیفه تغییر زبان محلی برنامه را برعهده داشته که بعد از تغییر زبان محلی، برنامه به‌منظور اعمال تغییرات، از نو آغاز می‌شود. ​ | 
-|  updateConfigurationLocale ​ |  این تابع وظیفه به‌روزرسانی تنظیمات زبان محلی برنامه را دارد. ​ | 
-|  restartActivity ​ |  این تابع وظیفه شروع مجدد برنامه را برعهده دارد. ​ | 
-|  onConfigurationChanged ​ |  این تابع به‌صورت خودکار در زمانی‌که تنظیمات برنامه تغییر می‌کند صدا زده شده و وظیفه به‌روزرسانی تنظیمات برنامه را دارد. ​ | 
-|  loadUrl ​ |  این تابع وظیفه بارگیری صفحه را توسط نشانی اینترنتی درون ورودی خود برعهده دارد. ​ | 
-|  clearWebviewCache ​ |  این تابع وظیفه خالی کردن حافظه نهان مؤلفه نمایشگر وب را برعهده دارد. ​ | 
-|  onSaveInstanceState ​ |  این تابع وظیفه ذخیره حالت جدید برنامه در زمان بسته شدن آن را دارد. ​ | 
-|  onBackPressed ​ |  این تابع به‌صورت خودکار در زمانی‌که کاربر دکمه بازگشت تلفن همراه خود را فشار می‌دهد، صدا زده می‌شود. این تابع درصورتی‌که کاربر در صفحه اول دو بار صدا زده شود، برنامه را بسته و در غیر این صورت، توسط مؤلفه نمایشگر وب، کاربر را به صفحه قبلی هدایت می‌کند. ​ | 
-|  reload ​ |  این تابع وظیفه بارگیری مجدد صفحه فعلی کاربر را برعهده دارد. ​ | 
-|  goBack ​ |  این تابع توسط مؤلفه نمایشگر وب، کاربر را به صفحه قبلی هدایت می‌کند. ​ | 
-|  onNavigationItemSelected ​ |  این تابع در زمانی‌که یکی از موارد درون منو انتخاب شود، به‌صورت خودکار صدا زده می‌شود. ​ | 
-|  reconfigureInformation ​ |  این تابع وظیفه مدیریت مقادیر دریافتی از طریق وب‌سرویس را برعهده دارد. مواردی همانند منوی اصلی، منوی زیرین، زبان‌ها و اطلاعات کاربر توسط این تابع مدیریت می‌شوند. ​ | 
-|  fetchAllMenuItems ​ |  این تابع وظیفه اجرای آسنکرون دریافت اطلاعات از طریق وب‌سرویس را برعهده دارد. ​ | 
-|  addMenuItemsToMenu ​ |  این تابع وظیفه اضافه کردن مقادیر دریافتی منو به مؤلفه منو را برعهده دارد. ​ | 
-|  initApiVersion ​ |  این تابع موارد مورد نیاز در هر نسخه از اندروید را در صورت نیاز راه‌اندازی می‌کند. ​ | 
-|  createErrorOnLoadingMenuItem ​ |  این تابع وظیفه مدیریت خطا در هنگام دریافت اطلاعات را برعهده دارد. ​ | 
-|  findUrlOfItemInMenu ​ |  این تابع وظیفه شناسایی نشانی اینترنتی مورد انتخاب‌شده در منو را برعهده دارد. این تابع در صورت انتخاب موارد درون بخش زبان، در صورت نیاز، فرایند تغییر زبان محلی برنامه را اجرا می‌کند. ​ | 
- 
-</​tabcaption>​ 
- 
-  * **کلاس CustomTypefaceSpan** 
- 
-این کلاس به‌منظور تغییر فونت نوشته‌ها به وجود آمده است. 
- 
-  * **کلاس UTIL** 
- 
-این کلاس به‌عنوان یک کلاس کمکی برای استفاده در کلاس‌های دیگر به وجود آمده است. توابع درون این کلاس در <tabref 4> به همراه شرح آمده است. 
- 
- 
-<​tabcaption 4|شرح توابع درون کلاس MainActivity>​ 
- 
-^    نام تابع ​  ​^ ​     شرح ​  ^ 
-|  convertToCustomFont ​ |  این تابع وظیفه تغییر فونت نوشته داده‌شده به‌عنوان ورودی با نوع CharSequence را برعهده دارد. ​ | 
-|  setCustomFont ​ |  این تابع وظیفه تغییر فونت نوشته داده‌شده به‌عنوان ورودی با نوع TextView را برعهده دارد. ​ | 
-|  getRoundedCornerBitmap ​ |  این تابع وظیفه گرد کردن گوشه‌های تصویر داده‌شده را برعهده دارد. این تابع به‌عنوان ورودی تنها تصاویر از نوع Bitmap را می‌پذیرد. لذا تصویر نمایه دریافت شده از طریق مؤلفه وب‌سرویس، به Bitmap تغییر کرده و این تابع بر روی آن اعمال می‌شود. ​ | 
-|  getRealPathFromURI ​ |  این تابع وظیفه برگرداندن آدرس کامل فایل درون تلفن همراه کاربران را به‌منظور استفاده در فیلدهای مبتنی بر فایل برعهده دارد. ​ | 
-|  isInMenuBlackList ​ |  این تابع وظیفه شناسایی غیرمجاز بودن موارد درون منو را برعهده دارد. برای مثال منوی نسخه رومیزی جزو موارد غیرمجاز شناخته‌شده و در فهرست موارد منو پدیدار نمی‌شود. ​ | 
-|  getMainTagOfLocale ​ |  این تابع وظیفه برگرداندن برچسب اصلی زبان محلی را برعهده دارد. برای مثال برچسب زبان فارسی برابر fa-IR بوده که این تابع برچسب اصلی آن‌که fa است را برمی‌گرداند. ​ | 
-|  getMenuIcon ​ |  این تابع وظیفه برگرداندن آیکون مرتبط با هر مورد از منو را برعهده دارد. ​ | 
-|  isInArrayOfExtensions ​ |  این تابع وظیفه شناسایی موارد قابل دریافت در هنگام بارگیری مؤلفه نمایشگر وب را برعهده دارد. برای مثال اگر کاربری قصد دریافت فایل از طریق برنامه تلفن همراه را داشته باشد، این تابع در صورت مجاز دانستن دریافت آن فایل، امکان دریافت برای کاربر را فراهم می‌کند. ​ | 
-|  downloadFile ​ |  این تابع وظیفه اجرای آسنکرون فرایند دریافت فایل را برعهده دارد. ​ | 
-|  downloadFileUsingConnection ​ |  این تابع وظیفه فرایند دریافت فایل را برعهده دارد. درصورتی‌که تلفن همراه کاربر دارای مدیریت دریافت فایل باشد، فرایند دریافت فایل به آن مؤلفه محول شده و در صورت عدم وجود آن، فایل‌ها درون پوشه‌ای که در فایل تنظیمات config.json تعیین‌شده، منتقل می‌شوند. ​ | 
-|  showNotification ​ |  این تابع وظیفه نمایش اعلان درون برنامه‌ای را برعهده دارد. ​ | 
- 
-</​tabcaption>​ 
- 
-  * **کلاس User** 
- 
-این کلاس به‌عنوان موجودیت کاربر ایجادشده و شامل اطلاعات زیر از این موجودیت است: 
- 
-  - نام 
-  - رایانامه 
-  - نشانی اینترنتی تصویر نمایه 
-  - نشانی اینترنتی صفحه نمایه کاربر 
- 
-درصورتی‌که کاربر به‌عنوان مهمان در سامانه شناسایی شود، تمامی اطلاعات بالا به‌صورت خالی در این موجودیت قرار می‌گیرند. 
- 
-  * **کلاس MyMenuItem** 
- 
-این کلاس به‌عنوان موجودیت موارد درون فهرست تولید شده و شامل اطلاعات زیر است: 
- 
-  - عنوان 
-  - نشانی اینترنتی 
-  - برچسب 
-  - مورد فعلی 
-  - شناسه زبان 
-  - وجود یا عدم وجود راست‌چین 
- 
-موارد 3 تا 6 تنها برای موارد درون بخش زبان به کار برده شده و موارد دیگر درون فهرست به‌صورت خالی در نظر گرفته می‌شوند. 
- 
-**کلاس Information** ​ 
- 
-این کلاس به‌عنوان موجودیت اطلاعات دریافتی از طریق وب‌سرویس ایجاد شده و شامل اطلاعات زیر است: 
- 
-  - آرایه‌ای از موجودیت موارد درون فهرست برای بخش فهرست اصلی 
-  - آرایه‌ای از موجودیت موارد درون فهرست برای بخش فهرست زیرین 
-  - آرایه‌ای از موجودیت موارد درون فهرست برای بخش فهرست زبان‌ها 
-  - موجودیت کاربر 
- 
-اطلاعات درون این کلاس در زمان دریافت اطلاعات از طریق وب‌سرویس ایجاد می‌شود. 
- 
-  * **کلاس InternetConnection** 
- 
-این کلاس به‌منظور شناسایی وجود بستر اینترنت در تلفن همراه کاربر به وجود آمده است. توابع درون این کلاس در <tabref 5> شرح داده شده است. 
- 
- 
-<​tabcaption 5|شرح توابع درون کلاس InternetConnection>​ 
- 
-^    نام تابع ​  ​^ ​     شرح ​  ^ 
-|   ​checkNetworkConnection ​  ​| ​ این تابع وظیفه شناسایی وجود اینترنت در برنامه تلفن همراه را برعهده دارد. ​   | 
- 
-</​tabcaption>​ 
- 
-  * **کلاس CookieUtils** 
- 
-این کلاس به‌عنوان کلاس کمکی مؤلفه کوکی به وجود آمده است. توابع درون این کلاس در <tabref 6> شرح داده است. 
- 
-<​tabcaption 6|شرح توابع درون کلاس CookieUtils>​ 
- 
-^    نام تابع ​  ​^ ​     شرح ​  ^ 
-|   ​flushCookies ​  ​| ​ این تابع وظیفه تثبیت اطلاعات درون کوکی را برعهده دارد. ​  | 
- 
-</​tabcaption>​ 
- 
-  * **کلاس ConnectivityReceiver** 
- 
-این کلاس به‌منظور شناسایی تغییر در بستر شبکه اینترنت کاربر به وجود آمده است. توابع درون این کلاس در <tabref 7> شرح داده شده است. 
- 
-<​tabcaption 7| شرح توابع درون کلاس ConnectivityReceiver>​ 
- 
-^   ​شرح ​    ​^ ​   نام تابع ​    ^ 
-|   ​onReceive ​  ​| ​  ​این تابع به‌صورت خودکار در زمان اتصال اینترنت تلفن همراه کاربر صدا زده می‌شود. ​   | 
-|   ​register ​  ​| ​   این تابع وظیفه اجرای خدمت شناسایی قطع و وصل شدن بستر اینترنتی تلفن همراه کاربر را برعهده دارد. ​  | 
-|   ​unregister ​  ​| ​  ​این تابع وظیفه حذف خدمت شناسایی قطع و وصل شدن بستر اینترنتی تلفن همراه کاربر را برعهده دارد. ​   | 
- 
-</​tabcaption>​ 
- 
-  * **کلاس MyFirebaseInstanceIDService** 
- 
-این کلاس به‌منظور شناسایی شناسه اعلان تلفن همراه به وجود آمده است. توابع درون این کلاس در <tabref 8> شرح داده شده است. 
- 
-<​tabcaption 8| شرح توابع درون کلاس MyFirebaseInstanceIDService>​ 
- 
-^   ​نام تابع ​    ​^ ​  ​شرح ​     ^ 
-|   ​onTokenRefresh ​  ​| ​   این تابع به‌صورت خودکار در زمان تغییر یا ایجاد شناسه مخصوص اعلان تلفن همراه کاربر صدا زده می‌شود. درون این تابع و با استفاده از مؤلفه مدیریت کوکی‌ها، شناسه اعلان کاربر درون کوکی او ایجاد شده یا به‌روز می‌شود. ​   | 
- 
-</​tabcaption>​ 
- 
-  * **کلاس MyFirebaseMessagingService** 
- 
-این کلاس به‌عنوان دریافت‌کننده اعلان ارسال‌شده از سامانه FCM ایجاد شده است. توابع درون این کلاس در <tabref 9> شرح داده‌شده است. 
- 
-<​tabcaption 9| > 
- 
-^    نام تابع ​   ^    شرح ​    ^ 
-|   ​onMessageReceived ​  ​| ​   این تابع به‌صورت خودکار در زمان ارسال یک اعلان به تلفن همراه کاربر صدا زده‌شده و مقدمات نمایش اعلان درون این تابع صورت می‌پذیرد. ​  | 
- 
-</​tabcaption>​ 
- 
-  * **کلاس NavigationHelper** 
- 
-این کلاس به‌عنوان کلاس کمکی برای شناسایی نشانی‌های اینترنتی درونی و بیرونی ایجاد شده است. توابع درون این کلاس در <tabref 10>​شرح داده شده است. 
- 
-<​tabcaption 10| شرح توابع درون کلاس NavigationHelper > 
- 
-^    نام تابع ​   ^    شرح ​    ^ 
-|   ​isInternalUri ​  ​| ​  ​این تابع وظیفه شناسایی درونی یا بیرونی بودن نشانی اینترنتی داده‌شده به‌عنوان ورودی را برعهده دارد. ​   | 
-|   ​checkUrlForOverriding ​  ​| ​   این تابع مشخص‌کننده باز کردن نشانی اینترنتی توسط برنامه تلفن همراه یا توسط برنامه خارجی است. ​  | 
- 
-</​tabcaption>​ 
- 
-  * **کلاس MenuFeedTask** 
- 
-این کلاس وظیفه اجرای آسنکرون دریافت اطلاعات از طریق وب‌سرویس را برعهده دارد. توابع درون این کلاس در <tabref 11> شرح داده شده است. 
- 
-<​tabcaption 11| شرح توابع درون کلاس MenuFeedTask>​ 
- 
-^    نام تابع ​   ^    شرح ​    ^ 
-|   ​doInBackground ​  ​| ​  ​این تابع وظیفه اجرای آسنکرون تابع درون خود را برعهده دارد. ​   | 
-|   ​onPostExecute ​  ​| ​  ​این تابع به‌صورت خودکار پس از اتمام تابع به‌صورت آسنکرون اجرا شده، صدا زده می‌شود. ​   | 
- 
-</​tabcaption>​ 
- 
-  * **کلاس InformationReceiver** 
- 
-این کلاس برای اجرای فرایند دریافت اطلاعات از طریق وب‌سرویس را برعهده دارد. توابع درون این کلاس در <tabref 12> شرح داده‌شده است. 
- 
-<​tabcaption 12| شرح توابع درون کلاس InformationReceiver>​ 
- 
-^    نام تابع ​   ^    شرح ​    ^ 
-|   ​getInformation ​  ​| ​  ​این تابع وظیفه اتصال به و دریافت اطلاعات از وب‌سرویس را برعهده دارد. ​   | 
-|   ​getBitmapFromURL ​  ​| ​   این تابع وظیفه تغییر نوع تصویر نمایه کاربران به نوع Bitmap را برعهده دارد. ​  | 
- 
-</​tabcaption>​ 
- 
-  * **کلاس ShubViewClient** 
- 
-این کلاس به‌عنوان موجودیت مؤلفه نمایشگر وب به وجود آمده است. توابع درون این کلاس در <tabref 13> شرح داده شده است. 
- 
-<​tabcaption 13| شرح توابع درون کلاس ShubViewClient>​ 
- 
-^    نام تابع ​   ^    شرح ​    ^ 
-|   ​shouldOverrideUrlLoading ​  ​| ​  ​این تابع وظیفه مدیریت نشانی‌های اینترنتی است. تمامی نشانی‌های اینترنتی هدایت شده در مؤلفه نمایشگر وب، قبل از اجرا از این تابع عبور خواهند کرد. ​   | 
-|   ​onPageFinished ​  ​| ​  ​این تابع به‌صورت خودکار در زمان اتمام بارگیری صفحات صدا زده می‌شود. ​   | 
-|    onPageStarted ​  ​| ​  ​این تابع به‌صورت خودکار در زمان شروع بارگیری صفحات صدا زده می‌شود. ​   | 
-|   ​onReceivedSslError ​  ​| ​  ​این تابع وظیفه مدیریت خطا در هنگام بارگیری نشانی اینترنتی را برعهده دارد. تمامی خطاها از طریق فایل با زبان HTML با عنوان «error_message.html» در پوشه assets/​custom_message به کاربر نمایش داده می‌شود. ​   | 
-|   ​addUrlToHistory ​  ​| ​   این تابع وظیفه اضافه کردن نشانی‌های اینترنتی به تاریخچه مؤلفه نمایشگر وب را برعهده دارد. ​  | 
- 
-</​tabcaption>​ 
- 
- 
-  * **کلاس ChromeClient** 
- 
-این کلاس به‌منظور رفع محدودیت‌های موجود در کلاس ShubViewClient به وجود آمده است. توابع درون این کلاس در <tabref 14> شرح داده شده است. 
- 
-<​tabcaption 14| شرح توابع درون کلاس ChromeClient>​ 
- 
-^     ​نام تابع ​  ​^ ​    ​شرح ​   ^ 
-|   ​openFileChooser ​  ​| ​   این تابع وظیفه انجام اقدامات لازم به‌منظور نمایش مؤلفه انتخاب فایل دستگاه تلفن همراه کاربر را برعهده دارد. ​  | 
-|   ​onShowFileChooser ​  ​| ​   این تابع وظیفه نمایش مؤلفه انتخاب فایل دستگاه تلفن همراه کاربر را برعهده دارد. ​  | 
-|   ​startActivityOpenChooser ​  ​| ​   این تابع وظیفه بررسی نوع فایل قابل بارگذاری را برعهده دارد. ​  | 
- 
-</​tabcaption>​ 
- 
-  * **کلاس Config** 
- 
-این کلاس به‌منظور نگهداری داده‌های مورد نیاز برنامه تلفن همراه در هنگام اجرای برنامه ایجاد شده است. این کلاس مقادیر تنظیمات از فایلی با عنوان «config.json» که در پوشه assets قرار داد، را خوانده و در طول اجرای برنامه در اختیار دیگر کلاس‌ها قرار می‌دهد. توابع درون این کلاس در <tabref 15>​شرح داده شده است. 
- 
-<​tabcaption 15| شرح توابع درون کلاس Config> 
- 
-^    نام تابع ​   ^     ​شرح ​   ^ 
-|   ​Config ​  ​| ​  ​این تابع وظیفه خواندن و نگهداری متغیرها از فایل با عنوان «config.json» را برعهده دارد. ​   | 
-|   ​setInitialHost ​  ​| ​  ​این تابع وظیفه جداسازی حروف www. از نشانی اینترنتی واردشده در فایل با عنوان «config.json» را برعهده دارد. ​   | 
- 
-</​tabcaption>​ 
- 
-==== 1-2-4- تنظیمات پروژه ==== 
- 
-تنظیمات پروژه به دو فایل build.gradle درون پوشه پروژه و پوشه برنامه تولیدشده در پروژه خلاصه می‌شود. متغیرهای درون فایل build.gradle نیازی به تغییر نداشته و متغیرهای فایل build.gradle برنامه به شرح زیر است: 
- 
-<​tabcaption 16| شرح متغیرهای درون فایل build.gradle>​ 
- 
-^     ​نام متغیر ​  ​^ ​    ​مقدار ​   ^     ​شرح ​   ^ 
-|   ​compileSdkVersion ​  ​| ​   25   ​| ​   این مقدار مشخص‌کننده نسخه اندروید برای کامپایل کردن کدها استفاده می‌شود. ​  | 
-|   ​buildToolsVersion ​  ​| ​      ​| ​   این مقدار مشخص‌کننده نسخه اندروید به‌منظور ساختن برنامه استفاده می‌شود. ​  | 
-|   ​applicationId ​  ​| ​   ir.iiscenter.shub ​  ​| ​  ​این مقدار مشخص‌کننده شناسه پروژه است. ​   | 
-|   ​minSdkVersion ​ |   ​16 ​   |   ​این مقدار مشخص‌کننده کمینه نسخه قابل پشتیبانی برنامه تلفن همراه است. ​   | 
-|   ​targetSdkVersion ​  ​| ​   25   ​| ​  ​این مقدار مشخص‌کننده بیشینه نسخه قابل پشتیبانی برنامه تلفن همراه است. ​   | 
-|   ​versionCode ​  ​| ​  ​1 ​   |   ​این مقدار مشخص‌کننده نسخه ساخت برنامه است. ​   | 
-|   ​versionName ​  ​| ​   1   ​| ​  ​این مقدار مشخص‌کننده نسخه برنامه است. ​   | 
-|    dependencies ​ |   ​آرایه‌ای از کتابخانه‌های مورد نیاز ​   |   ​این مقدار مشخص‌کننده کتابخانه‌های مورد نیاز استفاده‌شده در پروژه است. ​   | 
- 
-</​tabcaption>​ 
راهنمای_سفارشی_سازی_و_توسعه_نسخه_اندروید_شبکه_اجتماعی.txt · آخرین ویرایش: 2019/01/15 12:45