Firebase iOS Codelab Swift

1। সংক্ষিপ্ত বিবরণ

2efe6805ef369641.png

বন্ধুত্বপূর্ণ চ্যাট কোডল্যাবে স্বাগতম। এই কোডল্যাবে, আপনি শিখবেন কিভাবে iOS অ্যাপ্লিকেশন তৈরি করতে Firebase প্ল্যাটফর্ম ব্যবহার করতে হয়। আপনি একটি চ্যাট ক্লায়েন্ট বাস্তবায়ন করবেন এবং Firebase ব্যবহার করে এর কর্মক্ষমতা নিরীক্ষণ করবেন।

এই কোডল্যাব অবজেক্টিভ-সি-তেও পাওয়া যায়।

আপনি কি শিখবেন

  • ব্যবহারকারীদের সাইন ইন করার অনুমতি দিন।
  • Firebase রিয়েলটাইম ডেটাবেস ব্যবহার করে ডেটা সিঙ্ক করুন।
  • ফায়ারবেস স্টোরেজে বাইনারি ফাইল সংরক্ষণ করুন।

আপনি কি প্রয়োজন হবে

  • এক্সকোড
  • কোকোপডস
  • iOS 8.0+ বা সিমুলেটর সহ একটি পরীক্ষামূলক ডিভাইস

আপনি কিভাবে এই টিউটোরিয়াল ব্যবহার করবেন?

শুধুমাত্র মাধ্যমে এটি পড়ুন এটি পড়ুন এবং অনুশীলনগুলি সম্পূর্ণ করুন

আইওএস অ্যাপ তৈরির বিষয়ে আপনার অভিজ্ঞতাকে কীভাবে মূল্যায়ন করবেন?

নবজাতক মধ্যবর্তী দক্ষ

2. নমুনা কোড পান

কমান্ড লাইন থেকে GitHub সংগ্রহস্থল ক্লোন করুন।

$ git clone https://github.com/firebase/codelab-friendlychat-ios

3. স্টার্টার অ্যাপ তৈরি করুন

2f4c98d858c453fe.png

স্টার্টার অ্যাপ তৈরি করতে:

  1. একটি টার্মিনাল উইন্ডোতে, নেভিগেট করুন android_studio_folder.png ios-starter/swift-starter আপনার নমুনা কোড ডাউনলোড থেকে ডিরেক্টরির
  2. চালান pod install --repo-update
  3. Xcode-এ প্রকল্পটি খুলতে FriendlyChatSwift.xcworkspace ফাইলটি খুলুন।
  4. ক্লিক করুন 98205811bbed9d74.png রান বোতাম।

আপনি কয়েক সেকেন্ড পরে বন্ধুত্বপূর্ণ চ্যাট হোম স্ক্রীনটি দেখতে পাবেন। UI উপস্থিত হওয়া উচিত। যাইহোক, এই মুহুর্তে আপনি সাইন ইন, বার্তা পাঠাতে বা গ্রহণ করতে পারবেন না। আপনি পরবর্তী পদক্ষেপটি সম্পূর্ণ না করা পর্যন্ত অ্যাপটি একটি ব্যতিক্রমের সাথে বাতিল হয়ে যাবে।

4. ফায়ারবেস কনসোল প্রকল্প তৈরি করুন

প্রকল্প তৈরি করুন

থেকে Firebase কনসোল প্রকল্প যোগ নির্বাচন করুন।

প্রকল্পের ফোন করুন FriendlyChat , তারপর উপর ক্লিক প্রকল্প তৈরি করুন।

2015-11-06 14:13:39.png এর স্ক্রিনশট

আপনার iOS অ্যাপ সংযুক্ত করুন

  1. আপনার নতুন প্রকল্পের প্রজেক্ট সারসংক্ষেপ স্ক্রীন থেকে, ক্লিক করুন আপনার iOS অ্যাপ্লিকেশন Firebase যুক্ত করো।
  2. , বান্ডিল আইডি লিখুন হিসাবে " com.google.firebase.codelab.FriendlyChatSwift "।
  3. "হিসাবে App স্টোর বা দোকান আইডি লিখুন 123456 "।
  4. নিবন্ধন অ্যাপ এ ক্লিক করুন।

আপনার অ্যাপে GoogleService-Info.plist ফাইল যোগ করুন

