logo

Restoran izlash ilovasi

Yuklangan vaqt:

12.08.2023

Ko'chirishlar soni:

0

Hajmi:

1603.4072265625 KB
Restoran izlash ilovasi
Reja:
1. Kirish
2. Nazariy qism:
2.1. Mobil ilovalar yaratish va uning asosiy tushunchalari
2.2. Restoran izlash ilovasi haqida ma`lumotlar
3. Asosiy qism:
3.1. Restoran izlash ilovasi dastur kodlari va izohlar
3.2. Resoran izlash ilovasi rasmlari
4. Xulosa
5. Foydalanilgan adabiyotlar Kirish
Mobil ilovalar yaratish texnologiyasi, mobil qurilmalardagi dasturlarni yaratish 
uchun ishlatiladigan texnologik usullar va vositalardir. Bu texnologiya, mobil 
ilovalarni, masalan, telefon ilovasini, o'yin ilovalarini, ijtimoiy tarmoq ilovalarini 
va boshqalarini yaratish uchun qo'llaniladi.
Mobil ilovalar yaratish texnologiyasi quyidagi asosiy qismlardan iborat bo'lishi 
mumkin:
Platformalar: Mobil ilovalarni yaratish uchun har bir platforma o'z o'ziga xos 
bo'lgan imkoniyatlarga ega bo'ladi. Eng mashhur mobil platformalar iOS (Apple 
tizimi) va Android (Google tizimi) hisoblanadi. Platformalar o'rtasidagi farq va 
qodirliklar, dasturchilar uchun bog'liq bo'lib, ularga ilovaning yo'nalishi va 
iste'molchilarining talablariga qarab belgilanadi.
Dasturlash til va vositalari: Mobil ilovalarni yaratish uchun qo'llaniladigan turli 
dasturlash tillari va vositalar mavjud. Misol uchun, Java, Swift, Kotlin, C#, 
JavaScript va boshqalar. Bu tillar, dasturchilarga mobil ilovalar yaratishda 
muvaffaqiyatli bo'lishlari uchun kerakli imkoniyatlarni taqdim etadi. Bundan 
tashqari, dasturlash vositalari, qulaylik va soddalikni oshirish uchun yordam 
beradi.
  Gartnerbozor tadqiqot firmasi   2013-yilda 102 milliard dastur yuklab olinishini 
bashorat qildi (ularning 91 foizi bepul), bu esa AQShda 26 milliard dollar daromad
keltiradi, bu 2012 yildagi 18 milliard dollarga nisbatan 44,4 foizga ko‘p.   2015 
yilning 2-choragiga kelib faqatgina Google Play va Apple do konlari 5 milliard ʻ
dollar ishlab topdi.   Tahlilchilar hisobotiga ko'ra, ilovalar iqtisodiyoti Yevropa 
Ittifoqida yiliga 10 milliard yevrodan ortiq  pul  keltiradi , ilovalar bozorining o'sishi
tufayli Yevropa Ittifoqining 28 davlatida 529 mingdan ortiq ish o'rni yaratilgan.   NAZARIY QISM
Mobil ilovalar yaratish va uning asosiy tushunchalari
Mobil ilovalar yaratish (mobil dasturlash) o'sishga va o'zgarishlarga qarab, mobil 
qurilmalar uchun ilovalar yaratish jarayoni. Bu ilovalar odatda iOS (Apple) va 
Android (Google) operatsion tizimlari uchun yaratiladi, shuningdek, boshqa mobil 
platformalar uchun ham mavjud bo'lishi mumkin.
Mobil ilovalar yaratishning asosiy tushunchalari quyidagilardir:
Ilova Konsepti : Ilovaning asosiy maqsadi, qo'llanuvchi muhitida hal qilishi kerak 
bo'lgan muammolarni yechish, o'z muayyan maqsadlarga erishish va 
foydalanuvchilar uchun qulayliklar yaratishni o'z ichiga oladi.
Platforma Tanlash : Mobil ilovalarni yaratishda avvalo qo'llanuvchilarning 
qanday mobil platformada ishlaydi ekanligini aniqlash lozim. Eng mashhur mobil 
platformalar iOS va Android bo'lib, ularning yaratish tillari (Swift, Objective-C 
iOS uchun; Java, Kotlin Android uchun) bilan ilovalarni yaratish mumkin.
Dizayn : Ilovaning dizayni, yani interfeysi, foydalanuvchilar bilan o'zaro 
munosabatlarda ishtirok etadi. Uning intuitiv bo'lishi, sodda vaqtlarda ishga 
tushirilishi, murakkablikka qarshi darajasi, jihatdan ilovaning muvaffaqiyatini 
ta'minlaydi.
Ilova Tayyorlash : Mobil ilovalarni yaratish jarayonida kod yozish, funksiyalarni 
qo'shish, tizimlararo aloqalar (API) bilan integrlash va loyihani test qilishni o'z 
ichiga oladi. Bu jarayonda qo'llanuvchilarning talablariga javob beruvchi, xato va 
noaniqliklarni oldini olishga intiluvchi kod yoziladi.
Testlash va Tahlil : Mobil ilovaning istiqboli va xususiyatlarini tekshirish uchun 
testlar va tahlillar o'tkaziladi. Bu jarayonda ilova xato yoki muammolar topgan 
paytda tuzatiladi, ishga tushurilgan funksiyalar to'g'ri ishlashi ta'minlanadi.
E'lon va Tarqatish : Mobil ilova tayyor bo'lganda, u e'lon qilingan, dastur 
do'konlarida tarqatilgan yoki ommaviy tashqi veb-saytlarda taqdim etilgan bo'lishi 
mumkin. Bu yerga mos tashriflar jalb etilishi va foydalanuvchilarning ilovani 
o'rniga olishlari uchun reklama kampaniyalari amalga oshirilishi mumkin. Mobil ilovalar yaratish jarayoni murakkabliklar va tezroq o'zgarishlarga bog'liq 
bo'lishi mumkin, shuning uchun muvaffaqiyatli ilovalar yaratish uchun o'zingizni 
mutaxassislik darajasida rivojlantirish va so'nggi texnologiyalarni kuzatish kerak.
Mobil ilovalar qanday yaratilgan?
Mobil ilovalar turli dasturlash tillari va ramkalar yordamida yaratilgan va ularni 
Apple App Store   yok Google Play   kabi ilovalar do‘konlaridan yuklab olish va 
o‘rnatish mumkin .
Mobil ilovalar keng doiradagi funksiya va xizmatlarni taqdim etish va ular uchun 
yaratilgan qurilmalarning talablari, cheklovlari va imkoniyatlarini hisobga olgan 
holda ishlab chiqilgan.   Misol uchun,Iphone uchun maxus ishlab 
chiqilgan   akselerometridan foydalanishi mumkin   .
Boshqa misollar orasida o'yinlar   , elektron pochta mijozlari va bank ilovalari 
mavjud.   Ulardan yangiliklar va ob-havo ma lumotlari kabi ma lumotlarga kirish, ʼ ʼ
onlayn xarid qilish va sayohatni bron qilish kabi vazifalarni bajarish uchun ham 
foydalanish mumkin.
Mahalliy ilovalar
Mahalliy mobil ilova - bu maxsus kodlash tilidan foydalangan holda Android yoki 
IOS kabi ma'lum turdagi qurilmalar platformalari uchun yaratilgan va ishlab 
chiqilgan ilova turi.    Ilovani yaratish uchun   ishlab chiquvchilar tanlagan kodlash 
tiliga qurilma platformasi tomonidan ruxsat berilishi kerak.   Ushbu turkum uchun 
odatiy ilovalar xususiyatlari oflayn mobil o'yinlar, lug'at ilovalari va boshqalar 
bo'lishi mumkin.
Mahalliy ilovalarning asosiy afzalligi ularning yuqori va ajoyib foydalanuvchi 
tajribasidir.   Hamma narsani hisobga olsak, ularni yaratgan dizaynerlar mahalliy UI
qurilmalaridan foydalanadilar.   Keng ko'lamli API-ga kirish, shuningdek, ishlab 
chiqish ishlarini tezlashtirishga yordam beradi va ilovalardan foydalanish 
chegaralarini kengaytiradi.   Mahalliy ilovalar ilovalar do'konlaridan yuklab olinishi  va to'g'ridan-to'g'ri qurilmalarga kiritilishi kerak.   Shuning uchun ular birinchi 
navbatda jiddiy tarqatish jarayonidan o'tishlari kerak.
Odatda, o'yinda barcha tasvirlar, tovushlar va darajalar yuklab olinadi, shuning 
uchun foydalanuvchi o'yinni internetga ulanmasdan o'ynashi mumkin (ba'zi 
o'yinlar sizdan internetga ulanishni talab qiladi, chunki ular tizimga kirish, ichidagi
narsalarni sotib olish yoki sotish, yoki ular onlayn o'yinlar bo'lgani uchun).   Hamma
biladigan mahalliy mobil ilovaning yana bir keng tarqalgan misoli Facebook.
Veb ilovalar
Veb-ilovalar mahalliy mobil ilovalarga mos keladigan va mobil qurilmalarda 
ishlaydigan dasturiy ilovalar.   Biroq, mahalliy ilovalar va veb-ilovalar o'rtasida 
jiddiy farqlar mavjud.   Yangi boshlanuvchilar uchun veb-ilovalar ishlash uchun 
brauzerlardan foydalanadi va ular odatda CSS, HTML5 yoki JavaScript-da 
yozilgan.   Bunday ilovalar mijozni URL manziliga yo'naltiradi va keyin ularga 
ilovani tanishtirish imkoniyatini beradi.   Natijada, veb-ilovalar mijozlarni kelajakda
ko'rish uchun bunday sahifalarda xatcho'p qo'yishga majbur qiladi.   Shuning uchun 
ular eng kam xotirani talab qiladi.  
Veb-ilovalar mahalliy ilovalar bilan solishtirganda bir xil tashkil etish usulini 
amalga oshiradi, ammo mobil qurilmangizdagi veb-sayt brauzeri orqali kirish 
mumkin.   Ular qurilmangizga kodni yuklab olish va o'rnatish nuqtai nazaridan 
mustaqil ilovalar emas.   Ular haqiqatan ham sezgir veb-saytlar bo'lib, 
foydalanuvchi interfeysini mijozning qurilmasiga moslashtiradi.   Rostini aytsam, 
veb-ilovani "o'rnatish" tanlovini ko'rib chiqsangiz, u ko'pincha qurilmangizdagi 
sayt URL manzilini xatcho'p qiladi. Gibrid ilovalar
 Gibrid ilovalar mobil veb va mahalliy ilovaning afzalliklarini birlashtiradi.   U 
mobil WebView-da ishlaydigan HTML, CSS va Javascript yordamida 
yaratilgan.   Biroq, gibrid ilova hali ham qurilmaning suratga olish, GPS, tebranish 
va boshqalar kabi xususiyatlaridan foydalanishi mumkin.
Bu mahalliy ilovalarga juda o'xshash veb-ilovalar.   Ular uy ekranidagi ilova 
belgisiga, sezgir dizaynga, tezkor ishlashga va hatto uzilgan holda ishlash 
imkoniyatiga ega bo'lishi mumkin, ammo ular haqiqatan ham mahalliy ko'rinish 
uchun yaratilgan veb-ilovalardir.
Gibrid ilovalar o zaro platformalar asosida yoziladi: Cordova, Phonegap, Ionic… ʻ
Biz ushbu ramka taqdim etgan API orqali mobil telefonning funksiyalarini 
Javascript ko rinishida chaqiramiz.	
ʻ   Siz faqat bir marta yozishingiz kerak, bu 
ramkalar ushbu dasturni Android va iOS uchun o'rnatish fayllariga avtomatik 
ravishda tarjima qiladi.   Ishlashda unchalik og'ir bo'lmagan va qurilmaning 
funksional imkoniyatlaridan foydalanishi kerak bo'lgan ba'zi ilovalar ushbu ishlab 
chiqish usulini tanlaydi. Restoran izlash ilovasi haqida ma`lumotlar
Restoran izlash ilovasi, restoranlar, kafedralar, kafe va boshqalar kabi g'oyalar 
uchun mobil ilova bo'lib, foydalanuvchilarga bir nechta restoranlar bilan bog'liq 
malumotlarni taqdim etadi. Bu ilovalar, odamlarga restoranlar ro'yxati, ularning 
manzillari, yagona o'rtasi, menyulari, narxlari, mijozlar tomonidan qoldirilgan 
reytinglari va boshqalar kabi ma'lumotlarni ko'rsatadi.
Restoran izlash ilovalari, asosan mobil qurilmalar uchun iOS va Android 
platformalarida mavjud bo'lib, ularga ko'chirib olinishi mumkin. Bu ilovalar, 
internetdagi bazalar orqali ma'lumotlar olish va ularga yuqori samaradorlik bilan 
qidirish uchun qo'llanadi.
Bir nechta restoran izlash ilovalari mavjud, ba'zi mashhur variantlari misol sifatida 
quyidagilarni o'z ichiga oladi:
Yelp: Bu ilova, bir nechta mamlakatlarda restoranlar, kafedralar va kafelar haqida 
ma'lumotlar taqdim etadi. Foydalanuvchilar restoranlar bo'yicha reyting berish, 
sharhlar yozish va rasmlar bilan ta'minlashadi.
Zomato: Zomato, ko'plab mamlakatlarda restoranlar va ularning menyulari, 
narxlari, manzillari va reytinglari haqida ma'lumotlar beradi. Ushbu ilovada 
mijozlar restoranlarga buyurtma berishlari va shuningdek rezervatsiyalar qilishlari 
mumkin. OpenTable: OpenTable, AQSh va boshqa mamlakatlarda restoranlar haqida 
ma'lumotlarni olish imkonini beradi. Bu ilova orqali foydalanuvchilar restoranlar 
uchun joy oldini rezervatsiya qila oladi.
TripAdvisor: TripAdvisor, dunyoning bir nechta mamlakatlardagi restoranlar, 
mehmonxonalar va ko'plab boshqa mehmonxona turlari haqida ma'lumotlar taqdim
etadi. Bu ilova orqali foydalanuvchilar reytinglar, sharhlar, rasmlar va mijozlar 
tomonidan qoldirilgan so'rovnomalar bilan ta'minlanadi.
Bu ilovalar foydalanuvchilarga restoran izlash va ularga oid ma'lumotlarni 
to'plashda yordam beradi. Ularning har biri o'zining o'ziga xos xususiyatlarga ega 
bo'lib, foydalanuvchilar har bir ilovani tanlashda o'ziga qulay keluvchi variantni 
tanlashlari mumkin.
Restoran izlash ilovalari bir necha afzalliklarga ega bo'lishi mumkin:
Ma'lumotlar va reytinglar: Restoran izlash ilovalari, bir nechta restoranlar haqida 
ma'lumotlarni to'plab, ularga reytinglar beradi. Bu ma'lumotlar restoranlar haqida 
foydalanuvchilar bilan bo'lgan ta'sir-ijodlar asosida yig'ilgan bo'lib, restoranlarni 
baholashda yordam beradi.
Manzillar va yo'llar tarifi: Restoran izlash ilovalari, restoranlar, kafedralar, kafe va 
boshqa yemek o'zgartirish joylarining manzil ma'lumotlarini taqdim etadi. Bu 
saytda manzil, yo'llar tarifi, navigatsiya imkoniyatlari va qo'llanish jarayonlari 
haqida ma'lumotlar topish mumkin.
Menyular va narxlar: Ilovadagi restoranlar, ularning menyularini, ichimliklarini, 
ovqatlarni va narxlarini taqdim etadi. Bu, foydalanuvchilar uchun restoranlarni 
tanlash va narxlarni solishtirishda qulaylik yaratadi.
Buyurtma berish va yetkazib berish: Ba'zi restoran izlash ilovalari, 
foydalanuvchilarga restoranlardan online buyurtma berish imkoniyatini beradi. Bu,
buyurtmalar, yetkazib berish va to'lov jarayonlarini ishonchli va samarali qiladi. Rezervatsiyalar: Bazi ilovalar restoranlarni rezervatsiya qilish imkoniyatini ham 
beradi. Foydalanuvchilar restoranga otirish vaqtini va mehmonlar sonini belgilab, 
rezervatsiya qilishlari mumkin.
Reyting va sharhlar: Restoran izlash ilovalari, mijozlar tomonidan qoldirilgan 
reytinglarni, sharhlar va tasvirlarni taqdim etadi. Bu, foydalanuvchilar uchun 
restoranlar haqida fikr bildirish va boshqa mijozlarning sharhlarini o'qish imkonini 
beradi. 
ASOSIY QISM
Restoran izlash ilovasi dastur kodlari va izohlar
Build.gradle(app) fayli
apply plugin: 'com.android.application' //
android {
    compileSdkVersion 27
    defaultConfig {
        applicationId "com.example.mynearbyplaces"
        minSdkVersion 19
        targetSdkVersion 27
        versionCode 1
        versionName "1.0"
                testInstrumentationRunner
"android.support.test.runner.AndroidJUnitRunner”}
    buildTypes {
        release {
            minifyEnabled false                        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-
rules.pro'
        }}}
dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation 'com.android.support:appcompat-v7:27.1.1'
    implementation 'com.android.support:exifinterface:27.1.1'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
        androidTestImplementation   'com.android.support.test.espresso:espresso-
core:3.0.2'
    implementation 'com.android.support:design:27.1.1'
    implementation 'com.squareup.retrofit2:retrofit:2.4.0'
    implementation 'com.squareup.retrofit2:converter-gson:2.4.0'
    implementation 'com.android.support:design:27.1.1'
    implementation 'com.android.support:cardview-v7:27.1.1'
    implementation 'com.mcxiaoke.next:recycler:1.5.3'
    implementation 'com.squareup.picasso:picasso:2.71828'
//google xarita va lokatsiya va places API
    implementation 'com.google.android.gms:play-services-location:16.0.0'
    implementation 'com.google.android.gms:play-services-nearby:16.0.0'
    implementation 'com.google.android.gms:play-services-maps:16.0.0'     implementation 'com.google.android.gms:play-services-places:16.0.0'
    implementation 'com.google.android.gms:play-services-vision:17.0.2'}
