iOS Quickstart

  • This guide provides instructions for creating a simple iOS application in Objective-C that interacts with the YouTube Data API.

  • The application demonstrates how to retrieve and display data, such as the title, description, and view count, for the GoogleDevelopers YouTube channel.

  • The project requires Xcode, CocoaPods, internet access, and a Google account, along with enabling the YouTube Data API in the Google Developers Console.

  • The application utilizes the Google Sign-In SDK for user authentication and authorization to access YouTube data.

  • The step-by-step process includes setting up the project, configuring dependencies, handling authentication, and fetching and displaying channel information, with options to modify the query for the current user's channel.

The steps described on this page explain how to quickly create a simple iOS application that makes requests to the YouTube Data API. This sample shows how to retrieve data about the GoogleDevelopers YouTube channel. The code also includes comments that explain how to modify the query to retrieve data about the current user's YouTube channel.

Prerequisites

To run this quickstart, you'll need:

  • Xcode 8.0 or greater.
  • CocoaPods dependency manager.
  • Access to the internet and a web browser.
  • A Google account.

Step 1: Turn on the YouTube Data API

  1. Use this wizard to create or select a project in the Google Developers Console and automatically turn on the API. Click Continue, then Go to credentials.

  2. On the Create credentials page, click the Cancel button.

  3. At the top of the page, select the OAuth consent screen tab. Select an Email address, enter a Product name if not already set, and click the Save button.

  4. Select the Credentials tab, click the Create credentials button and select OAuth client ID.

  5. Select the application type iOS, enter the name "YouTube Data API Quickstart", bundle ID com.example.QuickstartApp, and click the Create button.

Step 2: Prepare the workspace

  1. Open Xcode and create a new project:
    1. Click File > New > Project, select the iOS > Application > Single View Application template, and click Next.
    2. Set the Product Name to "QuickstartApp", Organization Identifier to "com.example", and Language to Objective-C. Below the organization identifer, you should see a generated Bundle Identifier that matches the iOS Bundle ID (com.example.QuickstartApp) that you entered in step 1.b.
    3. Click Next.
    4. Select a destination directory for the project and click Create.
  2. Close the project by clicking File > Close Project.
  3. Open a Terminal window and navigate to the directory that contains the QuickstartApp.xcodeproj file you just created.
  4. Run the following commands to create the Podfile, install the library, and open the resulting XCode project:

    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. In the XCode Project Navigator select the project node "QuickstartApp". Then click the menu item File > Add files to "QuickstartApp".

  6. Locate the GoogleService-Info.plist file downloaded earlier and select it. Click the Options button.

  7. Make the following selections in the options window and then click the Add button:

    1. Check the Copy items if needed checkbox.
    2. Check all targets listed in the Add to targets section.
  8. With the project node still selected, select "QuickstartApp" in the TARGETS section as shown in the two images below:

    1. Click the area shown in this screenshot:

    2. Then select the proper target:

  9. Select the Info tab, and expand the URL Types section.

  10. Click the + button, and add a URL scheme for your reversed client ID. To find this value, open the GoogleService-Info.plist configuration file that you selected in step 2.f. Look for the REVERSED_CLIENT_ID key. Copy the value of that key, and paste it into the URL Schemes box on the configuration page. Leave the other fields blank.

  11. Rebuild the project:

    1. Click Product > Clean Build Folder (while holding the option key).
    2. Click Product > Build.

Step 3: Set up the sample

Replace the contents of the following files with the code provided:

AppDelegate.h
#import <UIKit/UIKit.h>
@importGoogleSignIn;
@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.
[GIDSignInsharedInstance].clientID=@"<YOUR_CLIENT_ID>";
returnYES;
}
- (BOOL)application:(UIApplication*)application
openURL:(NSURL*)url
sourceApplication:(NSString*)sourceApplication
annotation:(id)annotation{
return[[GIDSignInsharedInstance]handleURL:url
sourceApplication:sourceApplication
annotation:annotation];
}
@end
ViewController.h
#import <UIKit/UIKit.h>
@importGoogleSignIn;
#import <GTLRYouTube.h>
@interface ViewController : UIViewController<GIDSignInDelegate,GIDSignInUIDelegate>
@property(nonatomic,strong)IBOutletGIDSignInButton*signInButton;
@property(nonatomic,strong)UITextView*output;
@property(nonatomic,strong)GTLRYouTubeService*service;
@end
ViewController.m
#import "ViewController.h"
@implementation ViewController
- (void)viewDidLoad{
[superviewDidLoad];
// Configure Google Sign-in.
GIDSignIn*signIn=[GIDSignInsharedInstance];
signIn.delegate=self;
signIn.uiDelegate=self;
signIn.scopes=[NSArrayarrayWithObjects:kGTLRAuthScopeYouTubeReadonly,nil];
[signInsignInSilently];
// Add the sign-in button.
self.signInButton=[[GIDSignInButtonalloc]init];
[self.viewaddSubview:self.signInButton];
// Create a UITextView to display output.
self.output=[[UITextViewalloc]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.viewaddSubview:self.output];
// Initialize the service object.
self.service=[[GTLRYouTubeServicealloc]init];
}
- (void)signIn:(GIDSignIn*)signIn
didSignInForUser:(GIDGoogleUser*)user
withError:(NSError*)error{
if(error!=nil){
[selfshowAlert:@"Authentication Error"message:error.localizedDescription];
self.service.authorizer=nil;
}else{
self.signInButton.hidden=true;
self.output.hidden=false;
self.service.authorizer=user.authentication.fetcherAuthorizer;
[selffetchChannelResource];
}
}
// 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_ChannelsListqueryWithPart:@"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.serviceexecuteQuery: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=[[NSMutableStringalloc]init];
if(channels.items.count > 0){
[outputappendString:@"Channel information:\n"];
for(GTLRYouTube_Channel*channelinchannels){
NSString*title=channel.snippet.title;
NSString*description=channel.snippet.description;
NSNumber*viewCount=channel.statistics.viewCount;
[outputappendFormat:@"Title: %@\nDescription: %@\nViewCount: %@\n",title,description,viewCount];
}
}else{
[outputappendString:@"Channel not found."];
}
self.output.text=output;
}else{
[selfshowAlert:@"Error"message:error.localizedDescription];
}
}
// Helper for showing an alert
- (void)showAlert:(NSString*)titlemessage:(NSString*)message{
UIAlertController*alert=
[UIAlertControlleralertControllerWithTitle:title
message:message
preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction*ok=
[UIAlertActionactionWithTitle:@"OK"
style:UIAlertActionStyleDefault
handler:^(UIAlertAction*action)
{
[alertdismissViewControllerAnimated:YEScompletion:nil];
}];
[alertaddAction:ok];
[selfpresentViewController:alertanimated:YEScompletion:nil];
}
@end

Step 4: Run the sample

Switch to the QuickstartApp scheme by clicking Product > Scheme > QuickstartApp and run the sample (Cmd+R) using the device simulator or a configured device. The first time you run the sample, it will prompt you to log in to your Google account and authorize access.

Notes

  • Authorization information is stored in your Keychain, so subsequent executions will not prompt for authorization.

Further reading

Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.

Last updated 2026年06月01日 UTC.