দ্বিতীয় পর্দা ক্লিক করে ডাউনলোড করুন GoogleService-Info.plist সব রয়েছে সেটা আপনার অ্যাপের জন্য প্রয়োজনীয় Firebase মেটাডেটা একটি কনফিগারেশন ফাইল ডাউনলোড করতে। আপনার অ্যাপ্লিকেশনে যে ফাইল কপি করুন এবং FriendlyChatSwift লক্ষ্য এটি যোগ করুন।

আপনি এখন এটিকে বন্ধ করতে পপআপের উপরের ডান কোণে "x"-এ ক্লিক করতে পারেন - ধাপ 3 এবং 4 এড়িয়ে যান - কারণ আপনি এখানে সেই পদক্ষেপগুলি সম্পাদন করবেন৷

19d59efb213ddbdc.png

ফায়ারবেস মডিউল আমদানি করুন

নিশ্চিত করার মাধ্যমে শুরু Firebase মডিউল আমদানি করা হয়।

AppDelegate.swift , FCViewController.swift

import Firebase

AppDelegate এ Firebase কনফিগার করুন

আপনার .plist ফাইল থেকে অন্তর্নিহিত Firebase পরিষেবাগুলি কনফিগার করতে অ্যাপ্লিকেশনের ভিতরে FirebaseApp-এ "কনফিগার" পদ্ধতি ব্যবহার করুন:didFinishLaunchingWithOptions ফাংশন।

AppDelegate.swift

  func application(_ application: UIApplication, didFinishLaunchingWithOptions
      launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
  FirebaseApp.configure()
  GIDSignIn.sharedInstance().delegate = self
  return true
}

5. ব্যবহারকারীদের সনাক্ত করুন

প্রমাণীকৃত ব্যবহারকারীদের জন্য সীমাবদ্ধ করার নিয়ম ব্যবহার করুন

আমরা এখন একটি নিয়ম যোগ করব যাতে কোনো বার্তা পড়ার বা লেখার আগে প্রমাণীকরণের প্রয়োজন হয়। এটি করার জন্য আমরা আমাদের বার্তা ডেটা অবজেক্টে নিম্নলিখিত নিয়মগুলি যুক্ত করি। এর ডাটাবেজ বিভাগে থেকে Firebase কনসোল রিয়েলটাইম ডাটাবেস নির্বাচন করুন, তারপর বিধি ট্যাবে ক্লিক করুন। তারপরে নিয়মগুলি আপডেট করুন যাতে সেগুলি এইরকম দেখায়:

{
  "rules": {
    "messages": {
      ".read": "auth != null",
      ".write": "auth != null"
    }
  }
}

কিভাবে এই কাজ ( "প্রমাণীকরণ" পরিবর্তনশীল উপর ডকুমেন্টেশন সহ) Firebase দেখতে আরও তথ্যের জন্য নিরাপত্তা ডকুমেন্টেশন

প্রমাণীকরণ API কনফিগার করুন

আপনার অ্যাপ্লিকেশন আপনার ব্যবহারকারীদের পক্ষ থেকে Firebase প্রমাণীকরণ API গুলি অ্যাক্সেস করার আগে, আপনাকে এটি সক্ষম করতে হবে

  1. নেভিগেট করুন Firebase কনসোল এবং আপনার প্রকল্পের নির্বাচন
  2. প্রমাণীকরণ নির্বাচন
  3. সাইন ইন পদ্ধতি ট্যাবটি নির্বাচন করুন
  4. সক্রিয় (নীল) করার জন্য Google সুইচ টগল
  5. ফলে ডায়ালগ টিপুন সংরক্ষণ

আপনি যদি এই কোডল্যাবে পরে "CONFIGURATION_NOT_FOUND" বার্তা সহ ত্রুটি পান, তাহলে এই ধাপে ফিরে আসুন এবং আপনার কাজটি দুবার পরীক্ষা করুন৷

Firebase Auth নির্ভরতা নিশ্চিত করুন

নিশ্চিত করুন Firebase প্রমাণীকরণ নির্ভরতা মধ্যে উপস্থিত Podfile ফাইল।

পডফাইল

pod 'Firebase/Auth'

Google সাইন ইনের জন্য আপনার Info.plist সেট আপ করুন৷