build.gradle   fayli,   Android   proyektlarining   konfiguratsiya   fayli   bo'lib,   Android
ilovalarini   tashkil   qilish   va   qurish   jarayonida   qo'llaniladi.   build.gradle   fayli,
proyektning   o'zini   tashkil   qilish   jarayonini   sozlash   uchun   Gradle   skriptlarini   o'z
ichiga   oladi.   Bu   fayl,   proyektning   versiyalarini,   qo'llaniladigan   kutubxonalarni,
ilovalarning   konfiguratsiyalarini,   dependencies   (bog'liqlar)   va   boshqa   Gradle
sozlamalarini o'z ichiga oladi.
AndroidManifest.xml fayli
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.mynearbyplaces">
    <uses-permission 
android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission 
android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission 
android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.CALL_PHONE" />
    <uses-permission 
android:name="android.permission.ACCESS_WIFI_STATE"/>
    <uses-permission 
android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-feature android:name="android.hardware.location.gps" />     <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme.NoActionBar">
        <activity android:name=".activity.MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <meta-data
            android:name="com.google.android.geo.API_KEY"
            android:value="@string/google_api_key" />
        <activity
            android:name=".MapsActivity"
            android:label="@string/title_activity_maps" />
        <activity android:name=".activity.PlaceDetailsActivity" />
        <activity android:name=".activity.PlaceOnMapActivity" />
        <activity android:name=".activity.ShowPlacesOnMapActivity"></activity>
    </application> </manifest>
AndroidManifest.xml fayli, Android ilovasining manifest fayli hisoblanadi. Bu 
fayl, ilovaga o'ziga xos ma'lumotlarni beradi va ilova tarkibidagi komponentlarni 
(masalan, aktiviteler, xizmatlar, broadcast qabul qiluvchilar va boshqalar) va 
ularning vazifalarini tasvirlaydi.
AndroidManifest.xml fayli quyidagi ma'lumotlarni o'z ichiga oladi:
Ilova haqida asosiy ma'lumotlar:
 Ilova nomi (android:label)
 Paket nomi (package)
 Ilovadagi versiya (android:versionCode va android:versionName)
 Ilova ikonasi (android:icon)
Komponentlar:
 Aktiviteler (<activity>)
 Xizmatlar (<service>)
 Broadcast qabul qiluvchilar (<receiver>)
 Providerlar (<provider>)
Ilovaga aloqador muhim huquqlar va imtiyozlar:
 Internetga kirish (<uses-permission 
android:name="android.permission.INTERNET" />)
 GPSni ishlatish (<uses-permission 
android:name="android.permission.ACCESS_FINE_LOCATION" />)
 Kamera bilan ishlash (<uses-permission 
android:name="android.permission.CAMERA" />)
 Wifi uchun ruxsat( <uses-permission 
android:name="android.permission.ACCESS_WIFI_STATE" />)
Ilovaga o'ziga xos sozlamalar:  Ekran orientatsiyasi (<activity android:screenOrientation="portrait" />)
 Ajoyib yordamchi (<meta-data>)
Manifestning boshqa umumiy sozlamalari:
 Manifestning paket nomini ko'rsatish (<manifest package="  
com.example.mynearbyplaces  ">)
 Mininimum va maksimum Android versiyalari (<uses-sdk>)
 Asosiy aktiviteni (<intent-filter> orqali)
 Ilovani debug rejimda ishlatish (<application android:debuggable="true">)
JAVA VA XML KODLARI
MapsActivity.java
public class MapsActivity extends FragmentActivity implements 
OnMapReadyCallback,
GoogleApiClient.ConnectionCallbacks, 
GoogleApiClient.OnConnectionFailedListener, LocationListener {
private GoogleMap mMap;private GoogleApiClient mGoogleApiClient;
private double latitude, longitude;private Location mLastLocation;
private Marker mMarker;private LocationRequest mLocationRequest;
GoogleApiService mGoogleApiService;private static final int LOCATION_CODE
= 1000;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_maps); //   SupportMapFragment-ni chaqirish va xarita foydalanishga tayyor bo'lganda 
xabar olinishi.
SupportMapFragment mapFragment = (SupportMapFragment) 
getSupportFragmentManager().findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
mGoogleApiService = Common.getGoogleApiService();      // service chaqirilishi
// bajariloyatgan dasturga so`rov yuborish
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) 
{checkLocationPermission();        }
BottomNavigationView bottomNavigationView = 
findViewById(R.id.bottomNavigation);
bottomNavigationView.setOnNavigationItemSelectedListener(new 
BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()) {case R.id.action_hospital:
nearbyPlaces("hospital");  break;case R.id.action_market:
nearbyPlaces("market");break;case R.id.action_restaurant:
nearbyPlaces("restaurant"); break;default:break;}return false;} });FindLocation();}
public void FindLocation() {
LocationManager locationManager = (LocationManager) 
this.getSystemService(Context.LOCATION_SERVICE);
Boolean 
network_enabled=locationManager.isProviderEnabled(LocationManager.NETWO
RK_PROVIDER); Location location;  if (network_enabled) {
if (ActivityCompat.checkSelfPermission(this, 
Manifest.permission.ACCESS_FINE_LOCATION) != 
PackageManager.PERMISSION_GRANTED && 
ActivityCompat.checkSelfPermission(this, 
Manifest.permission.ACCESS_COARSE_LOCATION) != 
PackageManager.PERMISSION_GRANTED) {
return;}
location = 
locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVID
ER);if (location != null) { mLastLocation = location;longitude = 
location.getLongitude(); latitude = 
location.getLatitude();Toast.makeText(getApplicationContext(),String.valueOf(loc
ation.getLatitude()) + "\n" + String.valueOf(location.getLongitude()), 
Toast.LENGTH_SHORT).show();}}}
@Override
protected void onStart() {
super.onStart();
if (mGoogleApiClient != null)
mGoogleApiClient.connect();}
@Override
protected void onStop() {
LocationServices.FusedLocationApi.removeLocationUpdates(mGoogleApiClient, 
this);
if (mGoogleApiClient != null) mGoogleApiClient.disconnect();
super.onStop();} private void nearbyPlaces(final String placeType) {
mMap.clear(); String url = getUrl(latitude, longitude, placeType);
mGoogleApiService.getNearByPlaces(url)   .enqueue(new Callback<MyPlaces>() 
{            @Override
public void onResponse(Call<MyPlaces> call, Response<MyPlaces> response) {
if (response.isSuccessful()) {   for (int i = 0; i < response.body().getResults().size();
i+) {MarkerOptions markerOptions = new MarkerOptions(); Results googlePlace
= response.body().getResults().get(i);
double lat = 
Double.parseDouble(googlePlace.getGeometry().getLocation().getLat());
double lng = 
Double.parseDouble(googlePlace.getGeometry().getLocation().getLng());
String placeName = googlePlace.getName();     String vicinity = 
googlePlace.getVicinity();   LatLng latLng = new LatLng(lat, lng);
markerOptions.position(latLng);  markerOptions.title(placeName);
if (placeType.equals("hospital")) {
markerOptions.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFa
ctory.HUE_RED));
} else if (placeType.equals("market")) {
markerOptions.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFa
ctory.HUE_RED));
} else if (placeType.equals("restaurant")) {
markerOptions.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFa
ctory.HUE_RED)); } else 
{markerOptions.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorF
actory.HUE_RED));     }// xaritaga marker qo`shish
mMap.addMarker(markerOptions);   // camerani harakatlantirish
mMap.moveCamera(CameraUpdateFactory.newLatLng(latLng));  
mMap.animateCamera(CameraUpdateFactory.zoomTo(15));}}}
@Override
public void onFailure(Call<MyPlaces> call, Throwable t) {}    });  }
private String getUrl(double latitude, double longitude, String placeType) {
StringBuilder builder = new 
StringBuilder("https://maps.googleapis.com/maps/api/place/nearbysearch/json?");
builder.append("location=" + latitude + "," + longitude);
builder.append("&radius=10000");builder.append("&type=supermarket");
builder.append("&key=" + getResources().getString(R.string.google_maps_key));
Log.d("APIURL", builder.toString());
return builder.toString();}
private boolean checkLocationPermission() {
if (ContextCompat.checkSelfPermission(this, 
Manifest.permission.ACCESS_FINE_LOCATION) != 
PackageManager.PERMISSION_GRANTED) {
if (ActivityCompat.shouldShowRequestPermissionRationale(this, 
Manifest.permission.ACCESS_FINE_LOCATION)) {
ActivityCompat.requestPermissions(this, new String[]{
Manifest.permission.ACCESS_FINE_LOCATION }, LOCATION_CODE);
} else {
ActivityCompat.requestPermissions(this, new String[]{
Manifest.permission.ACCESS_FINE_LOCATION
}, LOCATION_CODE);}            return false;
} else {   return true;} }
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] 
permissions, @NonNull int[] grantResults) {
switch (requestCode) {case LOCATION_CODE: {
if (grantResults.length > 0 && grantResults[0] == 
PackageManager.PERMISSION_GRANTED) {
if (ContextCompat.checkSelfPermission(this, 
Manifest.permission.ACCESS_FINE_LOCATION) == 
PackageManager.PERMISSION_GRANTED) {
if (mGoogleApiClient == null) {
buildGoogleApiClient();  }
mMap.setMyLocationEnabled(true);   } else {
Toast.makeText(getApplicationContext(), "Permission denied", 
Toast.LENGTH_SHORT).show();}}}
break;}}
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap; if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (ContextCompat.checkSelfPermission(this, 
Manifest.permission.ACCESS_FINE_LOCATION) == 
PackageManager.PERMISSION_GRANTED) {
buildGoogleApiClient();
mMap.setMyLocationEnabled(true);}
} else {   buildGoogleApiClient();
mMap.setMyLocationEnabled(true);}
private synchronized void buildGoogleApiClient() {
mGoogleApiClient = new GoogleApiClient.Builder(this)
.addConnectionCallbacks(this).addOnConnectionFailedListener(this)
.addApi(LocationServices.API)  .build();mGoogleApiClient.connect();}
@Override
public void onConnected(@Nullable Bundle bundle) {
mLocationRequest = new LocationRequest();
mLocationRequest.setInterval(1000);
mLocationRequest.setFastestInterval(1000);
mLocationRequest.setPriority(LocationRequest.PRIORITY_BALANCED_POWE
R_ACCURACY);
if (ActivityCompat.checkSelfPermission(this, 
Manifest.permission.ACCESS_FINE_LOCATION) == 
PackageManager.PERMISSION_GRANTED && 
ActivityCompat.checkSelfPermission(this, 
Manifest.permission.ACCESS_COARSE_LOCATION) != 
PackageManager.PERMISSION_GRANTED) { LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient, 
mLocationRequest, this);}}
@Override
public void onConnectionSuspended(int i) {
mGoogleApiClient.connect();}
@Override
public void onConnectionFailed(@NonNull ConnectionResult connectionResult) 
{}
@Override
public void onLocationChanged(Location location) {
mLastLocation = location;
if (mMarker != null) {mMarker.remove();}
latitude = location.getLatitude();longitude = location.getLongitude();
LatLng latLng = new LatLng(latitude, longitude);
MarkerOptions options = new MarkerOptions()
.position(latLng)   .title("Joylashuv")
.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GR
EEN));
mMarker = mMap.addMarker(options);// kamerani harakatlanitirish
mMap.moveCamera(CameraUpdateFactory.newLatLng(latLng));
mMap.animateCamera(CameraUpdateFactory.zoomTo(15));
}}} Activity_maps.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MapsActivity">
  <fragment
        android:id="@+id/map"
        android:name="com.google.android.gms.maps.SupportMapFragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
 <android.support.design.widget.BottomNavigationView
        android:id="@+id/bottomNavigation"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        app:itemBackground="@color/colorPrimary"
        app:itemIconTint="@android:color/white"
        app:itemTextColor="@drawable/nav_selector"
        app:menu="@menu/bttom_menu" />
