iOS-Kurzanleitung

Auf dieser Seite wird erläutert, 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 erläutert wird, wie Sie die Abfrage ändern, um Daten zum YouTube-Kanal des aktuellen Nutzers abzurufen.

Voraussetzungen

Für diese Kurzanleitung benötigen Sie Folgendes:

  • Xcode 8.0 oder höher.
  • Abhängigkeitsmanager CocoaPods
  • Zugriff auf das Internet und einen Webbrowser.
  • Ein Google-Konto.

Schritt 1: YouTube Data API aktivieren

  1. Verwenden Sie diesen Assistenten, um ein Projekt in der Google Developers Console zu erstellen oder auszuwählen und die API automatisch zu 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 geschehen, 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-Kurzanleitung“ und die Bundle-ID com.example.QuickstartApp ein und klicken Sie auf die Schaltfläche Erstellen.

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-Anwendung aus und klicken Sie dann auf Weiter.
    2. Setzen Sie Product Name (Produktname) auf "QuickstartApp", Organization Identifier (Organisationskennung) auf "com.example" und Language (Sprache) aufObjective-C. Unterhalb der Organisations-ID sollte eine generierte Bundle-Kennung zu sehen sein, die der iOS-Paket-ID (com.example.QuickstartApp) entspricht, 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 in das Verzeichnis mit der Datei QuickstartApp.xcodeproj, die Sie gerade erstellt haben.
  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 in der XCode-Projektnavigation den Projektknoten „QuickstartApp“ aus. Klicken Sie dann auf das Menüelement File > Add files to "QuickstartApp".

  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 Optionsfenster die folgende Auswahl und klicken Sie auf die Schaltfläche Add (Hinzufügen):

    1. Klicken Sie das Kästchen Copy items if needed an.
    2. Prüfen Sie alle Ziele, die im Abschnitt Zu Zielen hinzufügen aufgeführt sind.

  8. Wählen Sie bei ausgewähltem Projektknoten im Abschnitt TARGETS die Option "QuickstartApp" aus, wie in den beiden Abbildungen unten gezeigt:

    1. Klicken Sie auf den folgenden Screenshot:

    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. Öffnen Sie die Konfigurationsdatei GoogleService-Info.plist, die Sie in Schritt 2.f ausgewählt haben, um diesen Wert zu finden. Suchen Sie nach dem Schlüssel REVERSED_CLIENT_ID. Kopieren Sie den Wert dieses Schlüssels und fügen Sie ihn in das Feld URL-Schemas auf der Konfigurationsseite ein. Lassen Sie die anderen Felder leer.

  11. Erstellen Sie das Projekt neu:

    1. Klicken Sie auf Produkt > Build-Ordner bereinigen (halte die Optionstaste gedrückt).
    2. Klicken Sie auf Produkt > Build.

Schritt 3: Beispiel einrichten

Ersetzen Sie den Inhalt der folgenden Dateien durch den bereitgestellten 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 QuickstartApp Schema, indem Sie auf Product > Scheme > QuickstartApp klicken und das Beispiel (Cmd+R) mit dem Gerätesimulator oder einem konfigurierten Gerät ausführen. 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, sodass nachfolgende Ausführungen keine Autorisierung erfordern.

Weitere Informationen