Биз жөнүндөБлогБайланыш
Мобилдик иштеп чыгуу2013-ж., 25-апрель 4 мин 9

Кыргызстандагы мобилдик тиркемелер 2013: Android жана iOS рыногунун биринчи талдоосу

AunimedaAunimeda
📋 Мазмуну

Кыргызстандагы мобилдик тиркемелер 2013: Android жана iOS рыногунун биринчи талдоосу

2013-жылдын башында биз биринчи жолу клиенттерибизге мобилдик тиркеме жасоону сунуштадык. Бул чечим жөнөкөй факттарга негизделди.

Биздин клиент — Бишкектеги доставка кызматы — веб-сайтынын трафигин карады: 54% смартфондон келди. Андан мурда бул 20% болгон. 2013-жылы нукур мобилдик аудитория пайда болду.


Рынок абалы: реалдуу сандар

2013-жылы Кыргызстандагы мобилдик рынок (биздин долбоорлор боюнча жана ачык маалыматтар боюнча):

Платформа Үлүш Аппараттар
Android 2.3 (Gingerbread) 31% Бюджеттик Samsung, Huawei
Android 4.0–4.1 27% Орто деңгээл Samsung, HTC
Android 4.2+ 10% Флагмандар
iOS (iPhone 4/4S/5) 12% Колдонуучулар аз, бирок активдүү
Nokia Symbian 15% S40, S60 — жаш нарк
Башкалар 5% BlackBerry, Windows Phone

Маанилүү факт: Android 2.3 — 31%. Бул тиркеменин минималдуу API деңгээли 9-нчи болушу керек дегенди билдирет. Эгер 14+ (Android 4.0) белгилесек, рынктын үчтөн бир бөлүгүн жоготту.


Биринчи тиркеме: доставка трекери

Доставка кызматы үчүн тиркеменин максаты жөнөкөй: кардар жүктүн кайда экенин телефонунан текшере алсын.

Техникалык чечим: Java (Android Studio 0.3 бета, ошол кезде Eclipse ADT колдонулду) + iOS үчүн Objective-C. Crossplatform мүмкүнчүлүктөр (PhoneGap, Titanium) бар болчу, бирок GPS жана Push notification ишенимдүү иштеши үчүн нативдик чечим тандалды.

// Android 2.3+ колдоо: ActionBarSherlock библиотекасы
// (нативдик ActionBar API 11де пайда болду, биз 9-минимумдуу болдук)
import com.actionbarsherlock.app.SherlockActivity;
import com.actionbarsherlock.view.Menu;

public class TrackingActivity extends SherlockActivity {
    
    private static final String API_URL = "https://api.delivery.kg/track/";
    private TextView statusText;
    private ProgressBar loadingBar;
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_tracking);
        
        statusText = (TextView) findViewById(R.id.status_text);
        loadingBar = (ProgressBar) findViewById(R.id.loading);
        
        String trackingCode = getIntent().getStringExtra("tracking_code");
        if (trackingCode != null) {
            loadTrackingInfo(trackingCode);
        }
    }
    
    private void loadTrackingInfo(final String code) {
        loadingBar.setVisibility(View.VISIBLE);
        
        // Android 2.3-та AsyncTask — стандарт (Retrofit жок болчу)
        new AsyncTask<String, Void, JSONObject>() {
            @Override
            protected JSONObject doInBackground(String... params) {
                try {
                    URL url = new URL(API_URL + params[0]);
                    HttpURLConnection conn = (HttpURLConnection) url.openConnection();
                    conn.setConnectTimeout(8000);
                    conn.setReadTimeout(10000);
                    
                    StringBuilder sb = new StringBuilder();
                    BufferedReader br = new BufferedReader(
                        new InputStreamReader(conn.getInputStream(), "UTF-8")
                    );
                    String line;
                    while ((line = br.readLine()) != null) sb.append(line);
                    
                    return new JSONObject(sb.toString());
                } catch (Exception e) {
                    return null;
                }
            }
            
            @Override
            protected void onPostExecute(JSONObject result) {
                loadingBar.setVisibility(View.GONE);
                
                if (result == null) {
                    statusText.setText("Байланыш жок. Кайра аракет кылыңыз.");
                    return;
                }
                
                try {
                    String status  = result.getString("status");
                    String location = result.optString("location", "");
                    statusText.setText(status + (location.isEmpty() ? "" : "\n" + location));
                } catch (JSONException e) {
                    statusText.setText("Маалымат жүктөлгөн жок.");
                }
            }
        }.execute(code);
    }
}

Push-уведомлениелер Android 2.3-та

Android 2.3 Google Cloud Messaging (GCM) колдойт — 2010-жылдан. Бирок GCM иштеши үчүн телефондо Google Play Services болушу керек.

Маселе: Кыргызстандагы бюджеттик Android телефондордун (Huawei G300, ZTE Blade) бир бөлүгүндө Google Play Services жок болчу же эски версия орнотулган болчу. Push-уведомлениелер ал аппараттарга жетпеди.

// GCM регистрация + жазуу жарыбаган аппараттар үчүн SMS fallback
public class GcmHelper {
    
    public static boolean isGcmAvailable(Context context) {
        try {
            // Google Play Services бар-жоктугун текшерүү
            int result = GooglePlayServicesUtil.isGooglePlayServicesAvailable(context);
            return result == ConnectionResult.SUCCESS;
        } catch (Exception e) {
            return false;
        }
    }
    