</RelativeLayout> Ushbu XML faylida RelativeLayout asosida qurilgan bir oyna (layout) ko'rinishi 
berilgan.
RelativeLayoutning ichida SupportMapFragment nomi bilan fragment elementi 
joylashgan. Bu element com.google.android.gms.maps.SupportMapFragment 
klassiga tegishli xarita fragmentini ifodalaydi. 
MainActivity.java
public class MainActivity extends AppCompatActivity {
public TabLayout tabLayout; public ViewPager viewPager;
@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
            checkPermission(); }
tabLayout = findViewById(R.id.tabs);viewPager = 
findViewById(R.id.viewpager);
viewPager.setAdapter(new TabPagerAdapter(getSupportFragmentManager()));
tabLayout.post(new Runnable() {
            @Override
            public void run() {
                tabLayout.setupWithViewPager(viewPager);  }});
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override             public void onPageScrolled(int position, float positionOffset, int 
positionOffsetPixels) {}
            @Override
            public void onPageSelected(int position) {
                switch (position) {
                    case 0:
                        //toolbar.setTitle("Recipes");break;
                    case 1:
                        //toolbar.setTitle("Categories");break;}}
            @Override
            public void onPageScrollStateChanged(int state) {} });}
    private void checkPermission() { int PERMISSION_ALL = 1;
        String[] PERMISSIONS = {
Manifest.permission.ACCESS_FINE_LOCATION,Manifest.permission.ACCESS
_COARSE_LOCATION,
Manifest.permission.CALL_PHONE,Manifest.permission.ACCESS_WIFI_STAT
E,Manifest.permission.ACCESS_NETWORK_STATE,};
        if (!hasPermissions(this, PERMISSIONS)) {
            ActivityCompat.requestPermissions(this, PERMISSIONS, 
PERMISSION_ALL);}}
    boolean hasPermissions(Context context, String... permissions) {
if (context != null && permissions != null) {for (String permission : permissions) {
                if (ActivityCompat.checkSelfPermission(context, permission) != 
PackageManager.PERMISSION_GRANTED) { return false;}}}return true;   }} Bu koddagi MainActivity klassi Androidning asosiy aktivitiysi sifatida ishlatiladi. 
Kodning boshida o'zgaruvchilar TabLayout va ViewPager aniqlanadi va onCreate 
metodida setContentView metodi bilan ma'lum bir activity_main qurilmalari bilan 
bog'lanadi.
checkPermission metodi, qurilmaga berilgan ruhsatlar (permissions)ni tekshirish 
uchun ishlatiladi. Ushbu metod Manifest.permission o'zgaruvchilari orqali 
foydalanuvchi ruhsatlari qatorini tekshiradi. Agar ruhsatlardan biri yo'q bo'lsa, 
requestPermissions metodi orqali ruhsat so'ralinadi.
hasPermissions metodi, berilgan kontekst va ruhsatlarni tekshiradi. Kontekst va 
ruhsatlarning mavjudligi tekshiriladi, agar bitta ham ruhsat mavjud bo'lmasa false 
qaytariladi, aks holda true qaytariladi.
onPageSelected metodi ViewPager o'zgaruvchisi orqali sahifani tanlaganda ishga 
tushadi. Ushbu metod switch-case operatori orqali tanlangan sahifaga mos 
keladigan amalni bajaradi.
Kodning so'nggi qismida esa onPageScrolled va onPageScrollStateChanged 
metodlarida hech qanday amal bajarilmaydi.
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout 
xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    andr oid:id="@+id/tab_coordinator_layout"
    android:layout_width="match_parent"     android:layout_height="match_parent">
