আপনার iOS বা macOS অ্যাপে Google সাইন-ইন সংহত করা হচ্ছে

এই পৃষ্ঠাটি আপনাকে দেখায় কিভাবে একটি iOS বা macOS অ্যাপে Google সাইন-ইন সংহত করতে হয়। আপনার অ্যাপের জীবনচক্র বা UI মডেলের জন্য আপনাকে এই নির্দেশাবলী মানিয়ে নিতে হতে পারে।

তুমি শুরু করার আগে

নির্ভরতা ডাউনলোড করুন, আপনার Xcode প্রকল্প কনফিগার করুন এবং আপনার ক্লায়েন্ট আইডি সেট করুন

1. প্রমাণীকরণ পুনঃনির্দেশ URL পরিচালনা করুন

iOS: UIAapplicationDelegate

আপনার AppDelegate এর application:openURL:options পদ্ধতিতে, GIDSignIn এর handleURL: পদ্ধতিতে কল করুন:

সুইফট

func application(
  _ app: UIApplication,
  open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]
) -> Bool {
  var handled: Bool

  handled = GIDSignIn.sharedInstance.handle(url)
  if handled {
    return true
  }

  // Handle other custom URL types.

  // If not handled by this app, return false.
  return false
}

উদ্দেশ্য গ

- (BOOL)application:(UIApplication *)app
            openURL:(NSURL *)url
            options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {
  BOOL handled;

  handled = [GIDSignIn.sharedInstance handleURL:url];
  if (handled) {
    return YES;
  }

  // Handle other custom URL types.

  // If not handled by this app, return NO.
  return NO;
}

macOS: NSAapplicationDelegate

  1. আপনার অ্যাপের AppDelegate এ applicationDidFinishLaunchingkAEGetURL ইভেন্টগুলির জন্য একটি হ্যান্ডলার নিবন্ধন করুন:

    সুইফট

    func applicationDidFinishLaunching(_ notification: Notification) {
      // Register for GetURL events.
      let appleEventManager = NSAppleEventManager.shared()
      appleEventManager.setEventHandler(
        self,
        andSelector: "handleGetURLEvent:replyEvent:",
        forEventClass: AEEventClass(kInternetEventClass),
        andEventID: AEEventID(kAEGetURL)
      )
    }
    

    উদ্দেশ্য গ

    - (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
      // Register for GetURL events.
      NSAppleEventManager *appleEventManager = [NSAppleEventManager sharedAppleEventManager];
      [appleEventManager setEventHandler:self
                         andSelector:@selector(handleGetURLEvent:withReplyEvent:)
                         forEventClass:kInternetEventClass
                         andEventID:kAEGetURL];
    }
    
  2. এই ইভেন্টগুলির জন্য হ্যান্ডলারকে সংজ্ঞায়িত করুন যা GIDSignIn এর handleURL কল করে:

    সুইফট

    func handleGetURLEvent(event: NSAppleEventDescriptor?, replyEvent: NSAppleEventDescriptor?) {
        if let urlString =
          event?.paramDescriptor(forKeyword: AEKeyword(keyDirectObject))?.stringValue{
            let url = NSURL(string: urlString)
            GIDSignIn.sharedInstance.handle(url)
        }
    }
    

    উদ্দেশ্য গ

    - (void)handleGetURLEvent:(NSAppleEventDescriptor *)event
               withReplyEvent:(NSAppleEventDescriptor *)replyEvent {
          NSString *URLString = [[event paramDescriptorForKeyword:keyDirectObject] stringValue];
          NSURL *URL = [NSURL URLWithString:URLString];
          [GIDSignIn.sharedInstance handleURL:url];
    }
    

সুইফটইউআই

আপনার অ্যাপের উইন্ডো বা দৃশ্যে, URLটি পেতে একটি হ্যান্ডলার নিবন্ধন করুন এবং GIDSignIn এর handleURL কে কল করুন:

সুইফট

@main
struct MyApp: App {

  var body: some Scene {
    WindowGroup {
      ContentView()
        // ...
        .onOpenURL { url in
          GIDSignIn.sharedInstance.handle(url)
        }
    }
  }
}

2. ব্যবহারকারীর সাইন-ইন অবস্থা পুনরুদ্ধার করার চেষ্টা করুন

