গ্রেডল ইম্পোর্ট আপডেট করুন
নতুন SDK-তে প্রতিটি ML Kit API-এর জন্য শুধুমাত্র একটি ডিপেন্ডেন্সি প্রয়োজন। আপনাকে firebase-ml-vision বা firebase-ml-natural-language এর মতো সাধারণ লাইব্রেরিগুলো নির্দিষ্ট করার প্রয়োজন নেই। যেসব লাইব্রেরি Google Play Services-এর উপর নির্ভরশীল, ML Kit সেগুলোর জন্য com.google.android.gms নেমস্পেস ব্যবহার করে।
ভিশন এপিআই
বান্ডেল মডেলগুলো আপনার অ্যাপ্লিকেশনের অংশ হিসেবে সরবরাহ করা হয়। থিন মডেলগুলো ডাউনলোড করতে হয়। কিছু এপিআই বান্ডেল এবং থিন উভয় রূপেই পাওয়া যায়, অন্যগুলো কেবল একটি রূপে উপলব্ধ:
| এপিআই | বান্ডিল | পাতলা |
|---|---|---|
| পাঠ্য শনাক্তকরণ | x (বিটা) | x |
| মুখ শনাক্তকরণ | x | x |
| বারকোড স্ক্যানিং | x | x |
| ছবির লেবেলিং | x | x |
| বস্তু সনাক্তকরণ এবং ট্র্যাকিং | x | - |
নিম্নলিখিত সারণি অনুসারে আপনার মডিউল (অ্যাপ-লেভেল) গ্রেডল ফাইলে (সাধারণত app/build.gradle ) এমএল কিট অ্যান্ড্রয়েড লাইব্রেরির নির্ভরতাগুলো আপডেট করুন:
বান্ডেল মডেল
| এপিআই | পুরানো নিদর্শন | নতুন নিদর্শন |
|---|---|---|
| বারকোড স্ক্যানিং | com.google.firebase:firebase-ml-vision:24.0.1 com.google.firebase:firebase-ml-vision-barcode-model:16.0.1 | com.google.mlkit:barcode-scanning:17.3.0 |
| মুখের কনট্যুর | com.google.firebase:firebase-ml-vision:24.0.1 com.google.firebase:firebase-ml-vision-face-model:19.0.0 | com.google.mlkit:face-detection:16.1.7 |
| ছবির লেবেলিং | com.google.firebase:firebase-ml-vision:24.0.1 com.google.firebase:firebase-ml-vision-image-label-model:19.0.0 | com.google.mlkit:image-labeling:17.0.9 |
| বস্তু সনাক্তকরণ | com.google.firebase:firebase-ml-vision:24.0.1 com.google.firebase:firebase-ml-vision-object-detection-model:19.0.3 | com.google.mlkit:object-detection:17.0.2 |
পাতলা মডেল
| এপিআই | পুরানো নিদর্শন | নতুন নিদর্শন |
|---|---|---|
| বারকোড স্ক্যানিং | com.google.firebase:firebase-ml-vision:24.0.1 | com.google.android.gms:play-services-mlkit-barcode-scanning:18.3.1 |
| মুখ শনাক্তকরণ | com.google.firebase:firebase-ml-vision:24.0.1 | com.google.android.gms:play-services-mlkit-face-detection:17.1.0 |
| পাঠ্য শনাক্তকরণ | com.google.firebase:firebase-ml-vision:24.0.1 | com.google.android.gms:play-services-mlkit-text-recognition:19.0.1 |
অটোএমএলভিশন এজ
| এপিআই | পুরানো নিদর্শন | নতুন নিদর্শন |
|---|---|---|
| ডাউনলোড ছাড়াই অটোএমএল | com.google.firebase:firebase-ml-vision:24.0.1 com.google.firebase:firebase-ml-vision-automl:18.0.3 | com.google.mlkit:image-labeling-custom:17.0.3 |
| ডাউনলোড সহ অটোএমএল | com.google.firebase:firebase-ml-vision:24.0.1 com.google.firebase:firebase-ml-vision-automl:18.0.3 | com.google.mlkit:image-labeling-custom:17.0.3 com.google.mlkit:linkfirebase:17.0.0 |
প্রাকৃতিক ভাষা এপিআই
বান্ডেল মডেলগুলো আপনার অ্যাপ্লিকেশনের অংশ হিসেবে সরবরাহ করা হয়। থিন মডেলগুলো ডাউনলোড করতে হবে:
| এপিআই | বান্ডিল | পাতলা |
|---|---|---|
| ভাষা আইডি | x | x |
| স্মার্ট উত্তর | x | x (বিটা) |
নিম্নলিখিত সারণি অনুসারে আপনার মডিউল (অ্যাপ-লেভেল) গ্রেডল ফাইলে (সাধারণত app/build.gradle ) এমএল কিট অ্যান্ড্রয়েড লাইব্রেরির নির্ভরতাগুলো আপডেট করুন:
বান্ডেল মডেল
| এপিআই | পুরানো নিদর্শন | নতুন নিদর্শন |
|---|---|---|
| ভাষা আইডি | com.google.firebase:firebase-ml-natural-language:22.0.0 com.google.firebase:firebase-ml-natural-language-language-id-model:20.0.7 | com.google.mlkit:language-id:17.0.6 |
| স্মার্ট উত্তর | com.google.firebase:firebase-ml-natural-language:22.0.0 com.google.firebase:firebase-ml-natural-language-smart-reply-model:20.0.7 | com.google.mlkit:smart-reply:17.0.4 |
পাতলা মডেল
| এপিআই | পুরানো নিদর্শন | নতুন নিদর্শন |
|---|---|---|
| ভাষা আইডি | com.google.firebase:firebase-ml-natural-language:22.0.0 com.google.firebase:firebase-ml-natural-language-language-id-model:20.0.7 | com.google.android.gms:play-services-mlkit-language-id:17.0.0 |
| স্মার্ট উত্তর | com.google.firebase:firebase-ml-natural-language:22.0.0 com.google.firebase:firebase-ml-natural-language-smart-reply-model:20.0.7 | com.google.android.gms:play-services-mlkit-smart-reply:16.0.0-beta1 |
ক্লাসের নাম আপডেট করুন
যদি আপনার ক্লাসটি এই সারণিতে থাকে, তাহলে নির্দেশিত পরিবর্তনটি করুন:
| পুরানো শ্রেণী | নতুন শ্রেণী |
|---|---|
| com.google.firebase.ml.common.FirebaseMLException | com.google.mlkit.common.MlKitException |
| com.google.firebase.ml.vision.common.FirebaseVisionImage | com.google.mlkit.vision.common.InputImage |
| com.google.firebase.ml.vision.barcode.FirebaseVisionBarcodeDetector | com.google.mlkit.vision.barcode.BarcodeScanner |
| com.google.firebase.ml.vision.labeler.FirebaseVisionImageLabel | com.google.mlkit.vision.label.ImageLabeler |
| com.google.firebase.ml.vision.barcode.FirebaseVisionBarcodeDetector | com.google.mlkit.vision.barcode.BarcodeScanner |
| com.google.firebase.ml.vision.automl.FirebaseAutoMLLocalModel | com.google.mlkit.common.model.LocalModel |
| com.google.firebase.ml.vision.automl.FirebaseAutoMLRemoteModel | com.google.mlkit.common.model.CustomRemoteModel |
| com.google.firebase.ml.vision.label.FirebaseVisionOnDeviceImageLabelerOptions | com.google.mlkit.vision.label.defaults.ImageLabelerOptions |
| com.google.firebase.ml.vision.label.FirebaseVisionImageLabel | com.google.mlkit.vision.label.ImageLabel |
| com.google.firebase.ml.vision.label.FirebaseVisionOnDeviceAutoMLImageLabelerOptions | com.google.mlkit.vision.label.custom.CustomImageLabelerOptions |
| com.google.firebase.ml.vision.objects.FirebaseVisionObjectDetectorOptions | com.google.mlkit.vision.objects.defaults.ObjectDetectorOptions |
অন্যান্য ক্লাসের জন্য এই নিয়মগুলো অনুসরণ করুন:
- ক্লাসের নাম থেকে
FirebaseVisionপ্রিফিক্সটি সরিয়ে দিন। - ক্লাস নেম থেকে
Firebaseপ্রিফিক্স দিয়ে শুরু হওয়া অন্যান্য প্রিফিক্সগুলো সরিয়ে দিন।
এছাড়াও, প্যাকেজের নামগুলিতে com.google.firebase.ml প্রিফিক্সটি com.google.mlkit দিয়ে প্রতিস্থাপন করুন।
পদ্ধতির নাম আপডেট করুন
কোডে সামান্য কিছু পরিবর্তন করা হয়েছে:
- ডিটেক্টর/স্ক্যানার/লেবেলার/ট্রান্সলেটর… ইনস্ট্যানসিয়েশন পরিবর্তন করা হয়েছে। এখন প্রতিটি ফিচারের নিজস্ব এন্ট্রি পয়েন্ট রয়েছে। উদাহরণস্বরূপ: বারকোড স্ক্যানিং, টেক্সট রিকগনিশন, ইমেজ লেবেলিং, ট্রান্সলেশন…। ফায়ারবেস সার্ভিসের
getInstance()কলগুলো এখন ফিচার এন্ট্রি পয়েন্টেরgetClient()মেথড কল দ্বারা প্রতিস্থাপিত হয়েছে। - TextRecognizer-এর ডিফল্ট ইনস্ট্যানসিয়েশন সরিয়ে দেওয়া হয়েছে, কারণ আমরা চীনা এবং কোরিয়ানের মতো অন্যান্য স্ক্রিপ্ট শনাক্ত করার জন্য অতিরিক্ত লাইব্রেরি চালু করেছি। ল্যাটিন স্ক্রিপ্ট টেক্সট রিকগনিশন মডেলের সাথে ডিফল্ট অপশনগুলো ব্যবহার করতে, অনুগ্রহ করে
com.google.android.gms:play-services-mlkit-text-recognitionএর উপর একটি ডিপেন্ডেন্সি ডিক্লেয়ার করুন এবংTextRecognition.getClient(TextRecognizerOptions.DEFAULT_OPTIONS)ব্যবহার করুন। - ImageLabeler এবং ObjectDetector-এর ডিফল্ট ইনস্ট্যানসিয়েশন সরিয়ে দেওয়া হয়েছে, কারণ আমরা এই দুটি ফিচারের জন্য কাস্টম মডেল সাপোর্ট চালু করেছি। উদাহরণস্বরূপ, ImageLabeling-এ বেস মডেলের সাথে ডিফল্ট অপশন ব্যবহার করতে, অনুগ্রহ করে
com.google.mlkit:image-labelingএর উপর একটি ডিপেন্ডেন্সি ডিক্লেয়ার করুন এবং জাভাতেImageLabeling.getClient(ImageLabelerOptions.DEFAULT_OPTIONS)ব্যবহার করুন। - সমস্ত হ্যান্ডেল (ডিটেক্টর/স্ক্যানার/লেবেলার/ট্রান্সলেটর…) বন্ধ করা যায়। নিশ্চিত করুন যে, যখন এই অবজেক্টগুলো আর ব্যবহার করা হবে না, তখন
close()মেথডটি কল করা হয়। যদি আপনি এগুলো কোনো Fragment বা AppCompatActivity-তে ব্যবহার করেন, তবে এটি করার একটি সহজ উপায় হলো Fragment বা AppCompatActivity-তে LifecycleOwner.getLifecycle() কল করা এবং তারপরে Lifecycle.addObserver কল করা। - সামঞ্জস্য রক্ষার জন্য ভিশন এপিআই-এর
processImage()এবংdetectInImage()নাম পরিবর্তন করেprocess()রাখা হয়েছে । - ন্যাচারাল ল্যাঙ্গুয়েজ এপিআইগুলো এখন “ল্যাঙ্গুয়েজ কোড”-এর পরিবর্তে ( বিসিপি ৪৭ স্ট্যান্ডার্ড দ্বারা সংজ্ঞায়িত) “ল্যাঙ্গুয়েজ ট্যাগ” পরিভাষাটি ব্যবহার করে।
- xxxOptions ক্লাসগুলো থেকে গেটার মেথডগুলো সরিয়ে দেওয়া হয়েছে।
- InputImage ক্লাসের (যা
FirebaseVisionImageপরিবর্তে ব্যবহৃত হয়) getBitmap() মেথডটি এখন আর পাবলিক ইন্টারফেসের অংশ হিসেবে সমর্থিত নয়। বিভিন্ন ইনপুট থেকে বিটম্যাপ রূপান্তর করার জন্য অনুগ্রহ করে ML Kit কুইকস্টার্ট স্যাম্পলেরBitmapUtils.javaফাইলটি দেখুন। - FirebaseVisionImageMetadata সরিয়ে ফেলা হয়েছে, এখন থেকে আপনি সরাসরি InputImages-এর কনস্ট্রাকশন মেথডগুলোতে ইমেজের মেটাডেটা যেমন—width, height, rotationDegrees, format পাস করতে পারবেন।
এখানে পুরানো এবং নতুন কোটলিন মেথডের কিছু উদাহরণ দেওয়া হলো:
পুরানো
// Construct image labeler with base model and default options. val imageLabeler = FirebaseVision.getInstance().onDeviceImageLabeler // Construct object detector with base model and default options. val objectDetector = FirebaseVision.getInstance().onDeviceObjectDetector // Construct face detector with given options val faceDetector = FirebaseVision.getInstance().getVisionFaceDetector(options) // Construct image labeler with local AutoML model val localModel = FirebaseAutoMLLocalModel.Builder() .setAssetFilePath("automl/manifest.json") .build() val autoMLImageLabeler = FirebaseVision.getInstance() .getOnDeviceAutoMLImageLabeler( FirebaseVisionOnDeviceAutoMLImageLabelerOptions.Builder(localModel) .setConfidenceThreshold(0.3F) .build() )
নতুন
// Construct image labeler with base model and default options. val imageLabeler = ImageLabeling.getClient(ImageLabelerOptions.DEFAULT_OPTIONS) // Optional: add life cycle observer lifecycle.addObserver(imageLabeler) // Construct object detector with base model and default options. val objectDetector = ObjectDetection.getClient(ObjectDetectorOptions.DEFAULT_OPTIONS) // Construct face detector with given options val faceDetector = FaceDetection.getClient(options) // Construct image labeler with local AutoML model val localModel = LocalModel.Builder() .setAssetManifestFilePath("automl/manifest.json") .build() val autoMLImageLabeler = ImageLabeling.getClient( CustomImageLabelerOptions.Builder(localModel) .setConfidenceThreshold(0.3F).build())
এখানে পুরাতন এবং নতুন জাভা মেথডের কিছু উদাহরণ দেওয়া হলো:
পুরানো
// Construct image labeler with base model and default options. FirebaseVisionImageLabeler imagelLabeler = FirebaseVision.getInstance().getOnDeviceImageLabeler(); // Construct object detector with base model and default options. FirebaseVisionObjectDetector objectDetector = FirebaseVision.getInstance().getOnDeviceObjectDetector(); // Construct face detector with given options FirebaseVisionFaceDetector faceDetector = FirebaseVision.getInstance().getVisionFaceDetector(options); // Construct image labeler with local AutoML model FirebaseAutoMLLocalModel localModel = new FirebaseAutoMLLocalModel.Builder() .setAssetFilePath("automl/manifest.json") .build(); FirebaseVisionImageLabeler autoMLImageLabeler = FirebaseVision.getInstance() .getOnDeviceAutoMLImageLabeler( FirebaseVisionOnDeviceAutoMLImageLabelerOptions.Builder(localModel) .setConfidenceThreshold(0.3F) .build());
নতুন
// Construct image labeler with base model and default options. ImageLabeler imageLabeler = ImageLabeling.getClient(ImageLabelerOptions.DEFAULT_OPTIONS); // Optional: add life cycle observer getLifecycle().addObserver(imageLabeler); // Construct object detector with base model and default options. ObjectDetector objectDetector = ObjectDetection.getClient(ObjectDetectorOptions.DEFAULT_OPTIONS); // Construct face detector with given options FaceDetector faceDetector = FaceDetection.getClient(options); // Construct image labeler with local AutoML model LocalModel localModel = new LocalModel.Builder() .setAssetManifestFilePath("automl/manifest.json") .build(); ImageLabeler autoMLImageLabeler = ImageLabeling.getClient( new CustomImageLabelerOptions.Builder(localModel) .setConfidenceThreshold(0.3F).build());
এপিআই-নির্দিষ্ট পরিবর্তন
বারকোড স্ক্যানিং
বারকোড স্ক্যানিং এপিআই-এর ক্ষেত্রে, মডেলগুলো এখন দুটি উপায়ে সরবরাহ করা যেতে পারে:
- গুগল প্লে সার্ভিসেস বা “থিন” (প্রস্তাবিত) এর মাধ্যমে অ্যাপের আকার কমে যায় এবং অ্যাপ্লিকেশনটির মধ্যে ফাইলটি শেয়ার করা হয়। তবে, ডেভেলপারদের নিশ্চিত করতে হবে যে ফাইলটি প্রথমবার ব্যবহারের আগে ডাউনলোড করা হয়েছে।
- আপনার অ্যাপের APK ফাইলটি “বান্ডেল” আকারে থাকলে অ্যাপের সাইজ বেড়ে যায়, কিন্তু এর ফলে মডেলটি তাৎক্ষণিকভাবে ব্যবহারযোগ্য হয়ে ওঠে।
দুটি বাস্তবায়ন কিছুটা ভিন্ন, যেখানে “বান্ডেলড” সংস্করণটিতে “থিন” সংস্করণের তুলনায় বেশ কিছু উন্নতি রয়েছে। এই পার্থক্যগুলোর বিস্তারিত বিবরণ বারকোড স্ক্যানিং এপিআই নির্দেশিকাতে পাওয়া যাবে।
মুখ সনাক্তকরণ
ফেস ডিটেকশন এপিআই-এর ক্ষেত্রে, মডেলগুলো দুটি উপায়ে সরবরাহ করা যেতে পারে:
- গুগল প্লে সার্ভিসেস বা “থিন” (প্রস্তাবিত) এর মাধ্যমে অ্যাপের আকার কমে যায় এবং অ্যাপ্লিকেশনটির মধ্যে ফাইলটি শেয়ার করা হয়। তবে, ডেভেলপারদের নিশ্চিত করতে হবে যে ফাইলটি প্রথমবার ব্যবহারের আগে ডাউনলোড করা হয়েছে।
- আপনার অ্যাপের APK ফাইলটি “বান্ডেল” আকারে থাকলে , অ্যাপ ডাউনলোডের সাইজ বেড়ে যায়, কিন্তু এর মানে হলো মডেলটি তাৎক্ষণিকভাবে ব্যবহারযোগ্য।
বাস্তবায়নগুলোর আচরণ একই।
অনুবাদ
TranslateLanguageএখন তার কনস্ট্যান্টগুলোর জন্য ল্যাঙ্গুয়েজ ট্যাগ (EN) এর পরিবর্তে পাঠযোগ্য নাম (যেমনENGLISH) ব্যবহার করে। এছাড়াও, এগুলি এখন @IntDef এর পরিবর্তে @StringDef এবং কনস্ট্যান্টটির মান হলো সংশ্লিষ্ট BCP 47 ল্যাঙ্গুয়েজ ট্যাগ ।আপনার অ্যাপ যদি “ডিভাইস আইডল” ডাউনলোড কন্ডিশন অপশনটি ব্যবহার করে থাকে, তবে জেনে রাখুন যে এই অপশনটি সরিয়ে ফেলা হয়েছে এবং এটি আর ব্যবহার করা যাবে না। আপনি এখনও “ডিভাইস চার্জিং” অপশনটি ব্যবহার করতে পারেন। আপনি যদি আরও জটিল আচরণ চান, তবে আপনার নিজস্ব লজিকের আড়ালে
RemoteModelManager.downloadকল করাকে বিলম্বিত করতে পারেন।
অটোএমএল ইমেজ লেবেলিং
আপনার অ্যাপ যদি “ডিভাইস নিষ্ক্রিয়” ডাউনলোড শর্ত বিকল্পটি ব্যবহার করে থাকে, তবে জেনে রাখুন যে এই বিকল্পটি সরিয়ে ফেলা হয়েছে এবং এটি আর ব্যবহার করা যাবে না। আপনি এখনও “ডিভাইস চার্জিং” বিকল্পটি ব্যবহার করতে পারেন।
আপনি যদি আরও জটিল আচরণ চান, তাহলে আপনার নিজস্ব লজিকের আড়ালে RemoteModelManager.download কল করা বিলম্বিত করতে পারেন।
বস্তু সনাক্তকরণ এবং ট্র্যাকিং
আপনার অ্যাপ যদি কোর্স ক্লাসিফিকেশন সহ অবজেক্ট ডিটেকশন ব্যবহার করে, তবে জেনে রাখুন যে নতুন SDK-টি ডিটেক্ট করা অবজেক্টগুলোর জন্য ক্লাসিফিকেশন ক্যাটাগরি রিটার্ন করার পদ্ধতি পরিবর্তন করেছে।
শ্রেণীবিভাগ বিভাগটি একটি পূর্ণসংখ্যার পরিবর্তে DetectedObject.Label এর একটি ইনস্ট্যান্স হিসাবে ফেরত দেওয়া হয়। স্থূল শ্রেণীবিভাগের জন্য সমস্ত সম্ভাব্য বিভাগ PredefinedCategory ক্লাসে অন্তর্ভুক্ত থাকে।
এখানে পুরানো এবং নতুন কোটলিন কোডের একটি উদাহরণ দেওয়া হল:
পুরানো
if (object.classificationCategory == FirebaseVisionObject.CATEGORY_FOOD) { ... }
নতুন
if (!object.labels.isEmpty() && object.labels[0].text == PredefinedCategory.FOOD) { ... } // or if (!object.labels.isEmpty() && object.labels[0].index == PredefinedCategory.FOOD_INDEX) { ... }
এখানে পুরাতন এবং নতুন জাভা কোডের একটি উদাহরণ দেওয়া হলো:
পুরানো
if (object.getClassificationCategory() == FirebaseVisionObject.CATEGORY_FOOD) { ... }
নতুন
if (!object.getLabels().isEmpty() && object.getLabels().get(0).getText().equals(PredefinedCategory.FOOD)) { ... } // or if (!object.getLabels().isEmpty() && object.getLabels().get(0).getIndex() == PredefinedCategory.FOOD_INDEX) { ... }
“অজানা” বিভাগটি সরিয়ে দেওয়া হয়েছে। যখন কোনো বস্তুর শ্রেণিবিন্যাসের নির্ভরযোগ্যতা কম থাকে, তখন আমরা কোনো লেবেলই ফেরত দিই না।
ফায়ারবেস নির্ভরতাগুলি সরান (ঐচ্ছিক)
এই ধাপটি শুধুমাত্র তখনই প্রযোজ্য হবে যখন এই শর্তগুলো পূরণ হবে:
- ফায়ারবেস এমএল কিট হলো একমাত্র ফায়ারবেস কম্পোনেন্ট যা আপনি ব্যবহার করেন।
- আপনি শুধুমাত্র ডিভাইসে থাকা এপিআইগুলো ব্যবহার করেন।
- আপনি মডেল সার্ভিং ব্যবহার করেন না।
যদি এমনটা হয়, তাহলে মাইগ্রেশনের পরে আপনি Firebase ডিপেন্ডেন্সিগুলো সরিয়ে ফেলতে পারেন। এই ধাপগুলো অনুসরণ করুন:
- আপনার অ্যাপের মডিউল (অ্যাপ-লেভেল) ডিরেক্টরিতে থাকা google-services.json কনফিগারেশন ফাইলটি মুছে দিয়ে Firebase কনফিগারেশন ফাইলটি সরিয়ে ফেলুন।
- আপনার মডিউল (অ্যাপ-লেভেল) গ্রেডল ফাইলে (সাধারণত app/build.gradle) থাকা Google Services গ্রেডল প্লাগইনটিকে Strict Version Matcher প্লাগইন দিয়ে প্রতিস্থাপন করুন:
আগে
apply plugin: 'com.android.application'
apply plugin: 'com.google.gms.google-services' // Google Services plugin
android {
// …
}পরে
apply plugin: 'com.android.application'
apply plugin: 'com.google.android.gms.strict-version-matcher-plugin'
android {
// …
}- আপনার প্রোজেক্টের (রুট-লেভেল) Gradle ফাইলে (build.gradle) Google Services Gradle প্লাগইনের ক্লাসপাথটি Strict Version Matcher প্লাগইনের ক্লাসপাথ দিয়ে প্রতিস্থাপন করুন:
আগে
buildscript {
dependencies {
// ...
classpath 'com.google.gms:google-services:4.3.3' // Google Services plugin
}
}
পরে
buildscript {
dependencies {
// ...
classpath 'com.google.android.gms:strict-version-matcher-plugin:1.2.1'
}
}
ফায়ারবেস সাপোর্ট সাইটের নির্দেশাবলী অনুযায়ী ফায়ারবেস কনসোল থেকে আপনার ফায়ারবেস অ্যাপটি ডিলিট করুন।
সাহায্য পাওয়া
যদি আপনি কোনো সমস্যার সম্মুখীন হন, তাহলে অনুগ্রহ করে আমাদের কমিউনিটি পেজটি দেখুন, যেখানে আমাদের সাথে যোগাযোগের মাধ্যমগুলো উল্লেখ করা আছে।