<android.support.v4.view.ViewPager
        android:id="@+id/viewpager"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_behavior="@string/appbar_scrolling_view_behavior" />  
<android.support.design.widget.AppBarLayout
        android:id="@+id/tab_appbar_layout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
   <android.support.design.widget.TabLayout  android:id="@+id/tabs"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@color/colorPrimary"
            app:tabGravity="fill"
            app:tabIndicatorColor="@color/tabIndicatorColor"
            app:tabIndicatorHeight="2dp"   app:tabMode="fixed"
            app:tabSelectedTextColor="@color/tabSelectedTextColor"
            app:tabTextColor="@color/tabTextColor" />  
</android.support.design.widget.AppBarLayout>
</android.support.design.widget.CoordinatorLayout>
Resoran izlash ilovasi rasmlari 1-rasm. Bu yerda Asosiy oyna bo`lib, yaqin atrofdagijoylarni ko`rsatadi. 
Masalan,Restoran
2-rasm. Bu yerda “Platan” Restoraniga kirish uchun Go tugmasini bosdik va
restoran haqida malumotlar ko`rinadi.
3-4-rasmlar. Show on Map va Show direction on Map tugmalari bosilgandan
keying holatlar. Ko`rib turganimizdek, rasmlarda yaqin atrofdagi restoranning birini 
ko`rsatyapti. Keying rasmda esa unga bo`lgan yo`lni qizil chiziq bilan 
ko`rsatyapti.
Xulosa
Restoran qidirish ilovasi yaratishda o`rgangan asosiy bilimlar quyidagilardir:  Android platformasi: Restoran qidirish ilovasi Android operatsion tizimi 
uchun yaratilgan. Shuning uchun Android platformasini tushunish va 
Android ilovalarini yaratish bo'yicha bilimlar;
 Java dasturlash tili: Android ilovalari Java dasturlash tilida yaratiladi. Bu 
sababli Java dasturlash tilini tushunish, sintaksisini bilish va dasturlash 
asoslari;
 Android Studio: Android ilovalarini yaratish uchun Android Studio 
muhitidan foydalaniladi. Android Studio'ni o'rganish, proyektlarni yaratish, 
ilovalarni tashkil qilish va ulardan foydalanish bilimlari;
 XML: Android ilovalarida interfeys dizaynini belgilash uchun XML 
fayllaridan foydalaniladi. XML tilini o'rganib, Android interfeysi uchun mos
taglar, atributlar va yuklamalar bilan ishlash bilimlari;
 Google Maps API: Restoranlarni ko'rish va manzillarini olish uchun Google 
Maps API'dan foydalaniladi. Google Maps API ni tushunish, xaritani 
integratsiya qilish va ma'lumotlarni olish bilimlari;
 Android Material Design: Restoran qidirish ilovasi uchun yaxshi ko'rinish va
ishlatish imkonini berish uchun Material Design prinsiplarini o'rganish 
zarur. Material Design bo'yicha interfeys komponentlarini foydalanish, 
animatsiyalarni qo'llash va yaxshi tajribani ta'minlash bilimlari;
 Foydalanuvchi interaksiyasi: Ilovada foydalanuvchilar bilan interaksiya 
qilish, menyu tanlash, buyurtma berish va sharhlar qoldirish kabi 
jarayonlarni amalga oshirish zarur. Foydalanuvchilar bilan interfeysni 
intuitiv va qulay qilish uchun interaksiyani boshqarish bilimlari; Foydalanilgan adabiyotlar: 
 https://en.wikipedia.org/
 https://github.com/
 Head First Android Development  kitobi
 Android CookBook kitobi  
Kurs ishini yozish talablari:
Times New Roman shriftida, yozuv o’lchami 14, satrlar oralig’i 1,5px interval,
chapdan 3sm, o’ngdan 1,5 sm, yuqori va pastdan 2 sm masofa qoldirgan 
holda.

Restoran izlash ilovasi Reja: 1. Kirish 2. Nazariy qism: 2.1. Mobil ilovalar yaratish va uning asosiy tushunchalari 2.2. Restoran izlash ilovasi haqida ma`lumotlar 3. Asosiy qism: 3.1. Restoran izlash ilovasi dastur kodlari va izohlar 3.2. Resoran izlash ilovasi rasmlari 4. Xulosa 5. Foydalanilgan adabiyotlar

