ইউনিটির জন্য ক্লাউড স্টোরেজ দিয়ে ফাইল ডাউনলোড করুন

Firebase-এর জন্য ক্লাউড স্টোরেজ আপনাকে Firebase দ্বারা প্রদত্ত এবং পরিচালিত ক্লাউড স্টোরেজ বাকেট থেকে দ্রুত এবং সহজে ফাইল ডাউনলোড করতে দেয়।

একটি রেফারেন্স তৈরি করুন

একটি ফাইল ডাউনলোড করতে, প্রথমে আপনি যে ফাইলটি ডাউনলোড করতে চান তার একটি ক্লাউড স্টোরেজ রেফারেন্স তৈরি করুন

আপনি আপনার ক্লাউড স্টোরেজ বাকেটের রুটে চাইল্ড পাথ যুক্ত করে একটি রেফারেন্স তৈরি করতে পারেন, অথবা আপনি ক্লাউড স্টোরেজের একটি অবজেক্টকে উল্লেখ করে বিদ্যমান gs:// বা https:// URL থেকে একটি রেফারেন্স তৈরি করতে পারেন।

// Create a reference with an initial file path and name
StorageReference pathReference =
    storage.GetReference("images/stars.jpg");

// Create a reference from a Google Cloud Storage URI
StorageReference gsReference =
    storage.GetReferenceFromUrl("gs://bucket/images/stars.jpg");

// Create a reference from an HTTPS URL
// Note that in the URL, characters are URL escaped!
StorageReference httpsReference =
    storage.GetReferenceFromUrl("https://firebasestorage.googleapis.com/b/bucket/o/images%20stars.jpg");

ফাইল ডাউনলোড করুন

একবার আপনার কাছে একটি রেফারেন্স হয়ে গেলে, আপনি ক্লাউড স্টোরেজ থেকে চারটি উপায়ে ফাইল ডাউনলোড করতে পারেন:

  1. একটি URL থেকে ডাউনলোড করুন
  2. একটি বাইট অ্যারেতে ডাউনলোড করুন
  3. একটি স্ট্রিম দিয়ে ডাউনলোড করুন
  4. একটি স্থানীয় ফাইল ডাউনলোড করুন

আপনার ফাইলগুলি পুনরুদ্ধার করার জন্য আপনি যে পদ্ধতিটি ব্যবহার করবেন তা নির্ভর করবে আপনি কীভাবে আপনার গেমের ডেটা ব্যবহার করতে চান তার উপর।

একটি URL থেকে ডাউনলোড করুন

আপনি যদি ইউনিটির WWW বা UnityWebRequest এর সাথে একটি URL ব্যবহার করতে চান তবে আপনি GetDownloadUrlAsync() কল করে একটি ফাইলের জন্য একটি ডাউনলোড URL পেতে পারেন।

// Fetch the download URL
reference.GetDownloadUrlAsync().ContinueWithOnMainThread(task => {
    if (!task.IsFaulted && !task.IsCanceled) {
        Debug.Log("Download URL: " + task.Result);
        // ... now download the file via WWW or UnityWebRequest.
    }
});

একটি বাইট অ্যারেতে ডাউনলোড করুন

আপনি GetBytesAsync() পদ্ধতি ব্যবহার করে মেমরির একটি বাইট বাফারে ফাইলটি ডাউনলোড করতে পারেন। এই পদ্ধতিটি আপনার ফাইলের সম্পূর্ণ বিষয়বস্তু মেমরিতে লোড করবে। আপনি আপনার অ্যাপের উপলব্ধ মেমরির চেয়ে বড় ফাইলের অনুরোধ করলে, আপনার অ্যাপ ক্র্যাশ হয়ে যাবে। মেমরি সমস্যা থেকে রক্ষা করার জন্য, আপনার অ্যাপটি পরিচালনা করতে পারে এমন কিছুতে সর্বাধিক আকার সেট করতে ভুলবেন না বা অন্য ডাউনলোড পদ্ধতি ব্যবহার করুন।

// Download in memory with a maximum allowed size of 1MB (1 * 1024 * 1024 bytes)
const long maxAllowedSize = 1 * 1024 * 1024;
reference.GetBytesAsync(maxAllowedSize).ContinueWithOnMainThread(task => {
    if (task.IsFaulted || task.IsCanceled) {
        Debug.LogException(task.Exception);
        // Uh-oh, an error occurred!
    }
    else {
        byte[] fileContents = task.Result;
        Debug.Log("Finished downloading!");
    }
});