আপনাকে আপনার XCode প্রকল্পে একটি কাস্টম URL স্কিম যোগ করতে হবে।

  1. আপনার প্রজেক্ট কনফিগারেশন খুলুন: বাম ট্রি ভিউতে প্রজেক্টের নামে ডাবল ক্লিক করুন। লক্ষ্য বিভাগ থেকে আপনার অ্যাপটি নির্বাচন করুন, তারপর তথ্য ট্যাবটি নির্বাচন করুন এবং URL প্রকার বিভাগটি প্রসারিত করুন৷
  2. + বোতামে ক্লিক করুন এবং আপনার বিপরীত ক্লায়েন্ট আইডির জন্য একটি URL স্কিম যোগ করুন। এই মানটি খুঁজে পেতে, GoogleService-Info.plist কনফিগারেশন ফাইলটি খুলুন এবং REVERSED_CLIENT_ID কীটি সন্ধান করুন৷ সেই কীটির মান কপি করুন এবং কনফিগারেশন পৃষ্ঠার URL স্কিম বক্সে পেস্ট করুন। অন্যান্য ক্ষেত্রগুলি ফাঁকা রাখুন।
  3. সম্পন্ন হলে, আপনার কনফিগারেশনটি নিম্নলিখিতগুলির মতো দেখতে হবে (কিন্তু আপনার অ্যাপ্লিকেশন-নির্দিষ্ট মানগুলির সাথে):

1b54d5bd2f4f1448.png

Google সাইন ইনের জন্য ক্লায়েন্ট আইডি সেট করুন

Firebase কনফিগার করার পরে, আমরা "didFinishLaunchingWithOptions:" পদ্ধতিতে Google সাইন ইন সেট আপ করতে ক্লায়েন্টআইডি ব্যবহার করতে পারি।

AppDelegate.swift

  func application(_ application: UIApplication, didFinishLaunchingWithOptions
      launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
  FirebaseApp.configure()
  GIDSignIn.sharedInstance().clientID = FirebaseApp.app()?.options.clientID
  GIDSignIn.sharedInstance().delegate = self
  return true
}

সাইন ইন হ্যান্ডলার যোগ করুন

Google সাইন-ইন-এর ফলাফল সফল হলে, Firebase-এর সাথে প্রমাণীকরণ করতে অ্যাকাউন্টটি ব্যবহার করুন।

AppDelegate.swift

  func sign(_ signIn: GIDSignIn!, didSignInFor user: GIDGoogleUser!, withError error: Error?) {
    if let error = error {
      print("Error \(error)")
      return
    }

    guard let authentication = user.authentication else { return }
    let credential = GoogleAuthProvider.credential(withIDToken: authentication.idToken,
                                                      accessToken: authentication.accessToken)
    Auth.auth().signIn(with: credential) { (user, error) in
      if let error = error {
        print("Error \(error)")
        return
      }
    }
  }

স্বয়ংক্রিয়ভাবে ব্যবহারকারী সাইন ইন করুন. তারপর Firebase Auth-এ একজন শ্রোতা যোগ করুন, যাতে সফলভাবে সাইন ইন করার পর ব্যবহারকারীকে অ্যাপে ঢুকতে দেয়। এবং deinit-এ শ্রোতাকে সরিয়ে দিন।

SignInViewController.swift

  override func viewDidLoad() {
    super.viewDidLoad()
    GIDSignIn.sharedInstance().uiDelegate = self
    GIDSignIn.sharedInstance().signInSilently()
    handle = Auth.auth().addStateDidChangeListener() { (auth, user) in
      if user != nil {
        MeasurementHelper.sendLoginEvent()
        self.performSegue(withIdentifier: Constants.Segues.SignInToFp, sender: nil)
      }
    }
  }

  deinit {
    if let handle = handle {
      Auth.auth().removeStateDidChangeListener(handle)
    }
  }

সাইন আউট

সাইন আউট পদ্ধতি যোগ করুন

FCViewController.swift

  @IBAction func signOut(_ sender: UIButton) {
    let firebaseAuth = Auth.auth()
    do {
      try firebaseAuth.signOut()
      dismiss(animated: true, completion: nil)
    } catch let signOutError as NSError {
      print ("Error signing out: \(signOutError.localizedDescription)")
    }
  }

সাইন ইন করা ব্যবহারকারী হিসাবে বার্তা পড়ার পরীক্ষা করুন

  1. ক্লিক করুন 98205811bbed9d74.png রান বোতাম।
  2. আপনাকে অবিলম্বে সাইন-ইন স্ক্রিনে পাঠানো উচিত। Google সাইন-ইন বোতামে ট্যাপ করুন।
  3. সবকিছু ঠিকঠাক থাকলে আপনাকে মেসেজিং স্ক্রিনে পাঠানো উচিত।

