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

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

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

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

আপনার Cloud Storage বাকেটের রুটে চাইল্ড পাথ যোগ করে আপনি একটি রেফারেন্স তৈরি করতে পারেন, অথবা আপনি Cloud Storage একটি অবজেক্ট রেফারেন্স করে বিদ্যমান 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");

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

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

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

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

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

আপনি যদি Unity's 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!");
    }
});

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

Stream দিয়ে ফাইল ডাউনলোড করলে আপনি লোড হওয়ার সাথে সাথে ডেটা প্রক্রিয়া করতে পারবেন। এটি আপনার ডাউনলোডের সাথে কাজ করার সময় সর্বাধিক নমনীয়তা প্রদান করে। 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.");
    }
});

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

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

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

আপনি Cloud Storage সংরক্ষিত ফাইলগুলির মেটাডেটা পেতে এবং আপডেট করতে পারেন।