একটি স্ট্রিম মাধ্যমে ডাউনলোড করুন

একটি স্ট্রিম সহ ফাইলটি ডাউনলোড করা আপনাকে ডেটা লোড হওয়ার সাথে সাথে প্রক্রিয়া করতে দেয়। আপনার ডাউনলোডের সাথে ডিল করার সময় এটি আপনাকে সর্বাধিক নমনীয়তা দেয়। GetStreamAsync() কল করুন এবং প্রথম আর্গুমেন্ট হিসাবে আপনার নিজস্ব স্ট্রিম প্রসেসর পাস করুন। এই প্রতিনিধিকে একটি স্ট্রিম সহ একটি ব্যাকগ্রাউন্ড থ্রেডে ডাকা হবে যা আপনাকে লেটেন্সি ইনটেনসিভ অপারেশন বা ডিস্কে বিষয়বস্তু সংরক্ষণ করার মতো গণনা করতে দেয়।

// Download via a Stream
reference.GetStreamAsync(stream => {
    // Do something with the stream here.
    //
    // This code runs on a background thread which reduces the impact
    // to your framerate.
    //
    // If you want to do something on the main thread, you can do that in the
    // progress eventhandler (second argument) or ContinueWith to execute it
    // at task completion.
}, null, CancellationToken.None);

GetStreamAsync() স্ট্রিম প্রসেসরের পরে একটি ঐচ্ছিক আর্গুমেন্ট নেয় যা আপনাকে অপারেশন বাতিল করতে বা অগ্রগতির বিজ্ঞপ্তি পেতে দেয়।

একটি স্থানীয় ফাইল ডাউনলোড করুন

GetFileAsync() পদ্ধতি একটি স্থানীয় ডিভাইসে সরাসরি একটি ফাইল ডাউনলোড করে। যদি আপনার ব্যবহারকারীরা অফলাইনে থাকা অবস্থায় ফাইলটিতে অ্যাক্সেস পেতে বা অন্য কোনো অ্যাপে ফাইলটি শেয়ার করতে চান তাহলে এটি ব্যবহার করুন।

// Create local filesystem URL
string localUrl = "file:///local/images/island.jpg";

// Download to the local filesystem
reference.GetFileAsync(localUrl).ContinueWithOnMainThread(task => {
    if (!task.IsFaulted && !task.IsCanceled) {
        Debug.Log("File downloaded.");
    }
});

ডাউনলোডের অগ্রগতি নিরীক্ষণ করার জন্য আপনি শ্রোতাদের ডাউনলোডের সাথে সংযুক্ত করতে পারেন। শ্রোতা স্ট্যান্ডার্ড System.IProgress<T> ইন্টারফেস অনুসরণ করে। আপনি প্রগতি টিকগুলির জন্য কলব্যাক হিসাবে আপনার নিজস্ব Action<T> প্রদান করতে StorageProgress ক্লাসের একটি উদাহরণ ব্যবহার করতে পারেন।

// Create local filesystem URL
string localUrl = "file:///local/images/island.jpg";

// Start downloading a file
Task task = reference.GetFileAsync(localFile,
    new StorageProgress<DownloadState>(state => {
        // called periodically during the download
        Debug.Log(String.Format(
            "Progress: {0} of {1} bytes transferred.",
            state.BytesTransferred,
            state.TotalByteCount
        ));
    }), CancellationToken.None);

task.ContinueWithOnMainThread(resultTask => {
    if (!resultTask.IsFaulted && !resultTask.IsCanceled) {
        Debug.Log("Download finished.");
    }
});

হ্যান্ডেল ত্রুটি

ফাইলটি বিদ্যমান না থাকা বা ব্যবহারকারীর পছন্দসই ফাইলটি অ্যাক্সেস করার অনুমতি না থাকা সহ ডাউনলোডে ত্রুটি ঘটতে পারে এমন অনেকগুলি কারণ রয়েছে৷ ত্রুটিগুলি সম্পর্কে আরও তথ্য ডক্সের হ্যান্ডেল ত্রুটি বিভাগে পাওয়া যাবে৷

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

এছাড়াও আপনি ক্লাউড স্টোরেজে সংরক্ষিত ফাইলগুলির জন্য মেটাডেটা পেতে এবং আপডেট করতে পারেন৷