আপনি Firebase-এ তৈরি একটি Apple প্ল্যাটফর্ম গেমে খেলোয়াড়দের সাইন ইন করতে Game Center ব্যবহার করতে পারেন। Firebase-এর সাথে Game Center সাইন-ইন ব্যবহার করতে, প্রথমে নিশ্চিত করুন যে স্থানীয় খেলোয়াড় Game Center-এর সাথে সাইন ইন করেছেন, এবং তারপর GameCenterAuthProvider অবজেক্ট ব্যবহার করে একটি Firebase শংসাপত্র তৈরি করুন, যা আপনি Firebase-এর সাথে প্রমাণীকরণ করতে ব্যবহার করতে পারেন।
শুরু করার আগে
ফায়ারবেস নির্ভরতা ইনস্টল এবং পরিচালনা করতে সুইফট প্যাকেজ ম্যানেজার ব্যবহার করুন।
- Xcode-এ, আপনার অ্যাপ প্রজেক্ট খোলা থাকা অবস্থায়, File > Add Packages- এ নেভিগেট করুন।
- অনুরোধ করা হলে, Firebase Apple platforms SDK সংগ্রহস্থল যোগ করুন:
- Firebase Authentication লাইব্রেরিটি বেছে নিন।
- আপনার টার্গেটের বিল্ড সেটিংসের অন্যান্য লিঙ্কার ফ্ল্যাগ বিভাগে
-ObjCফ্ল্যাগ যোগ করুন। - শেষ হয়ে গেলে, Xcode স্বয়ংক্রিয়ভাবে ব্যাকগ্রাউন্ডে আপনার নির্ভরতাগুলি সমাধান এবং ডাউনলোড করা শুরু করবে।
https://github.com/firebase/firebase-ios-sdk.git
এরপর, কিছু কনফিগারেশন ধাপ সম্পাদন করুন:
- আপনার অ্যাপল অ্যাপটি Firebase-এ নিবন্ধন করুন। এর অর্থ হল নিবন্ধন বিভাগে আপনার অ্যাপের বান্ডেল আইডি এবং অ্যাপ স্টোর আইডি এবং টিম আইডি ইত্যাদির মতো অতিরিক্ত ঐচ্ছিক তথ্য প্রবেশ করানো। সাইন-ইন সম্পূর্ণ করার আগে ব্যবহারকারীর গেম সেন্টার শংসাপত্রের দর্শকদের নিরাপদে যাচাই করার জন্য এটি প্রয়োজন হবে।
- আপনার Firebase প্রকল্পের জন্য সাইন-ইন প্রদানকারী হিসেবে Game Center সক্ষম করুন:
- Firebase কনসোলে , প্রমাণীকরণ বিভাগটি খুলুন।
- সাইন ইন পদ্ধতি ট্যাবে, গেম সেন্টার সাইন-ইন প্রদানকারী সক্ষম করুন।
আপনার গেমে গেম সেন্টার সাইন-ইন ইন্টিগ্রেট করুন
প্রথমত, যদি আপনার গেমটি ইতিমধ্যেই গেম সেন্টার ব্যবহার না করে, তাহলে অ্যাপল ডেভেলপার সাইটে "আপনার গেমে গেম সেন্টার অন্তর্ভুক্ত করুন" এবং "ডিভাইসের স্থানীয় প্লেয়ারকে প্রমাণীকরণ করুন" বিভাগে নির্দেশাবলী অনুসরণ করুন।
নিশ্চিত করুন যে আপনি iTunes Connect-এ যে বান্ডেল আইডি প্রদান করেছেন তা আপনার Firebase প্রোজেক্টের সাথে আপনার অ্যাপ সংযুক্ত করার সময় ব্যবহৃত বান্ডেল আইডির সাথে মিলে যাচ্ছে।
আপনার গেম সেন্টার ইন্টিগ্রেশনের অংশ হিসেবে, আপনি একটি প্রমাণীকরণ হ্যান্ডলার সংজ্ঞায়িত করেন যা গেম সেন্টার প্রমাণীকরণ প্রক্রিয়ার একাধিক পয়েন্টে কল করা হয়। এই হ্যান্ডলারে, প্লেয়ারটি গেম সেন্টার দিয়ে সাইন ইন করা আছে কিনা তা পরীক্ষা করুন। যদি তাই হয়, তাহলে আপনি Firebase-এ সাইন ইন করা চালিয়ে যেতে পারেন।
সুইফট
let localPlayer = GKLocalPlayer.localPlayer() localPlayer.authenticateHandler = { (gcAuthViewController?, error) in if let gcAuthViewController = gcAuthViewController { // Pause any activities that require user interaction, then present the // gcAuthViewController to the player. } else if localPlayer.isAuthenticated { // Player is signed in to Game Center. Get Firebase credentials from the // player's Game Center credentials (see below). } else { // Error } }
অবজেক্টিভ-সি
__weak GKLocalPlayer *localPlayer = [GKLocalPlayer localPlayer]; localPlayer.authenticateHandler = ^(UIViewController *gcAuthViewController, NSError *error) { if (gcAuthViewController != nil) { // Pause any activities that require user interaction, then present the // gcAuthViewController to the player. } else if (localPlayer.isAuthenticated) { // Player is signed in to Game Center. Get Firebase credentials from the // player's Game Center credentials (see below). } else { // Error } };
Firebase দিয়ে প্রমাণীকরণ করুন
স্থানীয় প্লেয়ারটি গেম সেন্টারে সাইন ইন করেছে কিনা তা নির্ধারণ করার পরে, GameCenterAuthProvider.getCredential() দিয়ে একটি AuthCredential অবজেক্ট তৈরি করে এবং সেই অবজেক্টটি signIn(with:) এ পাস করে প্লেয়ারটিকে আপনার গেমে সাইন ইন করুন:
সুইফট
// Get Firebase credentials from the player's Game Center credentials GameCenterAuthProvider.getCredential() { (credential, error) in if let error = error { return } // The credential can be used to sign in, or re-auth, or link or unlink. Auth.auth().signIn(with:credential) { (user, error) in if let error = error { return } // Player is signed in! }
অবজেক্টিভ-সি
// Get Firebase credentials from the player's Game Center credentials [FIRGameCenterAuthProvider getCredentialWithCompletion:^(FIRAuthCredential *credential, NSError *error) { // The credential can be used to sign in, or re-auth, or link or unlink. if (error == nil) { [[FIRAuth auth] signInWithCredential:credential completion:^(FIRUser *user, NSError *error) { // If error is nil, player is signed in. }]; } }];
পরবর্তী পদক্ষেপ
একজন ব্যবহারকারী প্রথমবার সাইন ইন করার পর, একটি নতুন ব্যবহারকারী অ্যাকাউন্ট তৈরি করা হয় এবং তাদের গেম সেন্টার আইডির সাথে লিঙ্ক করা হয়। এই নতুন অ্যাকাউন্টটি আপনার ফায়ারবেস প্রকল্পের অংশ হিসাবে সংরক্ষণ করা হয় এবং আপনার প্রকল্পের প্রতিটি অ্যাপ জুড়ে একজন ব্যবহারকারীকে সনাক্ত করতে ব্যবহার করা যেতে পারে।
আপনার গেমে, আপনি User অবজেক্ট থেকে ব্যবহারকারীর Firebase UID পেতে পারেন:
সুইফট
let user = Auth.auth().currentUser if let user = user { let playerName = user.displayName // The user's ID, unique to the Firebase project. // Do NOT use this value to authenticate with your backend server, // if you have one. Use getToken(with:) instead. let uid = user.uid }
অবজেক্টিভ-সি
FIRUser *user = [FIRAuth auth].currentUser; if (user) { NSString *playerName = user.displayName; // The user's ID, unique to the Firebase project. // Do NOT use this value to authenticate with your backend server, // if you have one. Use getTokenWithCompletion:completion: instead. NSString *uid = user.uid; }
আপনার Firebase রিয়েলটাইম ডেটাবেস এবং ক্লাউড স্টোরেজ সুরক্ষা নিয়মে, আপনি auth ভেরিয়েবল থেকে সাইন-ইন করা ব্যবহারকারীর অনন্য ব্যবহারকারী আইডি পেতে পারেন এবং ব্যবহারকারী কোন ডেটা অ্যাক্সেস করতে পারবেন তা নিয়ন্ত্রণ করতে এটি ব্যবহার করতে পারেন।
ব্যবহারকারীর গেম সেন্টার প্লেয়ারের তথ্য পেতে বা গেম সেন্টার পরিষেবা অ্যাক্সেস করতে, গেম কিট দ্বারা প্রদত্ত API গুলি ব্যবহার করুন।
Firebase থেকে একজন ব্যবহারকারীকে সাইন আউট করতে, Auth.signOut() এ কল করুন:
সুইফট
let firebaseAuth = Auth.auth() do { try firebaseAuth.signOut() } catch let signOutError as NSError { print ("Error signing out: %@", signOutError) }
অবজেক্টিভ-সি
NSError *signOutError; BOOL status = [[FIRAuth auth] signOut:&signOutError]; if (!status) { NSLog(@"Error signing out: %@", signOutError); return; }