مشاوره رایگان
دریافت لینک های دانلود دریافت پستی درب منزل مبلغ کل: تومان
جهت دریافت کد تخفیف به کانال تلگرام مراجعه و یا با پشتیبان آنلاین هماهنگ نمایید

دوره تکمیلی آموزش iOS : دریافت موقعیت کاربر


این سومین مقاله از دوره تکمیلی آموزش برنامه نویسی iOS می باشد. در دو آموزش قبل ، ما نحوه مخفی کردن tab bar و پیاده سازی قابلیت ارسال ایمیل در اپ را نشان داده ایم. در این مقاله ، نحوه افزودن قابلیت GPS ، در اپ آیفون و بازیابی موقعیت فعلی کاربر را نشان خواهیم داد. ما حتی ، نحوه ترجمه مختصات GPS ، به آدرس خیابان را نیز پوشش خواهیم داد. این کار هم جذاب است و هم به سادگی ، قابل پیاده سازی می باشد.

سرویس موقعیت (location) ، یک روش بهبود اپ از طریق افزایش تجربه کاربر (user experience) می باشد. اگر شما در حال توسعه یک اپ سفر هستید ، می توانید بر اساس موقعیت فعلی کاربران ، امکان جستجوی رستوران ها و هتل های مجاور را فراهم نمایید. هم چنین ، ویژگی موقعیت مکانی را می توان در اکثر اپ های Photo ، مشاهده نمود. این نوع از  اپ ها ، این امکان را فراهم می کنند که موقعیتی را که ، عکس ها در آنجا گرفته شده اند را ذخیره کنند. فریم ورک Core Location ، رابط های ضروری Objective-C را برای  کسب اطلاعات بیشتر از موقعیت مکانی کاربر ، فراهم می نماید. با مختصات GPS به دست آمده ، می توان از API ، برای کدگشایی آدرس خیابان واقعی استفاده کرد ، یا از فریم ورک Map ، برای نشان دادن موقعیت مکانی بر روی نقشه استفاده نمود.

در این آموزش ، یک اپ ساده خواهیم ساخت که نحوه استفاده از فریم ورک Core Location را نشان می دهد. کارهایی که انجام خواهیم داد عبارتند از:

  • ساخت یک رابط ساده برای نمایش دادن مختصات GPS و آدرس.
  • آموزش نحوه استفاده از فریم ورک Core Location API ، برای بازیابی موقعیت فعلی.
  • استفاده از API های داخلی برای ترجمه مختصات GPS ، به آدرس خیابان.

بسیار خوب! بیایید شروع کنیم.

ایجاد پروژه و طراحی رابط کاربری

ابتدا ، یک پروژه Xcode جدید با استفاده از تمپلت Single View Template ، ایجاد می کنیم. نام پروژه را “MyLocationDemo”  قرار داده و پروژه را با پارامترهای زیر تنظیم می کنیم:

هنگامی که با موفقیت پروژه را ساختیم ، به Storyboard رفته و رابط کاربری را طراحی می کنیم. در View ، سه برچسب برای latitude (عرض جغرافیایی ) ، longitude (طول جغرافیایی ) و address اضافه می کنیم. مقابل هر برچسب ، برچسب دیگری قرار می دهیم. بعداً از این برچسب ها ، برای نمایش دادن مختصات GPS و آدرس استفاده خواهیم کرد. در آخر ، یک کلید اضافه کرده و نام آن را “Get My Location”  قرار می دهیم. رابط کاربری طراحی شده ، باید مطابق تصویر زیر باشد:

 

برای برچسب “For Address” ، از آن جایی که ما آدرس را در چند خط نمایش خواهیم داد ، گزینه “lines” را از 1 به 4 تغییر می دهیم. هم چنین می توانیم اندازه فونت آن را نیز در Attribute Inspector ، به 14 افزایش دهیم.

 

ایجاد اتصال بین متغیرها و عناصر UI

