इस पेज पर बताए गए तरीके, एक आसान से iOS ऐप्लिकेशन बनाने के बारे में बताते हैं. इससे, YouTube Data API के लिए अनुरोध किए जा सकते हैं. इस नमूने में Googleडेवलपर के YouTube चैनल से जुड़ा डेटा वापस पाने का तरीका बताया गया है. इस कोड में ऐसी टिप्पणियां भी शामिल हैं जो मौजूदा उपयोगकर्ता के YouTube चैनल से जुड़ा डेटा पाने के लिए, क्वेरी में बदलाव करने के तरीके बताती हैं.
ज़रूरी शर्तें
इस क्विकस्टार्ट को चलाने के लिए, आपको इनकी ज़रूरत होगी:
- Xcode 8.0 या इसके बाद का वर्शन.
- CocoaPods डिपेंडेंसी मैनेजर.
- इंटरनेट और वेब ब्राउज़र का ऐक्सेस.
- एक Google खाता.
पहला चरण: YouTube Data API चालू करना
-
Google Developers Console में कोई प्रोजेक्ट बनाने या चुनने के लिए, इस विज़ार्ड का इस्तेमाल करें और एपीआई को अपने-आप चालू करें. जारी रखें पर क्लिक करें. इसके बाद, क्रेडेंशियल पर जाएं पर क्लिक करें.
-
क्रेडेंशियल बनाएं पेज पर, रद्द करें बटन पर क्लिक करें.
-
पेज पर सबसे ऊपर, OAuth की सहमति वाली स्क्रीन टैब को चुनें. ईमेल पता चुनें, अगर प्रॉडक्ट का नाम पहले से सेट नहीं है, तो उसे डालें. इसके बाद, सेव करें बटन पर क्लिक करें.
-
क्रेडेंशियल टैब चुनें, क्रेडेंशियल बनाएं बटन पर क्लिक करें और OAuth क्लाइंट आईडी चुनें.
- ऐप्लिकेशन टाइप iOS चुनें. इसके बाद, "YouTube डेटा एपीआई क्विकस्टार्ट" नाम डालें, बंडल आईडी
com.example.QuickstartApp
डालें, और बनाएं बटन पर क्लिक करें.
दूसरा चरण: फ़ाइल फ़ोल्डर को तैयार करना
- Xcode खोलें और नया प्रोजेक्ट बनाएं:
- फ़ाइल > नया > प्रोजेक्ट पर क्लिक करें, iOS > ऐप्लिकेशन > सिंगल व्यू ऐप्लिकेशन टेंप्लेट चुनें और आगे बढ़ें पर क्लिक करें.
- प्रॉडक्ट का नाम को "QuickstartApp", संगठन का आइडेंटिफ़ायर को "com.example" पर, और भाषा को
Objective-Cपर सेट करें.
संगठन की पहचान करने वाले के नीचे, आपको जनरेट किया गया
बंडल आइडेंटिफ़ायर दिखेगा. यह iOS बंडल आईडी
(
com.example.QuickstartApp
) से मेल खाता है, जिसे आपने चरण 1.b में डाला है. - आगे बढ़ें पर क्लिक करें.
- प्रोजेक्ट के लिए डेस्टिनेशन डायरेक्ट्री चुनें और बनाएं पर क्लिक करें.
- फ़ाइल > प्रोजेक्ट बंद करें पर क्लिक करके प्रोजेक्ट बंद करें.
- टर्मिनल विंडो खोलें और उस डायरेक्ट्री पर जाएं जिसमें
QuickstartApp.xcodeproj
वह फ़ाइल है जिसे आपने अभी-अभी बनाया है. Podfile बनाने, लाइब्रेरी इंस्टॉल करने, और नतीजे के तौर पर लगने वाले XCode प्रोजेक्ट को खोलने के लिए, ये निर्देश चलाएं:
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 प्रोजेक्ट नेविगेटर में प्रोजेक्ट नोड "QuickstartApp" चुनें. इसके बाद, मेन्यू आइटम फ़ाइल > "QuickstartApp" में फ़ाइलें जोड़ें पर क्लिक करें.
पहले से डाउनलोड की गई
GoogleService-Info.plist
फ़ाइल को ढूंढें और उसे चुनें. विकल्प बटन पर क्लिक करें.विकल्प विंडो में नीचे दिए गए चुनाव करें और फिर जोड़ें बटन पर क्लिक करें:
- ज़रूरी होने पर आइटम कॉपी करें चेकबॉक्स को चुनें.
- टारगेट में जोड़ें सेक्शन में दिए गए सभी टारगेट देखें.
अगर प्रोजेक्ट नोड अब भी चुना हुआ है, तो Target सेक्शन में "QuickstartApp" चुनें, जैसा कि यहां दी गई दो इमेज में दिखाया गया है:
इस स्क्रीनशॉट में दिखाए गए इलाके पर क्लिक करें:
इसके बाद, सही टारगेट चुनें:
जानकारी टैब चुनें और यूआरएल के प्रकार सेक्शन को बड़ा करें.
+ बटन पर क्लिक करें और अपने बदले गए क्लाइंट आईडी के लिए यूआरएल स्कीम जोड़ें. यह मान ढूंढने के लिए, वह
GoogleService-Info.plist
कॉन्फ़िगरेशन फ़ाइल खोलें जिसे आपने दूसरे चरण में चुना था. REVERSED_CLIENT_ID बटन खोजें. उस कुंजी की वैल्यू को कॉपी करें और उसे कॉन्फ़िगरेशन पेज पर यूआरएल स्कीम बॉक्स में चिपकाएं. अन्य फ़ील्ड खाली छोड़ दें.प्रोजेक्ट को फिर से बनाएं:
- प्रॉडक्ट > बिल्ड फ़ोल्डर साफ़ करें (विकल्प कुंजी को दबाए रखते हुए) पर क्लिक करें.
- प्रॉडक्ट > बिल्ड पर क्लिक करें.
तीसरा चरण: सैंपल सेट अप करना
इन फ़ाइलों के कॉन्टेंट को, दिए गए कोड से बदलें:#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
चौथा चरण: सैंपल चलाना
प्रॉडक्ट > स्कीम > QuickstartApp पर क्लिक करके QuickstartApp स्कीम पर स्विच करें और डिवाइस सिम्युलेटर या कॉन्फ़िगर किए गए डिवाइस का इस्तेमाल करके सैंपल (Cmd+R) चलाएं. पहली बार सैंपल चलाने पर, आपको Google खाते में लॉग इन करने और ऐक्सेस देने की अनुमति मांगी जाएगी.
नोट
- पुष्टि करने की जानकारी आपके Keychain में सेव की जाती है, इसलिए इसके बाद एक्ज़ीक्यूशन के लिए अनुमति नहीं दी जाती.