আপনার অ্যাপ শুরু হলে, যারা ইতিমধ্যেই Google ব্যবহার করে সাইন ইন করেছেন তাদের সাইন-ইন অবস্থা পুনরুদ্ধার করার চেষ্টা করার জন্য restorePreviousSignInWithCallback কল করুন। এটি করা নিশ্চিত করে যে ব্যবহারকারীরা প্রত্যেকবার আপনার অ্যাপ খুললে তাদের সাইন ইন করতে হবে না (যদি না তারা সাইন আউট করে থাকে)।

iOS অ্যাপ্লিকেশানগুলি প্রায়শই UIApplicationDelegate এর application:didFinishLaunchingWithOptions: পদ্ধতি এবং NSApplicationDelegate এর applicationDidFinishLaunching: macOS অ্যাপগুলির জন্য এটি করে। ব্যবহারকারীর কাছে কোন দৃশ্য উপস্থাপন করতে হবে তা নির্ধারণ করতে ফলাফলটি ব্যবহার করুন। উদাহরণ স্বরূপ:

সুইফট

func application(
  _ application: UIApplication,
  didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
  GIDSignIn.sharedInstance.restorePreviousSignIn { user, error in
    if error != nil || user == nil {
      // Show the app's signed-out state.
    } else {
      // Show the app's signed-in state.
    }
  }
  return true
}

উদ্দেশ্য গ

- (BOOL)application:(UIApplication *)application
    didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  [GIDSignIn.sharedInstance restorePreviousSignInWithCompletion:^(GIDGoogleUser * _Nullable user,
                                                                  NSError * _Nullable error) {
    if (error) {
      // Show the app's signed-out state.
    } else {
      // Show the app's signed-in state.
    }
  }];
  return YES;
}

সুইফটইউআই

আপনি যদি SwiftUI ব্যবহার করেন, তাহলে আপনার প্রাথমিক দর্শনের জন্য onAppearrestorePreviousSignIn করতে একটি কল যোগ করুন:

সুইফট

@main
struct MyApp: App {
  var body: some Scene {
    WindowGroup {
      ContentView()
        // ...
        .onAppear {
          GIDSignIn.sharedInstance.restorePreviousSignIn { user, error in
            // Check if `user` exists; otherwise, do something with `error`
          }
        }
    }
  }
}

3. একটি Google সাইন-ইন বোতাম যোগ করুন৷

আপনার সাইন-ইন ভিউতে একটি "Google দিয়ে সাইন ইন করুন" বোতাম যোগ করুন। SwiftUI এবং UIKit-এর জন্য উপাদানগুলি উপলব্ধ যা স্বয়ংক্রিয়ভাবে Google ব্র্যান্ডিংয়ের সাথে একটি বোতাম তৈরি করে এবং ব্যবহারের জন্য সুপারিশ করা হয়।

SwiftUI ব্যবহার করে

  1. নিশ্চিত করুন যে আপনি আপনার প্রকল্পে SwiftUI "Google দিয়ে সাইন ইন করুন" বোতামের জন্য নির্ভরতা যোগ করেছেন।

  2. যে ফাইলটিতে আপনি SwiftUI বোতাম যোগ করতে চান, সেখানে ফাইলের শীর্ষে প্রয়োজনীয় আমদানি যোগ করুন:

    import GoogleSignInSwift
    
  3. আপনার ভিউতে একটি "Google এর সাথে সাইন ইন করুন" বোতাম যোগ করুন এবং বোতাম টিপলে যে ক্রিয়াটি কল করা হবে তা নির্দিষ্ট করুন:

    GoogleSignInButton(action: handleSignInButton)
    
  4. আপনার কর্মে GIDSignIn এর signIn(presentingViewController:completion:) পদ্ধতিতে একটি কল যোগ করে বোতাম টিপলে সাইন ইন প্রক্রিয়াটি ট্রিগার করুন:

    func handleSignInButton() {
      GIDSignIn.sharedInstance.signIn(
        withPresenting: rootViewController) { signInResult, error in
          guard let result = signInResult else {
            // Inspect error
            return
          }
          // If sign in succeeded, display the app's main content View.
        }
      )
    }
    

