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

Bu sayfada açıklanan adımlarda, YouTube Data API'ye istekte bulunan basit bir iOS uygulamasının nasıl hızlıca oluşturulacağı açıklanmaktadır. Bu örnekte, GoogleDevelopers YouTube kanalıyla ilgili verilerin nasıl alındığı gösterilmektedir. Kod, mevcut kullanıcının YouTube kanalıyla ilgili verileri almak için sorgunun nasıl değiştirileceğini de açıklayan yorumları içerir.

Ön koşullar

Bu hızlı başlangıç kılavuzunu çalıştırmak için aşağıdakilere ihtiyacınız vardır:

  • Xcode 8.0 veya sonraki sürümler.
  • CocoaPods bağımlı yöneticisi.
  • İnternete ve web tarayıcısına erişim.
  • 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, ayarlanmamışsa Ürün adı 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. iOS uygulama türünü seçin, "YouTube Data API Quickstart" adını girin, com.example.QuickstartApp paket kimliği yazın ve Oluştur düğmesini tıklayın.

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

  1. Xcode'u açın ve yeni bir proje oluşturun:
    1. Dosya > Yeni > Proje'yi tıklayın, iOS > Uygulama > Tek Görüntüleme Uygulamasını seçin ve İleri'yi tıklayın.
    2. Ürün Adı'nı "QuickstartApp", Kuruluş Tanımlayıcısı'nı "com.example" ve Dil'i Nesne-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öreceksiniz.
    3. İleri'yi tıklayın.
    4. Proje için bir hedef dizin seçin ve Create'i (Oluştur) tıklayın.
  2. Dosya > Projeyi Kapat'ı tıklayarak projeyi kapatın.
  3. Bir Terminal penceresi açın ve az önce oluşturduğunuz QuickstartApp.xcodeproj dosyasını içeren dizine gidin.
  4. Podfile dosyası oluşturmak, kitaplığı yüklemek ve sonuç olarak ortaya çıkan 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 Project Navigator'da "QuickstartApp" proje düğümünü seçin. Ardından, Dosya > "QuickstartApp"e dosya ekle menü öğesini tıklayın.

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

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

    1. Gerekirse öğeleri kopyalayın 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 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 ters istemci kimliğiniz için bir URL düzeni ekleyin. Bu değeri bulmak için 2.f. adımda seçtiğiniz GoogleService-Info.plist yapılandırma dosyasını açın. REVERSED_CLIENT_ID anahtarını arayın. Bu anahtarın değerini kopyalayıp yapılandırma sayfasındaki URL Şemaları kutusuna yapıştırın. Diğer alanları boş bırakın.

  11. Projeyi yeniden oluşturma:

    1. Ürün > Derleme Klasörü Temizle'yi tıklayın (option tuşunu basılı tutarken).
    2. Ürün > Derleme'yi tıklayın.

3. Adım: Örneği oluşturun

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

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

@interface AppDelegate : UIResponder <UIApplicationDelegate>

@property (strong, nonatomic) UIWindow *window;


@end
AppTemsilci.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

Ürün > Şema > Hızlı Başlangıç Uygulaması'nı tıklayarak QuickstartApp şemasına geçin ve cihaz simülatörünü veya yapılandırılmış bir cihazı kullanarak örneği (Cmd+R) çalıştırın. Örneği ilk kez çalıştırdığınızda Google hesabınıza giriş yapmanız ve erişimi yetkilendirmeniz istenir.

Notlar

  • Yetkilendirme bilgileri Keychain'inizde depolanır. Bu nedenle, sonraki yürütme işlemleri için yetkilendirme istenmez.

Daha fazla bilgi