شروع سریع iOS

مراحل توضیح‌داده‌شده در این صفحه نحوه ایجاد سریع یک برنامه ساده iOS را که درخواست‌هایی به YouTube Data API ارسال می‌کند، توضیح می‌دهد. این نمونه نشان می‌دهد که چگونه می‌توان داده‌های مربوط به کانال YouTube GoogleDevelopers را بازیابی کرد. این کد همچنین شامل نظراتی است که نحوه اصلاح پرسمان را برای بازیابی داده‌های مربوط به کانال YouTube کاربر فعلی توضیح می‌دهد.

پیش‌نیازها

برای اجرای این شروع سریع، به موارد زیر نیاز دارید:

  • Xcode نسخه ۸.۰ یا بالاتر.
  • مدیر وابستگی CocoaPods.
  • دسترسی به اینترنت و مرورگر وب.
  • «حساب Google».

مرحله ۱: روشن کردن YouTube Data API

  1. از این دستیار برای ایجاد یا انتخاب پروژه در «کنسول Google Developers» و فعال کردن خودکار API استفاده کنید. روی ادامه دادن و سپس رفتن به اطلاعات اعتباری کلیک کنید.

  2. در صفحه ایجاد اطلاعات کاربری، روی دکمه لغو کلیک کنید.

  3. در بالای صفحه، برگه صفحه کسب رضایت OAuth را انتخاب کنید. نشانی ایمیل را انتخاب کنید، اگر نام محصول ازقبل تنظیم نشده است، آن را وارد کنید و روی دکمه ذخیره کلیک کنید.

  4. برگه اعتبارنامه‌ها را انتخاب کنید، روی دکمه ایجاد اعتبارنامه‌ها کلیک کنید و شناسه کارخواه OAuth را انتخاب کنید.

  5. نوع برنامه iOS را انتخاب کنید، نام «YouTube Data API Quickstart» و شناسه دسته نرم‌افزاری com.example.QuickstartApp را وارد کنید، و روی دکمه ایجاد کلیک کنید.

مرحله ۲: آماده کردن فضای کاری

  1. Xcode را باز کنید و پروژه جدیدی ایجاد کنید:
    1. روی File (فایل) > New (جدید) > Project (پروژه) کلیک کنید، الگوی iOS > Application (برنامه) > Single View Application (برنامه تک‌نمایی) را انتخاب کنید، و روی Next (بعدی) کلیک کنید.
    2. نام محصول را روی «QuickstartApp»، شناسه سازمان را روی «com.example»، و زبان را روی Objective-Cتنظیم کنید. در زیر شناسه سازمان، باید یک شناسه بسته تولیدشده را ببینید که با شناسه بسته iOS (com.example.QuickstartApp) که در مرحله ۱.ب وارد کرده‌اید مطابقت دارد.
    3. روی بعدی کلیک کنید.
    4. فهرست راهنمای مقصد را برای پروژه انتخاب کنید و روی ایجاد کلیک کنید.
  2. با کلیک کردن روی فایل > بستن پروژه، پروژه را ببندید.
  3. پنجره «ترمینال» را باز کنید و به دایرکتوری حاوی فایل QuickstartApp.xcodeproj که به‌تازگی ایجاد کرده‌اید بروید.
  4. فرمان‌های زیر را اجرا کنید تا 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
    
  5. در XCode Project Navigator، گره پروژه «QuickstartApp» را انتخاب کنید. سپس روی گزینه منو File > Add files to "QuickstartApp" (فایل > افزودن فایل‌ها به «QuickstartApp») کلیک کنید.

  6. فایل GoogleService-Info.plist را که قبلاً بارگیری کرده‌اید پیدا و انتخاب کنید. روی دکمه گزینه‌ها کلیک کنید.

  7. در پنجره گزینه‌ها، انتخاب‌های زیر را انجام دهید و سپس روی دکمه افزودن کلیک کنید:

    1. چارگوش انتخاب کپی کردن موارد درصورت نیاز را علامت بزنید.
    2. همه هدف‌های فهرست‌شده در بخش افزودن به هدف‌ها را علامت بزنید.

  8. درحالی‌که گره پروژه همچنان انتخاب شده است، «QuickstartApp» را در بخش TARGETS انتخاب کنید، همان‌طور که در دو تصویر زیر نشان داده شده است:

    1. روی ناحیه نشان‌داده‌شده در این نماگرفت کلیک کنید:

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

  9. برگه اطلاعات را انتخاب کنید و بخش انواع نشانی وب را ازهم باز کنید.

  10. روی دکمه + کلیک کنید و طرح‌واره نشانی وب را برای شناسه مشتری معکوس‌شده خود اضافه کنید. برای پیدا کردن این مقدار، فایل پیکربندی GoogleService-Info.plist را که در مرحله ۲.و انتخاب کرده‌اید باز کنید. کلید REVERSED_CLIENT_ID را پیدا کنید. مقدار آن کلید را کپی کنید و آن را در چارگوش طرح‌های نشانی وب در صفحه پیکربندی جای‌گذاری کنید. بقیه فیلدها را خالی بگذارید.

  11. پروژه را بازسازی کنید:

    1. روی محصول > پاک کردن پوشه ساخت (ضمن نگه داشتن کلید گزینه کلیک کنید).
    2. روی محصول > ساخت کلیک کنید.

مرحله ۳: راه‌اندازی نمونه

محتوای فایل‌های زیر را با کد ارائه‌شده جایگزین کنید:

AppDelegate.h
#import <UIKit/UIKit.h>
@import GoogleSignIn;

@interface AppDelegate : UIResponder <UIApplicationDelegate>

@property (strong, nonatomic) UIWindow *window;


@end
AppDelegate.m
#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
ViewController.h
#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
ViewController.m
#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

مرحله ۴: اجرای نمونه

با کلیک کردن روی محصول > طرح > QuickstartApp به طرح QuickstartApp بروید و نمونه را بااستفاده از شبیه‌ساز دستگاه یا دستگاه پیکربندی‌شده اجرا کنید (Cmd+R). اولین باری که نمونه را اجرا می‌کنید، از شما خواسته می‌شود به سیستم حساب Google خود وارد شوید و دسترسی را مجاز کنید.

یادداشت‌ها

  • اطلاعات مجوز در «دسته کلید» شما ذخیره می‌شود، بنابراین اجراهای بعدی از شما درخواست مجوز نخواهد کرد.

مطالعه بیشتر