iOS Hızlı Başlangıç Kılavuzu

Bu sayfada açıklanan adımlar, YouTube Data API'ye istekte bulunan basit bir iOS uygulamasını hızlıca nasıl oluşturacağınızı açıklar. Bu örnekte, GoogleDevelopers YouTube kanalıyla ilgili verilerin nasıl alınacağı gösterilmektedir. Kodda, sorguyu mevcut kullanıcının YouTube kanalıyla ilgili verileri alacak şekilde nasıl değiştireceğinizi açıklayan yorumlar da yer alır.

Ön koşullar

Bu hızlı başlangıç kılavuzunu çalıştırmak için ihtiyacınız olanlar:

  • Xcode 8.0 veya sonraki sürümler.
  • CocoaPods bağımlılık yöneticisi.
  • İnternet erişimi ve web tarayıcısı
  • Google Hesabı

1. adım: YouTube Data API'yi etkinleştirin

  1. Google Developers Console'da proje oluşturmak veya seçmek ve API'yi otomatik olarak etkinleştirmek için bu sihirbazı kullanın. Devam'ı, ardından Kimlik bilgilerine git'i tıklayın.

  2. Kimlik bilgisi oluştur sayfasında İptal düğmesini tıklayın.

  3. Sayfanın üst kısmından OAuth izin ekranı sekmesini seçin. Bir e-posta adresi seçin, henüz ayarlanmamışsa ürün adını girin ve Kaydet düğmesini tıklayın.

  4. Kimlik bilgileri sekmesini seçin, Kimlik bilgisi oluştur düğmesini tıklayın ve OAuth istemci kimliği'ni seçin.

  5. Uygulama türü olarak iOS'u seçin, "YouTube Data API Quickstart" adını ve paket kimliğini com.example.QuickstartApp girin, ardından Oluştur düğmesini tıklayın.

2. adım: Çalışma alanını hazırlayın

eşleşecek şekilde değiştirin.
  1. Xcode'u açın ve yeni bir proje oluşturun:
    1. Dosya > Yeni > Proje'yi tıklayın, iOS > Uygulama > Tek Görünüm Uygulaması şablonunu seçin ve İleri'yi tıklayın.
    2. Ürün Adı'nı "QuickstartApp", Kuruluş Tanımlayıcısı'nı "com.example" ve Dil'iObjective-Colarak ayarlayın. Kuruluş tanımlayıcısının altında, 1.b adımında girdiğiniz iOS paket kimliği (com.example.QuickstartApp) ile eşleşen oluşturulmuş bir paket tanımlayıcısı görmeniz gerekir.
    3. İleri'yi tıklayın.
    4. Proje için bir hedef dizin seçin ve Oluştur'u tıklayın.
  2. Dosya > Projeyi Kapat'ı tıklayarak projeyi kapatın.
  3. Bir terminal penceresi açın ve yeni oluşturduğunuz QuickstartApp.xcodeproj dosyasını içeren dizine gidin.
  4. Podfile'ı oluşturmak, kitaplığı yüklemek ve sonuçtaki Xcode projesini açmak için aşağıdaki komutları çalıştırın:

    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 Proje Gezgini'nde "QuickstartApp" proje düğümünü seçin. Ardından File > Add files to "QuickstartApp" (Dosya > "QuickstartApp"e dosya ekle) menü öğesini tıklayın.

  6. Daha önce indirilen GoogleService-Info.plist dosyasını bulup seçin. Seçenekler düğmesini tıklayın.

  7. Seçenekler penceresinde aşağıdaki seçimleri yapın ve Ekle düğmesini tıklayın:

    1. Gerekirse öğeleri kopyala onay kutusunu işaretleyin.
    2. Hedeflere ekle bölümünde listelenen tüm hedefleri kontrol edin.

  8. Proje düğümü hâlâ seçiliyken aşağıdaki iki resimde gösterildiği gibi TARGETS (Hedefler) bölümünde "QuickstartApp"i seçin:

    1. Bu ekran görüntüsünde gösterilen alanı tıklayın:

    2. Ardından uygun hedefi seçin:

  9. Bilgi sekmesini seçin ve URL Türleri bölümünü genişletin.

  10. + düğmesini tıklayın ve tersine çevrilmiş müşteri kimliğiniz için bir URL şeması ekleyin. Bu değeri bulmak için 2.f adımında seçtiğiniz GoogleService-Info.plist yapılandırma dosyasını açın. REVERSED_CLIENT_ID anahtarını bulun. Bu anahtarın değerini kopyalayın ve yapılandırma sayfasındaki URL Şemaları kutusuna yapıştırın. Diğer alanları boş bırakın.

  11. Projeyi yeniden oluşturun:

    1. Product > Clean Build Folder'ı (option tuşunu basılı tutarken) tıklayın.
    2. Ürün > Oluştur'u tıklayın.

3. adım: Örnek oluşturun

Aşağıdaki dosyaların içeriğini, sağlanan kodla değiştirin:

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. adım: Örneği çalıştırın

Product > Scheme > QuickstartApp'i tıklayarak QuickstartApp şemasına geçin ve cihaz simülatörünü ya da yapılandırılmış bir cihazı kullanarak örneği çalıştırın (Cmd+R). Örneği ilk kez çalıştırdığınızda Google Hesabınıza giriş yapmanız ve erişimi yetkilendirmeniz istenir.

Notlar

  • Yetkilendirme bilgileri anahtar zincirinizde saklandığından sonraki yürütmelerde yetkilendirme istenmez.

Daha fazla bilgi