Firebase iOS Codelab Swift

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

2efe6805ef369641.png

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

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

আপনি যা শিখবেন

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

আপনার যা লাগবে

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

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

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

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

নবীন ইন্টারমিডিয়েট দক্ষ

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

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

$ 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 কনসোল প্রজেক্ট তৈরি করুন

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

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

1b54d5bd2f4f1448.png

Google সাইন ইন এর জন্য clientID সেট করুন

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

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
}

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

একবার গুগল সাইন-ইন এর ফলাফল সফল হলে, ফায়ারবেস দিয়ে প্রমাণীকরণের জন্য অ্যাকাউন্টটি ব্যবহার করুন।

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. আপনাকে অবিলম্বে সাইন-ইন স্ক্রিনে পাঠানো উচিত। গুগল সাইন-ইন বোতামটি আলতো চাপুন।
  3. সবকিছু ঠিকঠাক থাকলে আপনাকে মেসেজিং স্ক্রিনে পাঠানো উচিত।

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

2efe6805ef369641.png

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

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

20ccf4856b715b4c.png

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

f3e0367f1c9cd187.png

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

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

পডফিল

pod 'Firebase/Database'

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

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

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

  • ফায়ারবেস ডাটাবেস শুরু করুন এবং ডাটাবেসে করা পরিবর্তনগুলি পরিচালনা করতে একটি শ্রোতা যুক্ত করুন।
  • আপডেট করুন 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'

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

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

b0438b37a588bcee.png

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

c290bbebff2cafa7.png

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

FCViewController.swift

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

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

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

আপনার 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. ইমেজ বার্তা পাঠান

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

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

আপনার 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. একটি ছবি বাছতে "একটি ছবি যোগ করুন" আইকনে ক্লিক করুন। ফটো সহ নতুন বার্তাটি অ্যাপ ইউআই এবং ফায়ারবেস কনসোলে দৃশ্যমান হওয়া উচিত।

10. অভিনন্দন!

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

যা আমরা েকে রেখেছি

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

আরো জানুন