در ادامه ، عناصر UI را با کد خود ارتباط خواهیم داد. در Storyboard ، گزینه view controller را انتخاب کرده و به Assistant Editor سوئیچ می کنیم.

کلید کنترل را فشار داده و نگه می داریم ، روی برچسب “For Latitude Value” کلیک کرده و آن را به داخل فایل “MyLocationViewController.h” ، درگ می کنیم. اشاره گر را بین کلمات کلیدی @interface و @end  ، قرار می دهیم ، یک Prompt ، ظاهر می شود که به ما اجازه می دهد یک outlet اضافه کنیم.

نام outlet را “latitudeLabel”  قرار می دهیم.

 

روند مشابهی را برای برچسب “For Longitude Value” و برچسب “For Address” تکرار می کنیم. در آخر ، یک متد action ، برای کلید “Get My Location” ایجاد کرده و نام آن را “getCurrentLocation” قرار می دهیم. این متد ، وقتی که یک رویداد Touch Up Inside تشخیص داده شود ، فراخوانی می شود.

اگر همه مراحل را به درستی انجام داده باشیم ، فایل MyLocationViewController.h باید شبیه کد زیر باشد:

#import <UIKit/UIKit.h>
 
@interface MyLocationViewController : UIViewController
@property (weak, nonatomic) IBOutlet UILabel *latitudeLabel;
@property (weak, nonatomic) IBOutlet UILabel *longitudeLabel;
@property (weak, nonatomic) IBOutlet UILabel *addressLabel;
- (IBAction)getCurrentLocation:(id)sender;
 
@end

 

افزودن فریم ورک Core Location

برای بازیابی موقعیت فعلی کاربر ، همان طور که قبلاً ذکر شد ، از فریم ورک CoreLocation  که توسط iOS SDK فراهم می شود ، استفاده خواهیم نمود. به طور پیش فرض ، فریم ورک Core Location ، با هیچ پروژه Xcode ی همراه نیست. ما باید آن را به صورت دستی اضافه کنیم. در Project Navigator ، پروژه “MyLocationDemo” را انتخاب می کنیم. در Content Area ، در بخش Targets ، گزینه “MyLocationDemo” را انتخاب کرده و روی “Build Phases” کلیک می کنیم. “Link Binary with Libraries” را بسط داده و روی کلید “+” ، برای افزودن فریم ورک CoreLocation ، کلیک می کنیم.

 

 

بخش کدنویسی

بیایید سراغ بخش اصلی این آموزش برویم. فریم ورک Core Location ، که اضافه کردیم ، به ما اجازه می دهد ، موقعیت فعلی کاربر را در قالب طول و عرض استخراج کنیم. حتی این امکان را نیز خواهد داد که اگر کاربر در حال حرکت باشد ، موقعیت کاربر ، به روز رسانی شود.

همانند سایر کتابخانه های iOS SDK ، کتابخانه Core Location ، از الگوی نمایندگی (delegate pattern) استفاده می کند. برای کار با فریم ورک Core Location ، باید view controller ما از پروتکل CLLocationManagerDelegate پیروی نماید. این پروتکل ، متدهایی را تعریف می کند که برای دریافت موقعیت و مدیریت به روز رسانی ، از یک شیء CLLocationManager استفاده می کند.

برای این که view controller از پروتکل CLLocationManagerDelegate آگاهی یابد ، ما ابتدا فایل header متناظر را import می کنیم. در فایل “MyLocationViewController.h” ، عبارت #import را اضافه کرده و “CLLocationManagerDelegate” را پیاده سازی می کنیم.

#import <CoreLocation/CoreLocation.h>
 
@interface MyLocationViewController : UIViewController <CLLocationManagerDelegate>

اکنون به فایل “MyLocationViewController.m” می رویم. یک متغیر نمونه تعریف کرده و نام آن را locationManager ، قرار می دهیم.

@implementation MyLocationViewController {
    CLLocationManager *locationManager;
}

CLLocationManager ، شئی است که داده های موقعیت را برای ما فراهم می کند.

کد زیر را در متد viewDidLoad  ، برای معرفی شیء CLLocationManager اضافه می کنیم:

- (void)viewDidLoad
{
    [super viewDidLoad];
 // Do any additional setup after loading the view, typically from a nib.
    locationManager = [[CLLocationManager alloc] init];
}

هنگامی که یک شیء CLLocationManager را مقداردهی اولیه می کنیم ، به راحتی می توانیم متد startUpdatingLocation را برای سرویس location فراخوانی کنیم. این سرویس ، سپس به طور مداوم به اپ ما ، جریان داده های موقعیت مکانی را ارسال می کند.

کد زیر را به متد getCurrentLocation اضافه می کنیم ، که به کلید “Get My Location” متصل است.

- (IBAction)getCurrentLocation:(id)sender {
    locationManager.delegate = self;
    locationManager.desiredAccuracy = kCLLocationAccuracyBest;
    
    [locationManager startUpdatingLocation];
}

همان طور که قبلاً گفتیم ، داده های موقعیت مکانی به اپ ما ، از طریق شیء نماینده مرتبط با مدیر Location گزارش می شود. در اینجا ، ما MyLocationViewController را به عنوان شیء نماینده ، اختصاص می دهیم. تمام به روز رسانی های موقعیت مکانی ، به نماینده ، ارسال خواهد شد. برای ضبط رویداد موقعیت ، ما باید متدهای نماینده تعریف شده در پروتکل را پیاده سازی کنیم.

کد زیر را به فایل  MyLocationViewController.m ، اضافه کرده و آنها را درست زیر متد “getCurrentLocation” ، قرار می دهیم.

#pragma mark - CLLocationManagerDelegate
 
- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error
{
    NSLog(@"didFailWithError: %@", error);
    UIAlertView *errorAlert = [[UIAlertView alloc]
                                    initWithTitle:@"Error" message:@"Failed to Get Your Location" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
    [errorAlert show];
}
 
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
{
    NSLog(@"didUpdateToLocation: %@", newLocation);
    CLLocation *currentLocation = newLocation;
    
    if (currentLocation != nil) {
        longitudeLabel.text = [NSString stringWithFormat:@"%.8f", currentLocation.coordinate.longitude];
        latitudeLabel.text = [NSString stringWithFormat:@"%.8f", currentLocation.coordinate.latitude];
    }
}

 

تست اپ با موقعیت مکانی جعلی

اکنون ، می توانیم اپ را کامپایل کرده و با استفاده از شبیه ساز آن را تست نماییم. ممکن است تعجب کنید که چگونه می توانیم از شبیه ساز iPhone ، برای تست موقعیت مکانی ، استفاده نماییم. شبیه ساز چگونه می تواند موقعیت مکان فعلی را بازیابی کند؟

هیچ راهی برای شبیه ساز ، برای دریافت موقعیت مکان فعلی وجود ندارد . زیرا کامپیوتر ما ، دارای GPS داخلی نیست (حتی ، Xcode نیز از آن استفاده نمی کند). با این حال ، شبیه ساز به ما اجازه جعل آن را می دهد.

بعد از این که اپ را راه اندازی کردیم ، روی کلید “Get My Location” کلیک می کنیم . برای اولین بار که برنامه را اجرا می کنیم ، هشدار زیر برای درخواست دسترسی به مدیر location ، مطرح می شود:

به خاطر داشته باشیم که آن را بپذیریم ، در غیر این صورت ، اپ قادر نخواهد بود به سرویس location دسترسی یابد. اوه! اپ ، یک خطا را حتی بعد از قبول هشدار فوق و لمس کلید OK ، نشان می دهد.

 

چرا؟ به طور پیش فرض ، شبیه ساز از موقعیت مکانی خودش با خبر نیست. در نوار منو ، “Debug” > “Location” را انتخاب می کنیم. می بینیم که default location ، به “None” ، تنظیم شده است. به همین دلیل است که با خطای “Fail to Get Your Location” ، مواجه شدیم. اکنون ، موقعیت را به “Apple” (یا “Apple Stores” ) تنظیم می کنیم. اپ ، اکنون باید ، مقادیر طول و عرض جغرافیایی را نشان دهد.

Xcode ، روش دیگری را برای شبیه سازی موقعیت مکانی ، پیشنهاد می دهد. در حالی که اپ در حال اجرا است ، می توانیم با استفاده از کلید اشاره ، other locations را در بالای نوار صفحه debug ، تغییر دهیم.

 

پیدا کردن آدرس

کلاس CLGeocoder  ، سرویس هایی را برای تبدیل نمودن مختصات GPS و آدرس های قابل خواندن به همدیگر را فراهم می کند. با تعیین طول و عرض جغرافیایی یک مکان مشخص ، می توان از CLGeocoder  ، برای پیدا کردن یک آدرس قابل خواندن استفاده نمود. نتیجه (یعنی آدرس) که توسط CLGeocoder  باز گردانده می شود ، در شیء CLPlacemark ذخیره می شود.

به پروژه Xcode خود باز می گردیم. دو متغیر نمونه اضافه می کنیم : geocoder  و placemark.

@implementation MyLocationViewController {
    CLLocationManager *locationManager;
    CLGeocoder *geocoder;
    CLPlacemark *placemark;

متغیر “geocoder” را در متد “viewDidLoad” ، مقداردهی اولیه می کنیم:

- (void)viewDidLoad
{
    [super viewDidLoad];
 // Do any additional setup after loading the view, typically from a nib.
    locationManager = [[CLLocationManager alloc] init];
    geocoder = [[CLGeocoder alloc] init];
}

متد “didUpdateToLocation” ، جهت include کردن کد برای geocoding معکوس به روز رسانی می کنیم.

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
{
    NSLog(@"didUpdateToLocation: %@", newLocation);
    CLLocation *currentLocation = newLocation;
    
    if (currentLocation != nil) {
        longitudeLabel.text = [NSString stringWithFormat:@"%.8f", currentLocation.coordinate.longitude];
        latitudeLabel.text = [NSString stringWithFormat:@"%.8f", currentLocation.coordinate.latitude];
    }
    
    // Reverse Geocoding
    NSLog(@"Resolving the Address");
    [geocoder reverseGeocodeLocation:currentLocation completionHandler:^(NSArray *placemarks, NSError *error) {
        NSLog(@"Found placemarks: %@, error: %@", placemarks, error);
        if (error == nil && [placemarks count] > 0) {
            placemark = [placemarks lastObject];
            addressLabel.text = [NSString stringWithFormat:@"%@ %@\n%@ %@\n%@\n%@",
                                 placemark.subThoroughfare, placemark.thoroughfare,
                                 placemark.postalCode, placemark.locality,
                                 placemark.administrativeArea,
                                 placemark.country];
        } else {
            NSLog(@"%@", error.debugDescription);
        }
    } ];
 
}

 

ما از متد “reverseGeocodeLocation” ، برای ترجمه کردن داده های مکان به یک آدرس قابل خواندن ، استفاده می کنیم. عملیات های geocoding ، بر روی دستگاه اتفاق نمی افتند. در عوض ، این متد ، داده های موردنظر را به سرور geocoding ، در cloud ، جهت یافتن آدرس ارسال می نماید. به غیر از داده های موقعیت مکانی ، باید یک handler نیز فراهم کنیم ، که حاوی کدی است که بعد از پیدا کردن آدرس اجرا می شود. در مثال ما ، کاری که کد قابل اجرا باید انجام دهد ، به روز رسانی بر چسب آدرس ، برای نمایش دادن آدرس روی صفحه می باشد.

syntax مربوط به completionHandler ، ممکن است برای شما تازگی داشته باشد. به جای استفاده از نماینده برای ارائه بازخورد ، CLGeocoder ، از “block” ، برای مدیریت پاسخ استفاده می کند. با استفاده از بلوک ، دیگر نیازی نیست که یک متد جداگانه نوشته شود. فقط کد inline ، پس از تکمیل فراخوانی geocoding ، برای اجرا آماده می شود.

پس از تکمیل یک درخواست geocoding ، هندلر completionHandler ، به طور خودکار فراخوانی می شود. آدرس پیدا شده ، در آرایه CLPlacemark ، ذخیره می شود. داده های Placemark ، شامل اطلاعاتی ، مانند کشور ، ایالت ، شهر و آدرس خیابان است. بنابراین ، ما به سادگی ، شیء CLPlacemark ، را از آرایه بر می داریم و آدرس را در برچسب address ، نشان می دهیم.

کار تمام شد! اپ را دوباره اجرا می کنیم. یک موقعیت مکانی (برای مثال ، Apple) را انتخاب می کنیم. باید آدرس آن را دریافت کنیم:

 

ذخیره سازی توان باتری

اپ ما کار می کند ، اما ، مقدار زیادی از توان باتری را مصرف می کند. چرا؟ آنچه که اپ  انجام می دهد ، این است که مکان فعلی کاربر را بازیابی می کند. این کار نباید توان باتری زیادی را مصرف کند!

بیایید دوباره کد خود را بازبینی کنیم. هنگامی که کاربر به کلید “Get My Location” ضربه می زند ، ما متد “startUpdatingLocation” را برای بازیابی موقعیت کاربر ، فراخوانی خواهیم کرد.

- (IBAction)getCurrentLocation:(id)sender {
    locationManager.delegate = self;
    locationManager.desiredAccuracy = kCLLocationAccuracyBest;
    
    [locationManager startUpdatingLocation];
}

مشکل این است که متد به طور مستمر ، داده های موقعیت مکانی را گزارش خواهد کرد. این کار ادامه دارد و باز ادامه دارد. هر یک ثانیه ، اطلاعات موقیعت مکانی را به روز رسانی می کند ، حتی اگر موقعیت کاربر تغییر نکند. نگاهی به خروجی ناحیه Debug می اندازیم. خروجی باید شبیه کدهای زیر باشد:

2012-09-09 14:32:33.940 MyLocationDemo[13690:c07] didUpdateToLocation: <+37.33240905,-122.03051211> +/- 65.00m (speed -1.00 mps / course -1.00) @ 9/9/12 2:32:33 PM Hong Kong Time
2012-09-09 14:32:33.941 MyLocationDemo[13690:c07] Resolving the Address
2012-09-09 14:32:34.793 MyLocationDemo[13690:c07] didUpdateToLocation: <+37.33240818,-122.03049049> +/- 65.00m (speed -1.00 mps / course -1.00) @ 9/9/12 2:32:34 PM Hong Kong Time
2012-09-09 14:32:34.793 MyLocationDemo[13690:c07] Resolving the Address
2012-09-09 14:32:34.997 MyLocationDemo[13690:c07] Found placemarks: (
    "Apple Inc., Apple Inc., 2 Infinite Loop, Cupertino, CA  95014-2083, United States @ <+37.33270820,-122.03033640> +/- 100.00m, region (identifier <+37.33270823,-122.03021599> radius 58.34) <+37.33270823,-122.03021599> radius 58.34m"
), error: (null)
2012-09-09 14:32:35.792 MyLocationDemo[13690:c07] didUpdateToLocation: <+37.33240773,-122.03047951> +/- 65.00m (speed -1.00 mps / course -1.00) @ 9/9/12 2:32:35 PM Hong Kong Time
2012-09-09 14:32:35.793 MyLocationDemo[13690:c07] Resolving the Address
2012-09-09 14:32:35.973 MyLocationDemo[13690:c07] Found placemarks: (
    "Apple Inc., Apple Inc., 2 Infinite Loop, Cupertino, CA  95014-2083, United States @ <+37.33270820,-122.03033640> +/- 100.00m, region (identifier <+37.33270823,-122.03021599> radius 58.34) <+37.33270823,-122.03021599> radius 58.34m"
), error: (null)

 

همان طور که مشاهده می کنید ، متد “didUpdateToLocation” ، چندین بار فراخوانی شده و همین طور ادامه دارد!

پس چگونه می توانیم به location manager ، بگوییم که به روز رسانی اطلاعات موقعیت مکانی را متوقف نماید؟  می توانیم از متد “stopUpdatingLocation” ، برای غیر فعال کردن به روز رسانی مکان استفاده کنیم. برای این اپ ، ما می توانیم هنگامی که موقعیت مکان فعلی را بازیابی کردیم ، به روز رسانی مکان را متوقف کنیم.

 

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
{
    NSLog(@"didUpdateToLocation: %@", newLocation);
    CLLocation *currentLocation = newLocation;
    
    if (currentLocation != nil) {
        longitudeLabel.text = [NSString stringWithFormat:@"%.8f", currentLocation.coordinate.longitude];
        latitudeLabel.text = [NSString stringWithFormat:@"%.8f", currentLocation.coordinate.latitude];
    }
 
    // Stop Location Manager
    [locationManager stopUpdatingLocation];
 
    NSLog(@"Resolving the Address");
    [geocoder reverseGeocodeLocation:currentLocation completionHandler:^(NSArray *placemarks, NSError *error) {
        NSLog(@"Found placemarks: %@, error: %@", placemarks, error);
        if (error == nil && [placemarks count] > 0) {
            placemark = [placemarks lastObject];
            addressLabel.text = [NSString stringWithFormat:@"%@ %@\n%@ %@\n%@\n%@",
                                 placemark.subThoroughfare, placemark.thoroughfare,
                                 placemark.postalCode, placemark.locality,
                                 placemark.administrativeArea,
                                 placemark.country];
        } else {
            NSLog(@"%@", error.debugDescription);
        }
    } ];
 
}

سعی می کنیم اپ را دوباره اجرا کنیم و پیام خروجی را در ناحیه output ، بررسی نماییم. باید متوجه شویم که متد “didUpdateToLocation” ، یک بار فراخوانی شده و متوقف شده است.

 

موضوع جلسه بعد چیست؟

در این آموزش ، یک demo ساده برای نشان دادن نحوه استفاده از فریم ورک Core Location ، به شما ارائه کردیم. این اپ بسیار ساده است. اگر قصد دارید که یک اپ واقعی ، توسعه دهید ، فراموش نکنید که ، امکان بروز خطاهای مختلف را مدیریت نمایید ، مانند خطاهای مربوط به شبکه.

در جلسه بعد ، ما کار بر روی اپ demo را ادامه خواهیم داد و موقعیت مکانی فعلی را بر روی نقشه ، نشان خواهیم داد.

 

فصلِ: 3 , تعداد قسمت ها: 179 , سطح: صفر تا صد

این فصل در یک نگاه:

در این دوره آموزشی ، برنامه نویسی اندروید و ios را با استفاده از زامارین خواهیم آموخت. همچنین به صورت کاملا پروژه محور ، اپلیکیشن فروشگاهی مشابه دیجی کالا را پیاده سازی خواهیم کرد. در انته…
فصلِ: 5 , تعداد قسمت ها: 221 , سطح: صفر تا صد
موضوعات: آموزش IOS

این فصل در یک نگاه:

در این فصل:-نمایش notification به کاربر زمانی که اتفاقاتی از قبیل لایک کردن پست و ... میافتد(این مبحث مبحثی مهم بوده و ج…

  توضیحات کلی دوره: با سلام خوش اومدین به حرفه ای ترین دوره ی Swift ابتدای کار ممکن است سوالی برای شما پیش آید: -من نیازی به ساخت اپلیکیشن اجتماعی ندارم چرا باید این دوره را ببینم؟ ج…
فصلِ: 7 , تعداد قسمت ها: 159 , سطح: صفر تا صد
موضوعات: آموزش IOS

این فصل در یک نگاه:

اپل نویس حرفه ای شوید... با این پکیج کسب درآمد میلیونی کنید....   در این پکیج به نکات ریز و درشت زیادی پرداختیم که خیلی خیلی میتونه به شما کمک کنه که تبدیل به برنامه نویس حرفه ای شوید... …
فصلِ: 12 , تعداد قسمت ها: 126 , سطح: صفر تا صد
موضوعات: آموزش IOS

این فصل در یک نگاه:

فصل 16 فصل آخرمون هست و میایم توی این فصل یه سری مباحث کوچیکی که جامونده و کارهای نهایی برای انتشار برنامه توی مایکت های…

با سلام نکته:هیچ نیازی به mac و یا iphone نیست... نکته:هیچ نیازی به بلد بودن برنامه نویسی از قبل نیست... مباحثی که توی این دوره مرور میکنیم میتونه ما رو از سطح صفر برنامه نویسی ios به صد …
فصلِ: 6 , تعداد قسمت ها: 194 , سطح: صفر تا صد

این فصل در یک نگاه:

در این فصل آپدیت های مربوط به دوره را قرار میدهیم…

با سلام و خسته نباشد خدمت کلیک سایتی های عزیز در ادامه با توضیحات مختصری درمورد دوره ی react native با ما همراه باشید: React Native چیست؟ قطعا یکی از آرزوهای برنامه نویسان این میباشد که ب…
فصلِ: 5 , تعداد قسمت ها: 51 , سطح: صفر تا صد

این فصل در یک نگاه:

اموزش پرداخت درون برنامه ای بازار در یونیتی-اموزش خرید سکه در بازی-اموزش خرید مصرفی و غیر مصرفی…

توضیحات کلی مجموعه: آموزش مقدماتی تا پیشرفته یونیتی(ساخت بازی توپ چرخنده-اموزش بازی دوبعدی-اموزش بازی سه بعدی اول شخص شوتر-اموزش بازی سه بعدی رالی (ماشین سواری))   سرفصلهای دوره: نصب ی…
فصلِ: 2 , تعداد قسمت ها: 68 , سطح: صفر تا صد

این فصل در یک نگاه:

آموزش ساخت یک فروشگاه کوچک-آموزش کار با bottom navigation -آموزش کار با تب بار-آموزش کار با scrollview - آموزش کار با ان…

توضیحات کلی مجموعه: آموزش دوره فلاتر از پایه تا پیشرفته(این دوره به دوره متخصص فلاتر تغییر پیدا کرد) درسال های گذشته تعدا زیادی فریمورک معرفی شد که هرکدام تجربه خاص خودش رو داشت،اما فلاتر …
فصلِ: 5 , تعداد قسمت ها: 25 , سطح: صفر تا صد

این فصل در یک نگاه:

فصل پنجم…

توضیحات کلی مجموعه: درباره گیت: لذت پیش بردن پروژه های برنامه نویسی خود را با بهترین ورژن کنترل سیستم جهان تجربه کنید کامل ترین دوره ی آموزشی گیت و گیت هاب به همراه مثال های کاربردی گی…

تولید شده توسط کلیک سایت

پشتیبانی آنلاین
آماده پاسخگویی هستیم
انتخاب تصویر جهت ارسال:
در حال ضبط صدا

(جهت توقف و یا لغو ضبط از دکمه های زیر استفاده کنید)

توقف و ارسال :
لغو ضبط
در حال حاضر تمامی کارشناسان آفلاین هستند. همواره می توانید با شماره تلگرام / واتساپ 09010005000 به صورت آنلاین با ما در ارتباط باشید. جهت ورود به واتساپ کلیک کنید
0 پیام جدید
پشتیبان در حال تایپ ...
ارسال تصویر ضبط صدا
0 کارشناسان آنلاین می باشند
این گفت و گو توسط پشتیبان به اتمام رسید