iOS-Kurzanleitung

In den Schritten auf dieser Seite wird beschrieben, wie Sie schnell eine einfache iOS-Anwendung erstellen, die Anfragen an die YouTube Data API sendet. In diesem Beispiel wird gezeigt, wie Sie Daten zum YouTube-Kanal GoogleDevelopers abrufen. Der Code enthält auch Kommentare, in denen erklärt wird, wie Sie die Abfrage ändern, um Daten zum YouTube-Kanal des aktuellen Nutzers abzurufen.

Vorbereitung

Für diese Kurzanleitung benötigen Sie Folgendes:

  • Xcode 8.0 oder höher.
  • CocoaPods-Abhängigkeitsmanager.
  • Internetzugang und einen Webbrowser.
  • Ein Google-Konto.

Schritt 1: YouTube Data API aktivieren

  1. Mit diesem Assistenten können Sie ein Projekt in der Google Developers Console erstellen oder auswählen und die API automatisch aktivieren. Klicken Sie auf Weiter und dann auf Zu den Anmeldedaten.

  2. Klicken Sie auf der Seite Anmeldedaten erstellen auf die Schaltfläche Abbrechen.

  3. Klicken Sie oben auf der Seite auf den Tab OAuth-Zustimmungsbildschirm. Wählen Sie eine E‑Mail-Adresse aus, geben Sie einen Produktnamen ein, falls noch nicht festgelegt, und klicken Sie auf die Schaltfläche Speichern.

  4. Wählen Sie den Tab Anmeldedaten aus, klicken Sie auf die Schaltfläche Anmeldedaten erstellen und wählen Sie OAuth-Client-ID aus.

  5. Wählen Sie den Anwendungstyp iOS aus, geben Sie den Namen „YouTube Data API Quickstart“ und die Paket-ID com.example.QuickstartApp ein und klicken Sie auf die Schaltfläche Create.

Schritt 2: Arbeitsbereich vorbereiten

  1. Öffnen Sie Xcode und erstellen Sie ein neues Projekt:
    1. Klicken Sie auf Datei > Neu > Projekt , wählen Sie die Vorlage iOS > Anwendung > Single View Application aus und klicken Sie auf Weiter.
    2. Legen Sie den Produktnamen auf "QuickstartApp", die Organisations-ID auf "com.example" und die Sprache auf Objective-C. Unter der Organisations-ID sollte eine generierte Bundle-ID angezeigt werden, die mit der iOS-Bundle-ID (com.example.QuickstartApp) übereinstimmt, die Sie in Schritt 1.b eingegeben haben.
    3. Klicken Sie auf Weiter.
    4. Wählen Sie ein Zielverzeichnis für das Projekt aus und klicken Sie auf Erstellen.
  2. Schließen Sie das Projekt, indem Sie auf Datei > Projekt schließen klicken.
  3. Öffnen Sie ein Terminalfenster und wechseln Sie zu dem Verzeichnis, das die gerade erstellte Datei QuickstartApp.xcodeproj enthält.
  4. Führen Sie die folgenden Befehle aus, um die Podfile-Datei zu erstellen, die Bibliothek zu installieren und das resultierende XCode-Projekt zu öffnen:

    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. Wählen Sie im XCode-Projektnavigator den Projektknoten „QuickstartApp“ aus. Klicken Sie dann auf das Menüelement Datei > Dateien zu „QuickstartApp“ hinzufügen.

  6. Suchen Sie die zuvor heruntergeladene Datei GoogleService-Info.plist und wählen Sie sie aus. Klicken Sie auf die Schaltfläche Optionen.

  7. Treffen Sie im Fenster „Optionen“ die folgenden Auswahlen und klicken Sie dann auf die Schaltfläche Hinzufügen:

    1. Klicken Sie das Kästchen Elemente bei Bedarf kopieren an.
    2. Klicken Sie alle Ziele an, die im Bereich Zu Zielen hinzufügen aufgeführt sind.

  8. Wählen Sie den Projektknoten aus und wählen Sie im Bereich ZIELE „QuickstartApp“ aus, wie in den beiden folgenden Bildern gezeigt:

    1. Klicken Sie auf den Bereich, der in diesem Screenshot gezeigt wird:

    2. Wählen Sie dann das richtige Ziel aus:

  9. Wählen Sie den Tab Info aus und maximieren Sie den Bereich URL-Typen.

  10. Klicken Sie auf die Schaltfläche + und fügen Sie ein URL-Schema für Ihre umgekehrte Client-ID hinzu. Diesen Wert finden Sie in der Konfigurationsdatei GoogleService-Info.plist, die Sie in Schritt 2.f ausgewählt haben. Suchen Sie nach dem Schlüssel REVERSED_CLIENT_ID. Kopieren Sie den Wert dieses Schlüssels und fügen Sie ihn auf der Konfigurationsseite in das Feld URL-Schemata ein. Lassen Sie die anderen Felder leer.

  11. Erstellen Sie das Projekt neu:

    1. Klicken Sie bei gedrückter Wahltaste auf Produkt > Build-Ordner bereinigen.
    2. Klicken Sie auf Produkt > Erstellen.

Schritt 3: Beispiel einrichten

Ersetzen Sie den Inhalt der folgenden Dateien durch den angegebenen Code:

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

Schritt 4: Beispiel ausführen

Wechseln Sie zum Schema QuickstartApp , indem Sie auf Produkt > Schema > QuickstartApp klicken, und führen Sie das Beispiel mit dem Gerätesimulator oder einem konfigurierten Gerät aus (Befehlstaste + R). Wenn Sie das Beispiel zum ersten Mal ausführen, werden Sie aufgefordert, sich in Ihrem Google-Konto anzumelden und den Zugriff zu autorisieren.

Hinweise

  • Die Autorisierungsinformationen werden in Ihrem Schlüsselbund gespeichert. Bei nachfolgenden Ausführungen werden Sie daher nicht mehr zur Autorisierung aufgefordert.

Weitere Informationen