এই পৃষ্ঠায় বর্ণিত পদক্ষেপগুলি ব্যাখ্যা করে যে কীভাবে দ্রুত একটি সহজ iOS অ্যাপ্লিকেশন তৈরি করা যায় যা YouTube ডেটা API-তে অনুরোধ করে। এই নমুনাটি দেখায় কিভাবে GoogleDevelopers YouTube চ্যানেল সম্পর্কে ডেটা পুনরুদ্ধার করতে হয়। কোডটিতে মন্তব্যগুলিও রয়েছে যা ব্যাখ্যা করে যে কীভাবে বর্তমান ব্যবহারকারীর YouTube চ্যানেল সম্পর্কে ডেটা পুনরুদ্ধার করতে ক্যোয়ারীটি সংশোধন করতে হয়৷
পূর্বশর্ত
এই কুইকস্টার্ট চালানোর জন্য আপনার প্রয়োজন হবে:
- Xcode 8.0 বা তার বেশি।
- কোকোপডস নির্ভরতা ম্যানেজার।
- ইন্টারনেট এবং একটি ওয়েব ব্রাউজারে অ্যাক্সেস।
- একটি Google অ্যাকাউন্ট।
ধাপ 1: YouTube ডেটা API চালু করুন
Google বিকাশকারী কনসোলে একটি প্রকল্প তৈরি বা নির্বাচন করতে এবং স্বয়ংক্রিয়ভাবে API চালু করতে এই উইজার্ডটি ব্যবহার করুন৷ Continue-এ ক্লিক করুন, তারপর শংসাপত্রে যান ।
শংসাপত্র তৈরি করুন পৃষ্ঠায়, বাতিল বোতামে ক্লিক করুন।
পৃষ্ঠার শীর্ষে, OAuth সম্মতি স্ক্রিন ট্যাবটি নির্বাচন করুন। একটি ইমেল ঠিকানা নির্বাচন করুন, ইতিমধ্যে সেট না থাকলে একটি পণ্যের নাম লিখুন এবং সংরক্ষণ বোতামটি ক্লিক করুন৷
শংসাপত্র ট্যাব নির্বাচন করুন, শংসাপত্র তৈরি করুন বোতামে ক্লিক করুন এবং OAuth ক্লায়েন্ট আইডি নির্বাচন করুন।
- iOS টাইপ অ্যাপ্লিকেশন নির্বাচন করুন, "YouTube Data API Quickstart" নাম লিখুন,
com.example.QuickstartApp
বান্ডেল আইডি, এবং তৈরি করুন বোতামে ক্লিক করুন।
ধাপ 2: কর্মক্ষেত্র প্রস্তুত করুন
- Xcode খুলুন এবং একটি নতুন প্রকল্প তৈরি করুন:
- File > New > Project এ ক্লিক করুন, iOS > Application > Single View Application টেমপ্লেট নির্বাচন করুন এবং Next এ ক্লিক করুন।
- পণ্যের নাম "QuickstartApp" এ সেট করুন, প্রতিষ্ঠান শনাক্তকারীকে "com.example" এবং ভাষাতেউদ্দেশ্য-C. সংস্থার শনাক্তকারীর নীচে, আপনি একটি তৈরি করা বান্ডেল শনাক্তকারী দেখতে পাবেন যা iOS বান্ডেল আইডি (
com.example.QuickstartApp
) এর সাথে মেলে যা আপনি ধাপ 1.b এ প্রবেশ করেছেন। - পরবর্তী ক্লিক করুন.
- প্রকল্পের জন্য একটি গন্তব্য ডিরেক্টরি নির্বাচন করুন এবং তৈরি করুন ক্লিক করুন।
- File > Close Project এ ক্লিক করে প্রকল্পটি বন্ধ করুন।
- একটি টার্মিনাল উইন্ডো খুলুন এবং আপনার তৈরি করা
QuickstartApp.xcodeproj
ফাইলটি রয়েছে এমন ডিরেক্টরিতে নেভিগেট করুন। পডফাইল তৈরি করতে, লাইব্রেরি ইনস্টল করতে এবং ফলস্বরূপ 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
ফাইলটি সন্ধান করুন এবং এটি নির্বাচন করুন। বিকল্প বোতামে ক্লিক করুন।বিকল্প উইন্ডোতে নিম্নলিখিত নির্বাচন করুন এবং তারপর যোগ বোতামে ক্লিক করুন:
- প্রয়োজনে অনুলিপি আইটেম চেকবক্স চেক করুন.
- লক্ষ্য যোগ করুন বিভাগে তালিকাভুক্ত সমস্ত লক্ষ্যগুলি পরীক্ষা করুন৷
প্রজেক্ট নোড এখনও নির্বাচন করে, নীচের দুটি ছবিতে দেখানো হিসাবে লক্ষ্য বিভাগে "QuickstartApp" নির্বাচন করুন:
এই স্ক্রিনশটে দেখানো এলাকায় ক্লিক করুন:
তারপর সঠিক লক্ষ্য নির্বাচন করুন:
তথ্য ট্যাবটি নির্বাচন করুন এবং URL প্রকার বিভাগটি প্রসারিত করুন।
+ বোতামে ক্লিক করুন এবং আপনার বিপরীত ক্লায়েন্ট আইডির জন্য একটি URL স্কিম যোগ করুন। এই মানটি খুঁজে পেতে,
GoogleService-Info.plist
কনফিগারেশন ফাইলটি খুলুন যা আপনি ধাপ 2.f এ নির্বাচন করেছেন। REVERSED_CLIENT_ID কীটি দেখুন। সেই কীটির মান কপি করুন এবং কনফিগারেশন পৃষ্ঠার URL স্কিম বক্সে পেস্ট করুন। অন্যান্য ক্ষেত্রগুলি ফাঁকা রাখুন।প্রকল্প পুনর্নির্মাণ:
- পণ্য > ক্লিন বিল্ড ফোল্ডারে ক্লিক করুন ( অপশন কী ধরে থাকা অবস্থায়)।
- পণ্য > বিল্ড এ ক্লিক করুন।
ধাপ 3: নমুনা সেট আপ করুন
প্রদত্ত কোড দিয়ে নিম্নলিখিত ফাইলগুলির বিষয়বস্তু প্রতিস্থাপন করুন:#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
ধাপ 4: নমুনা চালান
পণ্য > স্কিম > QuickstartApp-এ ক্লিক করে QuickstartApp স্কিমে স্যুইচ করুন এবং ডিভাইস সিমুলেটর বা কনফিগার করা ডিভাইস ব্যবহার করে নমুনা (Cmd+R) চালান। আপনি যখন প্রথমবার নমুনা চালান, এটি আপনাকে আপনার Google অ্যাকাউন্টে লগ ইন করতে এবং অ্যাক্সেস অনুমোদন করতে অনুরোধ করবে।
নোট
- অনুমোদনের তথ্য আপনার কীচেইনে সংরক্ষিত আছে, তাই পরবর্তী কার্য সম্পাদন অনুমোদনের জন্য অনুরোধ করবে না।