مراحل شرح داده شده در این صفحه، نحوه ایجاد سریع یک برنامه ساده iOS را که درخواستهایی را به YouTube Data API ارسال میکند، توضیح میدهد. این نمونه نحوه بازیابی اطلاعات مربوط به کانال YouTube GoogleDevelopers را نشان میدهد. این کد همچنین شامل نظراتی است که نحوه اصلاح پرس و جو برای بازیابی اطلاعات مربوط به کانال YouTube کاربر فعلی را توضیح میدهد.
پیشنیازها
برای اجرای این شروع سریع، به موارد زیر نیاز دارید:
- Xcode نسخه ۸.۰ یا بالاتر.
- مدیر وابستگی CocoaPods .
- دسترسی به اینترنت و مرورگر وب.
- یک حساب گوگل.
مرحله ۱: فعال کردن API داده یوتیوب
از این ویزارد برای ایجاد یا انتخاب یک پروژه در کنسول توسعهدهندگان گوگل و فعال کردن خودکار API استفاده کنید. روی ادامه کلیک کنید، سپس به اعتبارنامهها بروید .
در صفحه ایجاد اعتبارنامه ، روی دکمه لغو کلیک کنید.
در بالای صفحه، برگهی «رضایت OAuth» را انتخاب کنید. یک آدرس ایمیل انتخاب کنید، اگر نام محصول از قبل تعیین نشده است، آن را وارد کنید و روی دکمهی «ذخیره» کلیک کنید.
برگه اعتبارنامهها را انتخاب کنید، روی دکمه ایجاد اعتبارنامهها کلیک کنید و شناسه کلاینت OAuth را انتخاب کنید.
- نوع برنامه را iOS انتخاب کنید، نام "YouTube Data API Quickstart" و شناسه بسته
com.example.QuickstartAppرا وارد کنید و روی دکمه Create کلیک کنید.
مرحله 2: آماده سازی فضای کاری
- Xcode را باز کنید و یک پروژه جدید ایجاد کنید:
- روی فایل > جدید > پروژه کلیک کنید، الگوی iOS > برنامه > برنامه تک نمایی را انتخاب کنید و روی بعدی کلیک کنید.
- نام محصول را روی «QuickstartApp»، شناسه سازمان را روی «com.example» و زبان را رویهدف-سیدر زیر شناسه سازمان، باید یک شناسه بسته تولید شده را ببینید که با شناسه بسته iOS (
com.example.QuickstartApp) که در مرحله 1.b وارد کردهاید، مطابقت دارد. - روی بعدی کلیک کنید.
- یک دایرکتوری مقصد برای پروژه انتخاب کنید و روی Create کلیک کنید.
- با کلیک روی 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 کلیک کنید.
در پنجره تنظیمات، موارد زیر را انتخاب کنید و سپس روی دکمه افزودن کلیک کنید:
- کادر انتخاب « در صورت نیاز، موارد را کپی کنید» را علامت بزنید.
- تمام اهداف ذکر شده در بخش افزودن به اهداف را بررسی کنید.

در حالی که گره پروژه هنوز انتخاب شده است، همانطور که در دو تصویر زیر نشان داده شده است، در بخش TARGETS گزینه "QuickstartApp" را انتخاب کنید:
روی قسمتی که در این تصویر نشان داده شده است کلیک کنید:

سپس هدف مناسب را انتخاب کنید:

برگه اطلاعات (Info) را انتخاب کنید و بخش انواع URL را گسترش دهید.
روی دکمه + کلیک کنید و یک طرح URL برای شناسه کلاینت معکوس خود اضافه کنید. برای یافتن این مقدار، فایل پیکربندی
GoogleService-Info.plistرا که در مرحله 2.f انتخاب کردهاید، باز کنید. به دنبال کلید REVERSED_CLIENT_ID بگردید. مقدار آن کلید را کپی کرده و در کادر طرحهای URL در صفحه پیکربندی جایگذاری کنید. سایر فیلدها را خالی بگذارید.بازسازی پروژه:
- روی Product > Clean Build Folder کلیک کنید (در حالی که کلید option را نگه داشتهاید).
- روی محصول > ساخت کلیک کنید.
مرحله ۳: نمونه را تنظیم کنید
محتویات فایلهای زیر را با کد ارائه شده جایگزین کنید:#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
مرحله ۴: اجرای نمونه
با کلیک روی Product > Scheme > QuickstartApp به طرح QuickstartApp بروید و نمونه (Cmd+R) را با استفاده از شبیهساز دستگاه یا یک دستگاه پیکربندیشده اجرا کنید. اولین باری که نمونه را اجرا میکنید، از شما خواسته میشود که به حساب گوگل خود وارد شوید و دسترسی را تأیید کنید.
یادداشتها
- اطلاعات مجوز در Keychain شما ذخیره میشود، بنابراین اجراهای بعدی نیازی به مجوز نخواهند داشت.