6. রিয়েলটাইম ডেটাবেস সক্রিয় করুন

2efe6805ef369641.png

বার্তা আমদানি করুন

আপনার প্রকল্পে Firebase কনসোল বাঁদিকের ন্যাভিগেশন বারের উপর ডাটাবেস আইটেম নির্বাচন করুন। ডাটাবেজ এর ওভারফ্লো মেনুতে আমদানি তাদেরকে JSON নির্বাচন করুন। করতে ব্রাউজ initial_messages.json friendlychat ডিরেক্টরির মধ্যে ফাইল, তাহলে আমদানি বাটন ক্লিক করুন নির্বাচন করুন। এটি বর্তমানে আপনার ডাটাবেসে থাকা যেকোনো ডেটা প্রতিস্থাপন করবে। আপনি ডাটাবেস সরাসরি সম্পাদনা করতে পারেন, সবুজ + এবং লাল x ব্যবহার করে আইটেমগুলি যোগ এবং অপসারণ করতে পারেন।

20ccf4856b715b4c.png

আপনার ডাটাবেস আমদানি করার পরে এই মত হওয়া উচিত:

f3e0367f1c9cd187.png

ফায়ারবেস ডাটাবেস নির্ভরতা নিশ্চিত করুন

এর নির্ভরতা ব্লক ইন Podfile ফাইল, নিশ্চিত যে Firebase/Database অন্তর্ভুক্ত করা হয়।

পডফাইল

pod 'Firebase/Database'

বিদ্যমান বার্তাগুলি সিঙ্ক্রোনাইজ করুন

অ্যাপ UI-তে নতুন যোগ করা বার্তাগুলিকে সিঙ্ক্রোনাইজ করে এমন কোড যোগ করুন।

এই বিভাগে আপনি যে কোডটি যোগ করবেন তা হবে:

  • ফায়ারবেস ডাটাবেস শুরু করুন এবং ডাটাবেসে করা পরিবর্তনগুলি পরিচালনা করতে একজন শ্রোতা যোগ করুন।
  • আপডেট করুন DataSnapshot সুতরাং নতুন বার্তাগুলিকে দেখানো হবে।

আপনার FCViewController-এর "deinit", "configureDatabase" এবং "tableView:cellForRow indexPath:" পদ্ধতিগুলি পরিবর্তন করুন; নীচে সংজ্ঞায়িত কোড দিয়ে প্রতিস্থাপন করুন:

FCViewController.swift

  deinit {
    if let refHandle = _refHandle {
      self.ref.child("messages").removeObserver(withHandle: _refHandle)
    }
  }


  func configureDatabase() {
    ref = Database.database().reference()
    // Listen for new messages in the Firebase database
    _refHandle = self.ref.child("messages").observe(.childAdded, with: { [weak self] (snapshot) -> Void in
      guard let strongSelf = self else { return }
      strongSelf.messages.append(snapshot)
      strongSelf.clientTable.insertRows(at: [IndexPath(row: strongSelf.messages.count-1, section: 0)], with: .automatic)
    })
  }


  func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    // Dequeue cell
    let cell = self.clientTable.dequeueReusableCell(withIdentifier: "tableViewCell", for: indexPath)
    // Unpack message from Firebase DataSnapshot
    let messageSnapshot = self.messages[indexPath.row]
    guard let message = messageSnapshot.value as? [String: String] else { return cell }
    let name = message[Constants.MessageFields.name] ?? ""
    let text = message[Constants.MessageFields.text] ?? ""
    cell.textLabel?.text = name + ": " + text
    cell.imageView?.image = UIImage(named: "ic_account_circle")
    if let photoURL = message[Constants.MessageFields.photoURL], let URL = URL(string: photoURL),
        let data = try? Data(contentsOf: URL) {
      cell.imageView?.image = UIImage(data: data)
    }
    return cell
  }

টেস্ট মেসেজ সিঙ্ক

  1. ক্লিক করুন 98205811bbed9d74.png রান বোতাম।
  2. ক্লিক করুন বার্তাগুলির উইন্ডোতে যান বাটন শুরু করতে সাইন ইন করুন।
  3. Firebase কনসোলে সরাসরি নতুন বার্তা যোগ করুন "বার্তা" এন্ট্রির পাশে সবুজ + চিহ্নে ক্লিক করে এবং নিচের মত একটি বস্তু যোগ করুন: f9876ffc8b316b14.png
  4. নিশ্চিত করুন যে তারা বন্ধুত্বপূর্ণ-চ্যাট UI-তে প্রদর্শিত হবে।