Kirish Mobil ilovalar yaratish texnologiyasi, mobil qurilmalardagi dasturlarni yaratish uchun ishlatiladigan texnologik usullar va vositalardir. Bu texnologiya, mobil ilovalarni, masalan, telefon ilovasini, o'yin ilovalarini, ijtimoiy tarmoq ilovalarini va boshqalarini yaratish uchun qo'llaniladi. Mobil ilovalar yaratish texnologiyasi quyidagi asosiy qismlardan iborat bo'lishi mumkin: Platformalar: Mobil ilovalarni yaratish uchun har bir platforma o'z o'ziga xos bo'lgan imkoniyatlarga ega bo'ladi. Eng mashhur mobil platformalar iOS (Apple tizimi) va Android (Google tizimi) hisoblanadi. Platformalar o'rtasidagi farq va qodirliklar, dasturchilar uchun bog'liq bo'lib, ularga ilovaning yo'nalishi va iste'molchilarining talablariga qarab belgilanadi. Dasturlash til va vositalari: Mobil ilovalarni yaratish uchun qo'llaniladigan turli dasturlash tillari va vositalar mavjud. Misol uchun, Java, Swift, Kotlin, C#, JavaScript va boshqalar. Bu tillar, dasturchilarga mobil ilovalar yaratishda muvaffaqiyatli bo'lishlari uchun kerakli imkoniyatlarni taqdim etadi. Bundan tashqari, dasturlash vositalari, qulaylik va soddalikni oshirish uchun yordam beradi. Gartnerbozor tadqiqot firmasi 2013-yilda 102 milliard dastur yuklab olinishini bashorat qildi (ularning 91 foizi bepul), bu esa AQShda 26 milliard dollar daromad keltiradi, bu 2012 yildagi 18 milliard dollarga nisbatan 44,4 foizga ko‘p. 2015 yilning 2-choragiga kelib faqatgina Google Play va Apple do konlari 5 milliard ʻ dollar ishlab topdi. Tahlilchilar hisobotiga ko'ra, ilovalar iqtisodiyoti Yevropa Ittifoqida yiliga 10 milliard yevrodan ortiq pul keltiradi , ilovalar bozorining o'sishi tufayli Yevropa Ittifoqining 28 davlatida 529 mingdan ortiq ish o'rni yaratilgan.

