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