7. বার্তা পাঠান

বার্তা পাঠান প্রয়োগ করুন

ডাটাবেসে মান পুশ করুন। আপনি যখন ফায়ারবেস রিয়েলটাইম ডেটাবেসে ডেটা যোগ করার জন্য পুশ পদ্ধতি ব্যবহার করেন, তখন একটি স্বয়ংক্রিয় আইডি যোগ করা হবে। এই স্বয়ংক্রিয়ভাবে তৈরি আইডিগুলি অনুক্রমিক, যা নিশ্চিত করে যে নতুন বার্তাগুলি সঠিক ক্রমে যোগ করা হবে৷

আপনার FCViewController এর "sendMessage:" পদ্ধতি পরিবর্তন করুন; নীচে সংজ্ঞায়িত কোড দিয়ে প্রতিস্থাপন করুন:

FCViewController.swift

  func sendMessage(withData data: [String: String]) {
    var mdata = data
    mdata[Constants.MessageFields.name] = Auth.auth().currentUser?.displayName
    if let photoURL = Auth.auth().currentUser?.photoURL {
      mdata[Constants.MessageFields.photoURL] = photoURL.absoluteString
    }

    // Push data to Firebase Database
    self.ref.child("messages").childByAutoId().setValue(mdata)
  }

বার্তা পাঠানোর পরীক্ষা করুন

  1. ক্লিক করুন 98205811bbed9d74.png রান বোতাম।
  2. ক্লিক করুন বার্তা উইন্ডোতে যান সাইন ইন করুন।
  3. একটি বার্তা টাইপ করুন এবং পাঠান টিপুন। নতুন বার্তাটি অ্যাপ UI এবং Firebase কনসোলে দৃশ্যমান হওয়া উচিত।

8. সঞ্চয় এবং ছবি গ্রহণ

ফায়ারবেস স্টোরেজ নির্ভরতা নিশ্চিত করুন

এর নির্ভরতা ব্লক ইন Podfile নিশ্চিত Firebase/Storage অন্তর্ভুক্ত করা হয়।

পডফাইল

pod 'Firebase/Storage'

ড্যাশবোর্ডে ফায়ারবেস স্টোরেজ সক্রিয় করুন

Firebase কনসোলে যান এবং নিশ্চিত করুন যে স্টোরেজ "gs://PROJECTID.appspot.com" ডোমেনে সক্রিয় করা হয়েছে

b0438b37a588bcee.png

আপনি যদি পরিবর্তে অ্যাক্টিভেশন উইন্ডোটি দেখতে পান, তাহলে ডিফল্ট নিয়মের সাথে এটি সক্রিয় করতে "শুরু করুন" এ ক্লিক করুন।

c290bbebff2cafa7.png

FirebaseStorage কনফিগার করুন

FCViewController.swift

  func configureStorage() {
    storageRef = Storage.storage().reference()
  }

বিদ্যমান বার্তাগুলিতে ছবিগুলি গ্রহণ করুন৷

Firebase স্টোরেজ থেকে ছবি ডাউনলোড করে এমন কোড যোগ করুন।

আপনার FCViewController-এর "tableView: cellForRowAt indexPath:" পদ্ধতি পরিবর্তন করুন; নীচে সংজ্ঞায়িত কোড দিয়ে প্রতিস্থাপন করুন:

FCViewController.swift

  func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    // Dequeue cell
    let cell = self.clientTable .dequeueReusableCell(withIdentifier: "tableViewCell", for: indexPath)
    // Unpack message from Firebase DataSnapshot
    let messageSnapshot: DataSnapshot! = self.messages[indexPath.row]
    guard let message = messageSnapshot.value as? [String:String] else { return cell }
    let name = message[Constants.MessageFields.name] ?? ""
    if let imageURL = message[Constants.MessageFields.imageURL] {
      if imageURL.hasPrefix("gs://") {
        Storage.storage().reference(forURL: imageURL).getData(maxSize: INT64_MAX) {(data, error) in
          if let error = error {
            print("Error downloading: \(error)")
            return
          }
          DispatchQueue.main.async {
            cell.imageView?.image = UIImage.init(data: data!)
            cell.setNeedsLayout()
          }
        }
      } else if let URL = URL(string: imageURL), let data = try? Data(contentsOf: URL) {
        cell.imageView?.image = UIImage.init(data: data)
      }
      cell.textLabel?.text = "sent by: \(name)"
    } else {
      let text = message[Constants.MessageFields.text] ?? ""
      cell.textLabel?.text = name + ": " + text
      cell.imageView?.image = UIImage(named: "ic_account_circle")
      if let photoURL = message[Constants.MessageFields.photoURL], let URL = URL(string: photoURL),
          let data = try? Data(contentsOf: URL) {
        cell.imageView?.image = UIImage(data: data)
      }
    }
    return cell
  }