এটি ডিফল্ট ভিউ মডেল ব্যবহার করে যা বোতামের জন্য স্ট্যান্ডার্ড স্টাইলিং তথ্য প্রদান করে। বোতামের চেহারা নিয়ন্ত্রণ করতে, আপনাকে একটি কাস্টম GoogleSignInButtonViewModel তৈরি করতে হবে এবং GoogleSignInButton(viewModel: yourViewModel, action: yourAction) ব্যবহার করে বোতামের ইনিশিয়ালাইজারে viewModel হিসেবে সেট করতে হবে। আরও তথ্যের জন্য GoogleSignInButtonViewModel সোর্স কোড দেখুন।

UIKit ব্যবহার করে

  1. আপনার সাইন-ইন ভিউতে একটি "Google দিয়ে সাইন ইন করুন" বোতাম যোগ করুন। আপনি Google ব্র্যান্ডিং (প্রস্তাবিত) সহ একটি বোতাম স্বয়ংক্রিয়ভাবে তৈরি করতে বা কাস্টম স্টাইলিং সহ আপনার নিজস্ব বোতাম তৈরি করতে GIDSignInButton ক্লাস ব্যবহার করতে পারেন৷

    স্টোরিবোর্ড বা XIB ফাইলে একটি GIDSignInButton যোগ করতে, একটি ভিউ যোগ করুন এবং এটির কাস্টম ক্লাস GIDSignInButton এ সেট করুন। মনে রাখবেন যে আপনি যখন আপনার স্টোরিবোর্ডে একটি GIDSignInButton ভিউ যোগ করেন, তখন সাইন-ইন বোতামটি ইন্টারফেস বিল্ডারে রেন্ডার হয় না। সাইন-ইন বোতাম দেখতে অ্যাপটি চালান।

    আপনি একটি GIDSignInButton এর colorScheme এবং style বৈশিষ্ট্য সেট করে এর চেহারা কাস্টমাইজ করতে পারেন:

    GIDSignInButton শৈলী বৈশিষ্ট্য
    colorScheme kGIDSignInButtonColorSchemeLight
    kGIDSignInButtonColorSchemeDark
    style kGIDSignInButtonStyleStandard
    kGIDSignInButtonStyleWide
    kGIDSignInButtonStyleIconOnly
  2. আপনার ভিউকন্ট্রোলারের একটি পদ্ধতিতে বোতামটি সংযুক্ত করুন যা signIn: উদাহরণস্বরূপ, একটি IBAction ব্যবহার করুন:

    সুইফট

    @IBAction func signIn(sender: Any) {
      GIDSignIn.sharedInstance.signIn(withPresenting: self) { signInResult, error in
        guard error == nil else { return }
    
        // If sign in succeeded, display the app's main content View.
      }
    }
    

    উদ্দেশ্য গ

    - (IBAction)signIn:(id)sender {
      [GIDSignIn.sharedInstance
          signInWithPresentingViewController:self
                                  completion:^(GIDSignInResult * _Nullable signInResult,
                                               NSError * _Nullable error) {
        if (error) {
          return;
        }
    
        // If sign in succeeded, display the app's main content View.
      }];
    }
    

4. একটি সাইন-আউট বোতাম যোগ করুন৷

  1. আপনার অ্যাপে একটি সাইন-আউট বোতাম যোগ করুন, সাইন-ইন করা ব্যবহারকারীদের কাছে দৃশ্যমান।

  2. আপনার ভিউকন্ট্রোলারের একটি পদ্ধতিতে বোতামটি সংযুক্ত করুন যা signOut: উদাহরণস্বরূপ, একটি IBAction ব্যবহার করুন:

    সুইফট

    @IBAction func signOut(sender: Any) {
      GIDSignIn.sharedInstance.signOut()
    }
    

    উদ্দেশ্য গ

    - (IBAction)signOut:(id)sender {
      [GIDSignIn.sharedInstance signOut];
    }
    

পরবর্তী পদক্ষেপ

এখন ব্যবহারকারীরা তাদের Google অ্যাকাউন্ট ব্যবহার করে আপনার অ্যাপে সাইন ইন করতে পারবেন, কীভাবে করবেন তা শিখুন: