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
-
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.
-
Kimlik bilgisi oluştur sayfasında İptal düğmesini tıklayın.
-
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.
-
Kimlik bilgileri sekmesini seçin, Kimlik bilgisi oluştur düğmesini tıklayın ve OAuth istemci kimliği'ni seçin.
- 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
- Xcode'u açın ve yeni bir proje oluşturun:
- Dosya > Yeni > Proje'yi tıklayın, iOS > Uygulama > Tek Görüntüleme Uygulamasını seçin ve İleri'yi tıklayın.
- Ü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. - İleri'yi tıklayın.
- Proje için bir hedef dizin seçin ve Create'i (Oluştur) tıklayın.
- Dosya > Projeyi Kapat'ı tıklayarak projeyi kapatın.
- Bir Terminal penceresi açın ve az önce oluşturduğunuz
QuickstartApp.xcodeproj
dosyasını içeren dizine gidin. 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
XCode Project Navigator'da "QuickstartApp" proje düğümünü seçin. Ardından, Dosya > "QuickstartApp"e dosya ekle menü öğesini tıklayın.
Daha önce indirilen
GoogleService-Info.plist
dosyasını bulun ve seçin. Seçenekler düğmesini tıklayın.Seçenekler penceresinde aşağıdaki seçimleri yapın ve ardından Ekle düğmesini tıklayın:
- Gerekirse öğeleri kopyalayın onay kutusunu işaretleyin.
- Hedeflere ekle bölümünde listelenen tüm hedefleri kontrol edin.
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:
Bu ekran görüntüsünde gösterilen alanı tıklayın:
Ardından uygun hedefi seçin:
Bilgi sekmesini seçin ve URL Türleri bölümünü genişletin.
+ 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.Projeyi yeniden oluşturma:
- Ürün > Derleme Klasörü Temizle'yi tıklayın (option tuşunu basılı tutarken).
- Ü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:#import <UIKit/UIKit.h> @import GoogleSignIn; @interface AppDelegate : UIResponder <UIApplicationDelegate> @property (strong, nonatomic) UIWindow *window; @end
#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
#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
#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.