NAZARIY QISM Mobil ilovalar yaratish va uning asosiy tushunchalari Mobil ilovalar yaratish (mobil dasturlash) o'sishga va o'zgarishlarga qarab, mobil qurilmalar uchun ilovalar yaratish jarayoni. Bu ilovalar odatda iOS (Apple) va Android (Google) operatsion tizimlari uchun yaratiladi, shuningdek, boshqa mobil platformalar uchun ham mavjud bo'lishi mumkin. Mobil ilovalar yaratishning asosiy tushunchalari quyidagilardir: Ilova Konsepti : Ilovaning asosiy maqsadi, qo'llanuvchi muhitida hal qilishi kerak bo'lgan muammolarni yechish, o'z muayyan maqsadlarga erishish va foydalanuvchilar uchun qulayliklar yaratishni o'z ichiga oladi. Platforma Tanlash : Mobil ilovalarni yaratishda avvalo qo'llanuvchilarning qanday mobil platformada ishlaydi ekanligini aniqlash lozim. Eng mashhur mobil platformalar iOS va Android bo'lib, ularning yaratish tillari (Swift, Objective-C iOS uchun; Java, Kotlin Android uchun) bilan ilovalarni yaratish mumkin. Dizayn : Ilovaning dizayni, yani interfeysi, foydalanuvchilar bilan o'zaro munosabatlarda ishtirok etadi. Uning intuitiv bo'lishi, sodda vaqtlarda ishga tushirilishi, murakkablikka qarshi darajasi, jihatdan ilovaning muvaffaqiyatini ta'minlaydi. Ilova Tayyorlash : Mobil ilovalarni yaratish jarayonida kod yozish, funksiyalarni qo'shish, tizimlararo aloqalar (API) bilan integrlash va loyihani test qilishni o'z ichiga oladi. Bu jarayonda qo'llanuvchilarning talablariga javob beruvchi, xato va noaniqliklarni oldini olishga intiluvchi kod yoziladi. Testlash va Tahlil : Mobil ilovaning istiqboli va xususiyatlarini tekshirish uchun testlar va tahlillar o'tkaziladi. Bu jarayonda ilova xato yoki muammolar topgan paytda tuzatiladi, ishga tushurilgan funksiyalar to'g'ri ishlashi ta'minlanadi. E'lon va Tarqatish : Mobil ilova tayyor bo'lganda, u e'lon qilingan, dastur do'konlarida tarqatilgan yoki ommaviy tashqi veb-saytlarda taqdim etilgan bo'lishi mumkin. Bu yerga mos tashriflar jalb etilishi va foydalanuvchilarning ilovani o'rniga olishlari uchun reklama kampaniyalari amalga oshirilishi mumkin.