9. ইমেজ বার্তা পাঠান

স্টোর বাস্তবায়ন করুন এবং ছবি পাঠান

ব্যবহারকারীর কাছ থেকে একটি ছবি আপলোড করুন, তারপর এই ছবিটির স্টোরেজ URL ডাটাবেসে সিঙ্ক করুন যাতে এই ছবিটি বার্তার ভিতরে পাঠানো হয়।

আপনার FCViewController-এর "imagePickerController: didFinishPickingMediaWithInfo:" পদ্ধতি পরিবর্তন করুন; নীচে সংজ্ঞায়িত কোড দিয়ে প্রতিস্থাপন করুন:

FCViewController.swift

  func imagePickerController(_ picker: UIImagePickerController,
    didFinishPickingMediaWithInfo info: [String : Any]) {
      picker.dismiss(animated: true, completion:nil)
    guard let uid = Auth.auth().currentUser?.uid else { return }

    // if it's a photo from the library, not an image from the camera
    if #available(iOS 8.0, *), let referenceURL = info[UIImagePickerControllerReferenceURL] as? URL {
      let assets = PHAsset.fetchAssets(withALAssetURLs: [referenceURL], options: nil)
      let asset = assets.firstObject
      asset?.requestContentEditingInput(with: nil, completionHandler: { [weak self] (contentEditingInput, info) in
        let imageFile = contentEditingInput?.fullSizeImageURL
        let filePath = "\(uid)/\(Int(Date.timeIntervalSinceReferenceDate * 1000))/\((referenceURL as AnyObject).lastPathComponent!)"
        guard let strongSelf = self else { return }
        strongSelf.storageRef.child(filePath)
          .putFile(from: imageFile!, metadata: nil) { (metadata, error) in
            if let error = error {
              let nsError = error as NSError
              print("Error uploading: \(nsError.localizedDescription)")
              return
            }
            strongSelf.sendMessage(withData: [Constants.MessageFields.imageURL: strongSelf.storageRef.child((metadata?.path)!).description])
          }
      })
    } else {
      guard let image = info[UIImagePickerControllerOriginalImage] as? UIImage else { return }
      let imageData = UIImageJPEGRepresentation(image, 0.8)
      let imagePath = "\(uid)/\(Int(Date.timeIntervalSinceReferenceDate * 1000)).jpg"
      let metadata = StorageMetadata()
      metadata.contentType = "image/jpeg"
      self.storageRef.child(imagePath)
        .putData(imageData!, metadata: metadata) { [weak self] (metadata, error) in
          if let error = error {
            print("Error uploading: \(error)")
            return
          }
          guard let strongSelf = self else { return }
          strongSelf.sendMessage(withData: [Constants.MessageFields.imageURL: strongSelf.storageRef.child((metadata?.path)!).description])
      }
    }
  }

ইমেজ মেসেজ পাঠানো এবং গ্রহণ করা পরীক্ষা করুন

  1. ক্লিক করুন 98205811bbed9d74.png রান বোতাম।
  2. ক্লিক করুন বার্তা উইন্ডোতে যান সাইন ইন করুন।
  3. একটি ছবি বাছাই করতে "একটি ফটো যোগ করুন" আইকনে ক্লিক করুন। ফটো সহ নতুন বার্তাটি অ্যাপ UI এবং Firebase কনসোলে দৃশ্যমান হওয়া উচিত।

10. অভিনন্দন!

আপনি সহজেই একটি রিয়েল-টাইম চ্যাট অ্যাপ্লিকেশন তৈরি করতে Firebase ব্যবহার করেছেন।

আমরা কভার করেছি কি

  • রিয়েলটাইম ডাটাবেস
  • ফেডারেটেড সাইন ইন
  • স্টোরেজ

আরও জানুন