مراحل توضیح داده شده در این صفحه نحوه ایجاد سریع یک برنامه iOS ساده را توضیح می دهد که درخواست هایی را به YouTube Data API ارسال می کند. این نمونه نحوه بازیابی اطلاعات مربوط به کانال YouTube GoogleDevelopers را نشان می دهد. این کد همچنین شامل نظراتی است که نحوه تغییر پرس و جو را برای بازیابی اطلاعات مربوط به کانال یوتیوب کاربر فعلی توضیح می دهد.
پیش نیازها
برای اجرای این شروع سریع، به موارد زیر نیاز دارید:
مرحله 1: YouTube Data API را روشن کنید
از این جادوگر برای ایجاد یا انتخاب یک پروژه در Google Developers Console استفاده کنید و به طور خودکار API را روشن کنید. روی Continue کلیک کنید، سپس به اعتبارنامه بروید .
در صفحه Create credentials ، روی دکمه Cancel کلیک کنید.
در بالای صفحه، برگه صفحه رضایت OAuth را انتخاب کنید. یک آدرس ایمیل را انتخاب کنید، نام محصول را در صورتی که قبلا تنظیم نشده است وارد کنید و روی دکمه ذخیره کلیک کنید.
تب Credentials را انتخاب کنید، روی دکمه Create credentials کلیک کنید و OAuth Client ID را انتخاب کنید.
- نوع برنامه iOS را انتخاب کنید، نام «YouTube Data API Quickstart»، ID bundle
com.example.QuickstartApp
را وارد کنید و روی دکمه ایجاد کلیک کنید.
مرحله 2: فضای کاری را آماده کنید
- Xcode را باز کنید و یک پروژه جدید ایجاد کنید:
- روی File > New > Project کلیک کنید، iOS > Application > Single View Application template را انتخاب کنید و روی Next کلیک کنید.
- نام محصول را روی «QuickstartApp»، شناسه سازمان را روی «com.example» و زبان را رویهدف-C. در زیر شناسه سازمان، باید یک Bundle Identifier ایجاد شده را ببینید که با ID Bundle iOS (
com.example.QuickstartApp
) که در مرحله 1.b وارد کردید مطابقت دارد. - روی Next کلیک کنید.
- یک فهرست مقصد برای پروژه انتخاب کنید و روی ایجاد کلیک کنید.
- پروژه را با کلیک کردن روی File > Close Project ببندید.
- یک پنجره ترمینال را باز کنید و به دایرکتوری که حاوی فایل
QuickstartApp.xcodeproj
است بروید. دستورات زیر را برای ایجاد Podfile اجرا کنید، کتابخانه را نصب کنید و پروژه XCode حاصل را باز کنید:
cat << EOF > Podfile && platform :ios, '8.0' target 'QuickstartApp' do pod 'GoogleAPIClientForREST/YouTube', '~> 1.2.1' pod 'Google/SignIn', '~> 3.0.3' end EOF pod install && open QuickstartApp.xcworkspace
در XCode Project Navigator گره پروژه "QuickstartApp" را انتخاب کنید. سپس روی آیتم منو File > Add files to "QuickstartApp" کلیک کنید.
فایل
GoogleService-Info.plist
را که قبلا دانلود شده است پیدا کنید و آن را انتخاب کنید. روی دکمه Options کلیک کنید.انتخاب های زیر را در پنجره گزینه ها انجام دهید و سپس روی دکمه افزودن کلیک کنید:
- چک باکس کپی موارد در صورت نیاز را علامت بزنید.
- تمام اهداف فهرست شده در بخش افزودن به اهداف را بررسی کنید.
در حالی که گره پروژه هنوز انتخاب شده است، همانطور که در دو تصویر زیر نشان داده شده است، "QuickstartApp" را در بخش TARGETS انتخاب کنید:
روی ناحیه نشان داده شده در این اسکرین شات کلیک کنید:
سپس هدف مناسب را انتخاب کنید:
برگه Info را انتخاب کنید و بخش URL Types را باز کنید.
روی دکمه + کلیک کنید و یک طرح URL برای شناسه مشتری معکوس خود اضافه کنید. برای یافتن این مقدار، فایل پیکربندی
GoogleService-Info.plist
را که در مرحله 2.f انتخاب کردید، باز کنید. به دنبال کلید REVERSED_CLIENT_ID باشید. مقدار آن کلید را کپی کنید و آن را در کادر URL Schemes در صفحه پیکربندی قرار دهید. فیلدهای دیگر را خالی بگذارید.بازسازی پروژه:
- روی Product > Clean Build Folder (در حالی که کلید گزینه را نگه داشته اید) کلیک کنید.
- روی محصول > ساخت کلیک کنید.
مرحله 3: نمونه را تنظیم کنید
محتوای فایل های زیر را با کد ارائه شده جایگزین کنید:#import <UIKit/UIKit.h> @import GoogleSignIn; @interface AppDelegate : UIResponder <UIApplicationDelegate> @property (strong, nonatomic) UIWindow *window; @end
#import "AppDelegate.h" @implementation AppDelegate - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Initialize Google sign-in. [GIDSignIn sharedInstance].clientID = @"<YOUR_CLIENT_ID>"; return YES; } - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { return [[GIDSignIn sharedInstance] handleURL:url sourceApplication:sourceApplication annotation:annotation]; } @end
#import <UIKit/UIKit.h> @import GoogleSignIn; #import <GTLRYouTube.h> @interface ViewController : UIViewController <GIDSignInDelegate, GIDSignInUIDelegate> @property (nonatomic, strong) IBOutlet GIDSignInButton *signInButton; @property (nonatomic, strong) UITextView *output; @property (nonatomic, strong) GTLRYouTubeService *service; @end
#import "ViewController.h" @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; // Configure Google Sign-in. GIDSignIn* signIn = [GIDSignIn sharedInstance]; signIn.delegate = self; signIn.uiDelegate = self; signIn.scopes = [NSArray arrayWithObjects:kGTLRAuthScopeYouTubeReadonly, nil]; [signIn signInSilently]; // Add the sign-in button. self.signInButton = [[GIDSignInButton alloc] init]; [self.view addSubview:self.signInButton]; // Create a UITextView to display output. self.output = [[UITextView alloc] initWithFrame:self.view.bounds]; self.output.editable = false; self.output.contentInset = UIEdgeInsetsMake(20.0, 0.0, 20.0, 0.0); self.output.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth; self.output.hidden = true; [self.view addSubview:self.output]; // Initialize the service object. self.service = [[GTLRYouTubeService alloc] init]; } - (void)signIn:(GIDSignIn *)signIn didSignInForUser:(GIDGoogleUser *)user withError:(NSError *)error { if (error != nil) { [self showAlert:@"Authentication Error" message:error.localizedDescription]; self.service.authorizer = nil; } else { self.signInButton.hidden = true; self.output.hidden = false; self.service.authorizer = user.authentication.fetcherAuthorizer; [self fetchChannelResource]; } } // Construct a query and retrieve the channel resource for the GoogleDevelopers // YouTube channel. Display the channel title, description, and view count. - (void)fetchChannelResource { GTLRYouTubeQuery_ChannelsList *query = [GTLRYouTubeQuery_ChannelsList queryWithPart:@"snippet,statistics"]; query.identifier = @"UC_x5XG1OV2P6uZZ5FSM9Ttw"; // To retrieve data for the current user's channel, comment out the previous // line (query.identifier ...) and uncomment the next line (query.mine ...). // query.mine = true; [self.service executeQuery:query delegate:self didFinishSelector:@selector(displayResultWithTicket:finishedWithObject:error:)]; } // Process the response and display output - (void)displayResultWithTicket:(GTLRServiceTicket *)ticket finishedWithObject:(GTLRYouTube_ChannelListResponse *)channels error:(NSError *)error { if (error == nil) { NSMutableString *output = [[NSMutableString alloc] init]; if (channels.items.count > 0) { [output appendString:@"Channel information:\n"]; for (GTLRYouTube_Channel *channel in channels) { NSString *title = channel.snippet.title; NSString *description = channel.snippet.description; NSNumber *viewCount = channel.statistics.viewCount; [output appendFormat:@"Title: %@\nDescription: %@\nViewCount: %@\n", title, description, viewCount]; } } else { [output appendString:@"Channel not found."]; } self.output.text = output; } else { [self showAlert:@"Error" message:error.localizedDescription]; } } // Helper for showing an alert - (void)showAlert:(NSString *)title message:(NSString *)message { UIAlertController *alert = [UIAlertController alertControllerWithTitle:title message:message preferredStyle:UIAlertControllerStyleAlert]; UIAlertAction *ok = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { [alert dismissViewControllerAnimated:YES completion:nil]; }]; [alert addAction:ok]; [self presentViewController:alert animated:YES completion:nil]; } @end
مرحله 4: نمونه را اجرا کنید
با کلیک روی Product > Scheme > QuickstartApp به طرح QuickstartApp بروید و نمونه (Cmd+R) را با استفاده از شبیه ساز دستگاه یا یک دستگاه پیکربندی شده اجرا کنید. اولین باری که نمونه را اجرا می کنید، از شما می خواهد که به حساب Google خود وارد شوید و اجازه دسترسی را بدهید.
یادداشت ها
- اطلاعات مجوز در Keychain شما ذخیره می شود، بنابراین اجرای بعدی درخواست مجوز نمی کند.