এই পৃষ্ঠায় বর্ণিত ধাপগুলি থেকে আপনি জানতে পারবেন কীভাবে YouTube Data API-তে অনুরোধ করে এমন একটি সাধারণ iOS অ্যাপ্লিকেশন দ্রুত তৈরি করা যায়। এই স্যাম্পেল থেকে জানা যায় যে কীভাবে GoogleDevelopers YouTube চ্যানেল সম্পর্কে ডেটা পাওয়া যায়। এছাড়াও, কোডে এমন কমেন্ট রয়েছে যা বর্তমান ব্যবহারকারীর YouTube চ্যানেল সম্পর্কে ডেটা পাওয়ার জন্য কোয়েরি কীভাবে পরিবর্তন করতে হয় তা ব্যাখ্যা করে।
পূর্বশর্ত
এই কুইকস্টার্ট চালানোর জন্য আপনার এগুলি প্রয়োজন:
- Xcode 8.0 বা তার পরবর্তী যেকোনও ভার্সন।
- CocoaPods ডিপেনডেন্সি ম্যানেজার।
- ইন্টারনেট ও ওয়েব ব্রাউজারে অ্যাক্সেস।
- Google অ্যাকাউন্ট।
ধাপ ১: YouTube Data API চালু করা
-
Google Developers Console-এ প্রোজেক্ট তৈরি করতে বা বেছে নিতে এবং API অটোমেটিক চালু করতে এই উইজার্ড ব্যবহার করুন। চালিয়ে যান বিকল্পে ক্লিক করুন, তারপর ক্রেডেনশিয়ালে যান বিকল্পে ক্লিক করুন।
-
ক্রেডেনশিয়াল তৈরি করুন পৃষ্ঠায়, বাতিল করুন বোতামে ক্লিক করুন।
-
পৃষ্ঠার সবচেয়ে উপরে, OAuth-এর সম্মতি স্ক্রিন ট্যাব বেছে নিন। একটি ইমেল আইডি বেছে নিন, আগে থেকে সেট করা না থাকলে প্রোডাক্টের নাম লিখুন এবং সেভ করুন বোতামে ক্লিক করুন।
-
ক্রেডেনশিয়াল ট্যাব বেছে নিন, ক্রেডেনশিয়াল তৈরি করুন বোতামে ক্লিক করুন এবং OAuth ক্লায়েন্ট আইডি বেছে নিন।
- অ্যাপ্লিকেশনের ধরন iOS বেছে নিন, "YouTube Data API
Quickstart" নাম, বান্ডেল আইডি
com.example.QuickstartAppলিখুন এবং তৈরি করুন বোতামে ক্লিক করুন।
ধাপ ২: ওয়ার্কস্পেস প্রস্তুত করা
- Xcode খুলে নতুন প্রোজেক্ট তৈরি করুন:
- ফাইল > নতুন > প্রোজেক্ট বিকল্পে ক্লিক করুন, iOS > অ্যাপ্লিকেশন > সিঙ্গেল ভিউ অ্যাপ্লিকেশন টেমপ্লেট বেছে নিন এবং পরবর্তী বিকল্পে ক্লিক করুন।
- প্রোডাক্টের নাম "QuickstartApp", সংস্থা শনাক্তকারী "com.example" এবং ভাষা
Objective-Cহিসেবে সেট করুন।
সংস্থার শনাক্তকারীর নিচে, আপনি একটি জেনারেট করা
বান্ডিল শনাক্তকারী দেখতে পাবেন যা iOS বান্ডিল আইডি
(
com.example.QuickstartApp)-এর সাথে মেলে, যা আপনি ধাপ ১.b-এ লিখেছেন। - পরবর্তী বিকল্পে ক্লিক করুন।
- প্রোজেক্টের জন্য একটি গন্তব্য ডিরেক্টরি বেছে নিন এবং তৈরি করুন বিকল্পে ক্লিক করুন।
- ফাইল > প্রোজেক্ট বন্ধ করুন বিকল্পে ক্লিক করে প্রোজেক্ট বন্ধ করুন।
- একটি Terminal উইন্ডো খুলুন এবং সেই ডিরেক্টরিতে নেভিগেট করুন যেখানে আপনার
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.xcworkspaceXCode প্রোজেক্ট নেভিগেটরে প্রোজেক্ট নোড "QuickstartApp" বেছে নিন। তারপর মেনু আইটেম ফাইল > "QuickstartApp"-এ ফাইল যোগ করুন বিকল্পে ক্লিক করুন।

আগে ডাউনলোড করা
GoogleService-Info.plistফাইলটি খুঁজে নিয়ে সেটি বেছে নিন। বিকল্প বোতামে ক্লিক করুন।
বিকল্প উইন্ডোতে নিম্নলিখিত বিকল্প বেছে নিন এবং তারপরে যোগ করুন বোতামে ক্লিক করুন:
- প্রয়োজন হলে আইটেম কপি করুন চেকবক্সে টিকচিহ্ন দিন।
- টার্গেটে যোগ করুন বিভাগে তালিকাভুক্ত সব টার্গেট চেক করুন।

প্রজেক্ট নোড বেছে নেওয়া অবস্থায়, টার্গেট বিভাগে "QuickstartApp" বেছে নিন, যেমন নিচে দুটি ছবিতে দেখানো হয়েছে:
এই স্ক্রিনশটে দেখানো জায়গায় ক্লিক করুন:

তারপর সঠিক টার্গেট বেছে নিন:

তথ্য ট্যাব বেছে নিন এবং URL-এর ধরন বিভাগটি বড় করুন।
+ বোতামে ক্লিক করুন এবং আপনার রিভার্স করা ক্লায়েন্ট আইডির জন্য URL স্কিম যোগ করুন। এই ভ্যালু খুঁজে পেতে, ২.f ধাপে আপনার বেছে নেওয়া
GoogleService-Info.plistকনফিগারেশন ফাইল খুলুন। REVERSED_CLIENT_ID কী খুঁজুন। সেই কী-এর ভ্যালু কপি করে কনফিগারেশন পৃষ্ঠায় URL স্কিম বক্সে পেস্ট করুন। অন্যান্য ফিল্ড খালি রাখুন।প্রোজেক্ট আবার তৈরি করুন:
- প্রোডাক্ট > বিল্ড ফোল্ডার ক্লিন করুন (বিকল্প কী প্রেস করে থাকার সময়) বিকল্পে ক্লিক করুন।
- প্রোডাক্ট > তৈরি করুন বিকল্পে ক্লিক করুন।
ধাপ ৩: স্যাম্পেল সেট-আপ করুন
প্রদান করা কোড দিয়ে নিম্নলিখিত ফাইলের কন্টেন্ট পরিবর্তন করুন:#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 অ্যাকাউন্টে লগ-ইন করতে এবং অ্যাক্সেস অনুমোদন করতে প্রম্পট করবে।
নোট
- অনুমোদন সংক্রান্ত তথ্য আপনার Keychain-এ স্টোর করা হয়, তাই পরবর্তীকালে এক্সিকিউট করার সময় অনুমোদনের জন্য প্রম্পট করা হবে না।