شروع سریع iOS

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

پیش نیازها

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

  • Xcode 8.0 یا بالاتر.
  • مدیر وابستگی CocoaPods .
  • دسترسی به اینترنت و مرورگر وب.
  • یک اکانت گوگل

مرحله 1: YouTube Data API را روشن کنید

  1. از این جادوگر برای ایجاد یا انتخاب یک پروژه در Google Developers Console استفاده کنید و به طور خودکار API را روشن کنید. روی Continue کلیک کنید، سپس به اعتبارنامه بروید .

  2. در صفحه Create credentials ، روی دکمه Cancel کلیک کنید.

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

  4. تب Credentials را انتخاب کنید، روی دکمه Create credentials کلیک کنید و OAuth Client ID را انتخاب کنید.

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

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

  1. Xcode را باز کنید و یک پروژه جدید ایجاد کنید:
    1. روی File > New > Project کلیک کنید، iOS > Application > Single View Application template را انتخاب کنید و روی Next کلیک کنید.
    2. نام محصول را روی «QuickstartApp»، شناسه سازمان را روی «com.example» و زبان را رویهدف-C. در زیر شناسه سازمان، باید یک Bundle Identifier ایجاد شده را ببینید که با ID Bundle iOS ( com.example.QuickstartApp ) که در مرحله 1.b وارد کردید مطابقت دارد.
    3. روی Next کلیک کنید.
    4. یک فهرست مقصد برای پروژه انتخاب کنید و روی ایجاد کلیک کنید.
  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. در حالی که گره پروژه هنوز انتخاب شده است، همانطور که در دو تصویر زیر نشان داده شده است، "QuickstartApp" را در بخش TARGETS انتخاب کنید:

    1. روی ناحیه نشان داده شده در این اسکرین شات کلیک کنید:

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

  9. برگه Info را انتخاب کنید و بخش URL Types را باز کنید.

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

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

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

مرحله 3: نمونه را تنظیم کنید

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

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

مرحله 4: نمونه را اجرا کنید

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

یادداشت ها

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

در ادامه مطلب