Mobil ilovalar yaratish jarayoni murakkabliklar va tezroq o'zgarishlarga bog'liq bo'lishi mumkin, shuning uchun muvaffaqiyatli ilovalar yaratish uchun o'zingizni mutaxassislik darajasida rivojlantirish va so'nggi texnologiyalarni kuzatish kerak. Mobil ilovalar qanday yaratilgan? Mobil ilovalar turli dasturlash tillari va ramkalar yordamida yaratilgan va ularni Apple App Store yok Google Play kabi ilovalar do‘konlaridan yuklab olish va o‘rnatish mumkin . Mobil ilovalar keng doiradagi funksiya va xizmatlarni taqdim etish va ular uchun yaratilgan qurilmalarning talablari, cheklovlari va imkoniyatlarini hisobga olgan holda ishlab chiqilgan. Misol uchun,Iphone uchun maxus ishlab chiqilgan akselerometridan foydalanishi mumkin . Boshqa misollar orasida o'yinlar , elektron pochta mijozlari va bank ilovalari mavjud. Ulardan yangiliklar va ob-havo ma lumotlari kabi ma lumotlarga kirish, ʼ ʼ onlayn xarid qilish va sayohatni bron qilish kabi vazifalarni bajarish uchun ham foydalanish mumkin. Mahalliy ilovalar Mahalliy mobil ilova - bu maxsus kodlash tilidan foydalangan holda Android yoki IOS kabi ma'lum turdagi qurilmalar platformalari uchun yaratilgan va ishlab chiqilgan ilova turi. Ilovani yaratish uchun ishlab chiquvchilar tanlagan kodlash tiliga qurilma platformasi tomonidan ruxsat berilishi kerak. Ushbu turkum uchun odatiy ilovalar xususiyatlari oflayn mobil o'yinlar, lug'at ilovalari va boshqalar bo'lishi mumkin. Mahalliy ilovalarning asosiy afzalligi ularning yuqori va ajoyib foydalanuvchi tajribasidir. Hamma narsani hisobga olsak, ularni yaratgan dizaynerlar mahalliy UI qurilmalaridan foydalanadilar. Keng ko'lamli API-ga kirish, shuningdek, ishlab chiqish ishlarini tezlashtirishga yordam beradi va ilovalardan foydalanish chegaralarini kengaytiradi. Mahalliy ilovalar ilovalar do'konlaridan yuklab olinishi

