অফলাইন-প্রথম বিশ্বস্ত ওয়েব কার্যকলাপ

বিশ্বস্ত ওয়েব অ্যাক্টিভিটির মাধ্যমে প্রথমবার কোনো ব্যবহারকারী একটি প্রগ্রেসিভ ওয়েব অ্যাপ (PWA) চালু করলে, পরিষেবা কর্মী এখনও উপলভ্য হবে না কারণ নিবন্ধন প্রক্রিয়াটি এখনও সম্পন্ন হয়নি৷ উপরন্তু, প্রথম অ্যাপ লঞ্চের সময় ব্যবহারকারীর সংযোগ না থাকলে, কাস্টম অফলাইন অভিজ্ঞতার পরিবর্তে, নেটওয়ার্ক ত্রুটি পৃষ্ঠা দেখানো হয়।

ব্যবহারকারী প্লে স্টোর থেকে PWA ডাউনলোড করার পরে এই দৃশ্যের একটি উদাহরণ ঘটতে পারে। প্রথমবার অ্যাপটি খোলার চেষ্টা করার সময় ব্যবহারকারীর সংযোগ না থাকলে, পরিষেবা কর্মী এখনও অফলাইন ফলব্যাক পৃষ্ঠাটি দেখানোর জন্য উপলব্ধ থাকবে না। স্ট্যান্ডার্ড ত্রুটি পৃষ্ঠাটি দেখানো হবে, যা একটি খারাপ অভিজ্ঞতার দিকে পরিচালিত করবে।

TWA অফলাইন: স্ট্যান্ডার্ড অফলাইন পৃষ্ঠা

ট্রাস্টেড ওয়েব অ্যাক্টিভিটি চালু করার আগে নেটওয়ার্কের স্থিতি পরীক্ষা করে এই পরিস্থিতিতে কীভাবে আপনার নিজের কার্যকলাপ প্রদর্শন করবেন তা এই নির্দেশিকা ব্যাখ্যা করে।

একটি কাস্টম লঞ্চার অ্যাক্টিভিটি তৈরি করুন

প্রথম ধাপ হল একটি কাস্টম লঞ্চার কার্যকলাপ তৈরি করা। এই Activity যেটিতে অফলাইন স্ক্রীন থাকবে তা দেখানোর জন্য কোন কানেক্টিভিটি না থাকলে ব্যবহারকারী প্রথমবার অ্যাপটি খুললে।

Activity OfflineFirstTWALauncherActivity কল করুন এবং এটিকে প্রসারিত করুন: com.google.androidbrowserhelper.trusted.LauncherActivity

import com.google.androidbrowserhelper.trusted.LauncherActivity;

public class OfflineFirstTWALauncherActivity extends LauncherActivity {

}

এরপর, AndroidManifest.xml এ কার্যকলাপ নিবন্ধন করুন:

<activity android:name=".OfflineFirstTWALauncherActivity" android:theme="@style/Theme.Design.NoActionBar">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
    <!-- Edit android:value to change the url opened by the Trusted Web Activity -->
    <meta-data android:name="android.support.customtabs.trusted.DEFAULT_URL" android:value="https://airhorner.com" />
    <!-- This intent-filter adds the Trusted Web Activity to the Android Launcher -->
    <intent-filter>
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        <!-- Edit android:host to handle links to the target URL -->
        <data android:host="airhorner.com" android:scheme="https" />
    </intent-filter>
</activity>

পূর্ববর্তী কোডটি OfflineFirstTWALauncherActivity একটি লঞ্চার অ্যাক্টিভিটি হিসাবে নিবন্ধিত করে এবং টিডাব্লুএ লঞ্চ হলে খোলার URL হিসাবে https://airhorner.com-কে সংজ্ঞায়িত করে।

অফলাইন পরিস্থিতি পরিচালনা করুন

প্রথমে, কার্যকলাপের ভিতরে, shouldLaunchImmediately() পদ্ধতিটি ওভাররাইড করুন এবং এটিকে false রিটার্ন করুন, যাতে বিশ্বস্ত ওয়েব কার্যকলাপ অবিলম্বে চালু না হয়। আপনি প্রাথমিক লঞ্চের আগে অতিরিক্ত চেক যোগ করতে পারেন:

@Override
protected boolean shouldLaunchImmediately() {
    // launchImmediately() returns `false` so we can check connection
    // and then render a fallback page or launch the Trusted Web Activity with `launchTwa()`.
    return false;
}

TWA চালু হওয়ার আগে নেটওয়ার্ক স্থিতি পরীক্ষা করতে onCreate() পদ্ধতিটি ওভাররাইড করুন। tryLaunchTwa() তে একটি কল যোগ করুন, একটি সহায়ক পদ্ধতি যা সেই যুক্তি ধারণ করবে:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    tryLaunchTwa();
}

এর পরে, tryLaunchTwa() প্রয়োগ করুন:

private void tryLaunchTwa() {
    // If TWA has already launched successfully, launch TWA immediately.
    // Otherwise, check connection status. If online, launch the Trusted Web Activity with `launchTwa()`.
    // Otherwise, if offline, render the offline fallback screen.
    if (hasTwaLaunchedSuccessfully()) {
        launchTwa();
    } else if (isOnline()) {
        firstTimeLaunchTwa();
    } else {
        renderOfflineFallback();
    }
}

পূর্ববর্তী কোড তিনটি পরিস্থিতি পরিচালনা করে:

  • যদি TWA আগে চালু হয়ে থাকে, তাহলে পরিষেবা কর্মী নিবন্ধিত হয়েছে, এবং PWA অফলাইনে প্রতিক্রিয়া জানাতে সক্ষম হবে। সেই ক্ষেত্রে, ট্রাস্টেড ওয়েব অ্যাক্টিভিটি সরাসরি চালু করতে, প্যারেন্ট ক্লাসে সংজ্ঞায়িত launchTwa() কল করুন।
  • যদি TWA পূর্বে চালু না হয়ে থাকে এবং ব্যবহারকারী অনলাইন থাকে, তাহলে firstTimeLaunchTwa() পদ্ধতি ব্যবহার করে প্রথমবার বিশ্বস্ত ওয়েব অ্যাক্টিভিটি চালু করুন যা আপনি পরে প্রয়োগ করবেন।
  • যদি TWA ইতিমধ্যে চালু না হয়ে থাকে এবং ব্যবহারকারী অফলাইনে থাকেন, তাহলে নেটিভ অফলাইন ফলব্যাক স্ক্রীন রেন্ডার করুন।

সহায়ক পদ্ধতি প্রয়োগ করুন

চূড়ান্ত পদক্ষেপ হল পূর্ববর্তী কোড দ্বারা বলা সহায়ক পদ্ধতিগুলি বাস্তবায়ন করা। অফলাইন অবস্থা isOnline() চেক করার জন্য এখানে কোড রয়েছে:

private boolean isOnline() {
    ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
    return activeNetworkInfo != null && activeNetworkInfo.isConnected();
}

এর পরে, hasTwaLaunchedSuccessfully() প্রয়োগ করুন, যা TWA অন্তত একবার চালু হয়েছে কিনা তা পরীক্ষা করে:

private boolean hasTwaLaunchedSuccessfully() {
    // Return `true` if the preference "twa_launched_successfully" has already been set.
    SharedPreferences sharedPref = getSharedPreferences(getString(R.string.twa_offline_first_preferences_file_key), Context.MODE_PRIVATE);
    return sharedPref.getBoolean(getString(R.string.twa_launched_successfully), false);
}

পূর্ববর্তী কোডটি প্যারেন্ট ক্লাস থেকে launchTWA() কে কল করে এবং ভাগ করা পছন্দগুলিতে twa_launched_successfully পতাকা সংরক্ষণ করে। এটি নির্দেশ করে যে TWA সফলভাবে চালু হয়েছে, অন্তত একবার।

অবশিষ্ট সহায়ক পদ্ধতি, renderOfflineFallback() একটি Android অফলাইন স্ক্রীন রেন্ডার করে।

private void renderOfflineFallback() {
    setContentView(R.layout.activity_offline_first_twa);

    Button retryBtn = this.findViewById(R.id.retry_btn);
    retryBtn.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            // Check connection status. If online, launch the Trusted Web Activity for the first time.
            if (isOnline()) firstTimeLaunchTwa();
        }
    });
}

তার ডেমোর জন্য, আমরা activity_offline_first_twa লেআউটটি সংজ্ঞায়িত করেছি, যেটিতে পুনরায় চেষ্টা করার জন্য একটি বোতাম রয়েছে, যা সংযোগটি পরীক্ষা করার পরে, সময়মত, firstTimeLaunchTwa() কার্যকর করবে৷

twa অফলাইন - কাস্টম অফলাইন স্ক্রিন

উপসংহার

  • প্রথমবার যখন কোনো ব্যবহারকারী বিশ্বস্ত ওয়েব অ্যাক্টিভিটির মাধ্যমে একটি প্রগ্রেসিভ ওয়েব অ্যাপ (PWA) চালু করেন, তখন পরিষেবা কর্মী এখনও উপলব্ধ হবে না৷
  • ব্যবহারকারীর কোনো সংযোগ না থাকলে স্ট্যান্ডার্ড অফলাইন স্ক্রীন দেখানো এড়াতে, আপনি অফলাইন অবস্থা সনাক্ত করতে পারেন এবং পরিবর্তে একটি ফলব্যাক অফলাইন স্ক্রীন দেখাতে পারেন৷
  • এই গাইডে আপনি শিখেছেন কিভাবে সেই কৌশলটি বাস্তবায়ন করতে হয়। আপনি যদি এই নির্দেশিকা জুড়ে আমরা যে কোডটি ব্যবহার করেছি তা পরীক্ষা করতে আগ্রহী হন, আপনি অফলাইন প্রথম TWA ডেমোতে সম্পূর্ণ সমাধান পেতে পারেন।