    public static void register(Context ctx, String userId) {
        if (isGcmAvailable(ctx)) {
            // GCM аркылуу push-уведомления
            GCMRegistrar.checkDevice(ctx);
            GCMRegistrar.checkManifest(ctx);
            String regId = GCMRegistrar.getRegistrationId(ctx);
            
            if (regId.isEmpty()) {
                GCMRegistrar.register(ctx, GCM_SENDER_ID);
            } else {
                sendRegIdToServer(userId, regId, "gcm");
            }
        } else {
            // Fallback: SMS-уведомления (кымбатыраак, бирок ишенимдүү)
            sendRegIdToServer(userId, getUserPhone(ctx), "sms");
        }
    }
}

Натыйжада: 78% колдонуучу GCM аркылуу, 22% SMS аркылуу уведомлениелерди алды. SMS-fallback бюджетте $50–80/айды алды, бирок кардарлар ар дайым хабарландырылды.


iOS: аудитория аз, бирок баасы жогору

iOS колдонуучулары 12% болсо да, алар компаниянын VIP-кардарлары болчу. Аппарат баасы — $300–600. Бул сегмент ерекше мамилени талап кылды.

iOS тиркемеси жөнөкөй болчу: UITableView менен заказдар тизмеси, UIWebView аркылуу трекинг. Objective-C, Xcode 4.6.

// AppDelegate.m — push-уведомлениелерди каттоо
- (BOOL)application:(UIApplication *)application 
    didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    
    [[UIApplication sharedApplication] 
        registerForRemoteNotificationTypes:
            UIRemoteNotificationTypeBadge | 
            UIRemoteNotificationTypeSound | 
            UIRemoteNotificationTypeAlert];
    
    return YES;
}

- (void)application:(UIApplication *)app 
    didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
    
    // Token-ди серверге жөнөтүү
    NSString *token = [[deviceToken description] 
        stringByTrimmingCharactersInSet:
            [NSCharacterSet characterSetWithCharactersInString:@"<>"]];
    token = [token stringByReplacingOccurrencesOfString:@" " withString:@""];
    
    [self sendTokenToServer:token platform:@"ios"];
}

Экономикасы: тиркемени жасоонун нарк-жаракасы

2013-жылы Бишкекте мобилдик тиркеме жасоонун нарк-жаракасы:

Компонент Убакыт Нарк
Android тиркемеси (негизги функционал) 6 апта $1,800
iOS тиркемеси 4 апта $1,200
Backend API (PHP) 2 апта $600
Дизайн 1 апта $400
Жалпы 13 апта $4,000

Apple Developer Program: $99/жыл. Google Play: $25 бир жолку.

Бишкектеги орточо айлык иш акы разработчик үчүн: $400–600. Эки разработчик + 3 ай = $3,600 эмгек акысы. Тиркемени аутсорс берүүдөн арзан.


2013-жылдан алынган сабак

Кыргызстандагы мобилдик разработкадан биз үйрөнгөн негизги нерсе: платформалык статистикасыз чечим чыгарба. "Баары iOS колдонот" дегенди укканда — трафик статистикасын карадык: 12%. Бюджеттик Android телефондор рынокту башкарды.

2025-жылы да ошол эле принцип. Флагмандык iPhone менен тест кылуу — жетишсиз. Орточо Android аппаратында, орточо 4G байланышта иштешин текшер. Бул Кыргызстандагы реалдуу колдонуучунун тажрыйбасы.

Ошондой эле окуңуз

React Native менен биринчи мобилдик тиркеме жасоо: Бишкек тажрыйбасы (2015)aunimeda
Мобилдик иштеп чыгуу

React Native менен биринчи мобилдик тиркеме жасоо: Бишкек тажрыйбасы (2015)

React Native 2015-жылдын март айында Facebook тарабынан жарыяланды. Биз iOS жана Android үчүн бир эле код жазуу мүмкүнчүлүгүнө ишандык. Биринчи production тиркемебизди 8 апта ичинде жасадык. Реалдуу код, реалдуу проблемалар, реалдуу жыйынтыктар.

Vue.js менен биринчи долбоор: Бишкектеги тажрыйба (2016)aunimeda
Frontend

Vue.js менен биринчи долбоор: Бишкектеги тажрыйба (2016)

Vue.js 2.0 2016-жылдын октябрь айында чыкты. React'ка салыштырмалуу жеңилирек үйрөнүлгөн. Биз Бишкектеги бир кардар үчүн онлайн-дүкөндүн себет бөлүмүн Vue.js менен жасадык. Components, reactivity, Vuex — реалдуу мисалдар менен.

Express.js менен REST API сервер кантип жасоо: нөлдөн production'го чейин (2015)aunimeda
Backend

Express.js менен REST API сервер кантип жасоо: нөлдөн production'го чейин (2015)

Node.js 4 LTS + Express.js 4 — 2015-жылда PHP'га альтернатива катары пайда болду. Биз Бишкекте мобилдик тиркеме үчүн API сервер жасадык. Роутинг, middleware, валидация, JWT авторизация, MySQL — бардыгы бир жерде. Иштеген код мисалдары.

Бизнесиңизге IT иштеп чыгуу керекпи?

Веб-сайттарды, мобилдик тиркемелерди жана AI чечимдерин иштеп чыгабыз. Акысыз консультация.

Консультация алуу Бардык макалалар