شروع سریع iOS

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

پیش‌نیازها

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

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

مرحله ۱: فعال کردن API داده یوتیوب

  1. از این ویزارد برای ایجاد یا انتخاب یک پروژه در کنسول توسعه‌دهندگان گوگل و فعال کردن خودکار API استفاده کنید. روی ادامه کلیک کنید، سپس به اعتبارنامه‌ها بروید .

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

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

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

  5. نوع برنامه را iOS انتخاب کنید، نام "YouTube Data API Quickstart" و شناسه بسته com.example.QuickstartApp را وارد کنید و روی دکمه Create کلیک کنید.

مرحله 2: آماده سازی فضای کاری

  1. Xcode را باز کنید و یک پروژه جدید ایجاد کنید:
    1. روی فایل > جدید > پروژه کلیک کنید، الگوی iOS > برنامه > برنامه تک نمایی را انتخاب کنید و روی بعدی کلیک کنید.
    2. نام محصول را روی «QuickstartApp»، شناسه سازمان را روی «com.example» و زبان را رویهدف-سیدر زیر شناسه سازمان، باید یک شناسه بسته تولید شده را ببینید که با شناسه بسته iOS ( com.example.QuickstartApp ) که در مرحله 1.b وارد کرده‌اید، مطابقت دارد.
    3. روی بعدی کلیک کنید.
    4. یک دایرکتوری مقصد برای پروژه انتخاب کنید و روی Create کلیک کنید.
  2. با کلیک روی File > Close Project، پروژه را ببندید.
  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" کلیک کنید.

  6. فایل GoogleService-Info.plist که قبلاً دانلود شده است را پیدا کرده و آن را انتخاب کنید. روی دکمه Options کلیک کنید.

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

    1. کادر انتخاب « در صورت نیاز، موارد را کپی کنید» را علامت بزنید.
    2. تمام اهداف ذکر شده در بخش افزودن به اهداف را بررسی کنید.

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

    1. روی قسمتی که در این تصویر نشان داده شده است کلیک کنید:

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

  9. برگه اطلاعات (Info) را انتخاب کنید و بخش انواع URL را گسترش دهید.

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

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

    1. روی Product > Clean Build Folder کلیک کنید (در حالی که کلید option را نگه داشته‌اید).
    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

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

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

یادداشت‌ها

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

مطالعه بیشتر