va to'g'ridan-to'g'ri qurilmalarga kiritilishi kerak. Shuning uchun ular birinchi navbatda jiddiy tarqatish jarayonidan o'tishlari kerak. Odatda, o'yinda barcha tasvirlar, tovushlar va darajalar yuklab olinadi, shuning uchun foydalanuvchi o'yinni internetga ulanmasdan o'ynashi mumkin (ba'zi o'yinlar sizdan internetga ulanishni talab qiladi, chunki ular tizimga kirish, ichidagi narsalarni sotib olish yoki sotish, yoki ular onlayn o'yinlar bo'lgani uchun). Hamma biladigan mahalliy mobil ilovaning yana bir keng tarqalgan misoli Facebook. Veb ilovalar Veb-ilovalar mahalliy mobil ilovalarga mos keladigan va mobil qurilmalarda ishlaydigan dasturiy ilovalar. Biroq, mahalliy ilovalar va veb-ilovalar o'rtasida jiddiy farqlar mavjud. Yangi boshlanuvchilar uchun veb-ilovalar ishlash uchun brauzerlardan foydalanadi va ular odatda CSS, HTML5 yoki JavaScript-da yozilgan. Bunday ilovalar mijozni URL manziliga yo'naltiradi va keyin ularga ilovani tanishtirish imkoniyatini beradi. Natijada, veb-ilovalar mijozlarni kelajakda ko'rish uchun bunday sahifalarda xatcho'p qo'yishga majbur qiladi. Shuning uchun ular eng kam xotirani talab qiladi. Veb-ilovalar mahalliy ilovalar bilan solishtirganda bir xil tashkil etish usulini amalga oshiradi, ammo mobil qurilmangizdagi veb-sayt brauzeri orqali kirish mumkin. Ular qurilmangizga kodni yuklab olish va o'rnatish nuqtai nazaridan mustaqil ilovalar emas. Ular haqiqatan ham sezgir veb-saytlar bo'lib, foydalanuvchi interfeysini mijozning qurilmasiga moslashtiradi. Rostini aytsam, veb-ilovani "o'rnatish" tanlovini ko'rib chiqsangiz, u ko'pincha qurilmangizdagi sayt URL manzilini xatcho'p qiladi.