ऑफ़लाइन-पहली भरोसेमंद वेब गतिविधियां

जब कोई उपयोगकर्ता भरोसेमंद वेब के ज़रिए पहली बार प्रोग्रेसिव वेब ऐप्लिकेशन (पीडब्ल्यूए) लॉन्च करता है गतिविधि, रजिस्ट्रेशन प्रोसेस के बाद से सर्विस वर्कर अभी उपलब्ध नहीं होगा अभी तक नहीं हुआ है. इसके अलावा, अगर पहले ऐप्लिकेशन के दौरान उपयोगकर्ता के पास कनेक्टिविटी न हो, तो कस्टम ऑफ़लाइन अनुभव के बजाय, नेटवर्क की गड़बड़ी वाला पेज दिखाए गए.

उपयोगकर्ता के पीडब्ल्यूए डाउनलोड करने के बाद, ऐसा हो सकता है Play Store से. अगर खोलने का प्रयास करते समय उपयोगकर्ता के पास कनेक्टिविटी न हो पहली बार ऐप इस्तेमाल करने की वजह से, सर्विस वर्कर अभी दिखाने के लिए उपलब्ध नहीं है इसलिए, ऑफ़लाइन फ़ॉलबैक पेज. गड़बड़ी का स्टैंडर्ड पेज दिखाया जाएगा, की वजह से आपका अनुभव खराब हो सकता है.

TWA ऑफ़लाइन: मानक ऑफ़लाइन पेज

इस गाइड में बताया गया है कि ऐसी स्थिति में अपनी गतिविधि कैसे दिखाएं भरोसेमंद वेब गतिविधि लॉन्च करने से पहले नेटवर्क की स्थिति की जांच करना.

पसंद के मुताबिक LauncherActivity बनाएं

पहला चरण, कस्टम लॉन्चर गतिविधि बनाना है. यह 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 को लॉन्चर के तौर पर रजिस्टर करता है गतिविधि है और https://airhorner.com को यूआरएल के रूप में बताता है TWA लॉन्च होने पर खोलने के लिए.

ऑफ़लाइन स्थितियों को मैनेज करना

सबसे पहले, ऐक्टिविटी में, 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;
}

टीडब्ल्यूए से पहले नेटवर्क का स्टेटस देखने के लिए, 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();
    }
}

पिछला कोड तीन स्थितियों को संभालता है:

  • अगर टीडब्ल्यूए पहले लॉन्च किया जा चुका है, तो सर्विस वर्कर ने रजिस्टर किया गया हो और 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 ऑफ़लाइन - कस्टम ऑफ़लाइन स्क्रीन

नतीजा

  • जब कोई उपयोगकर्ता भरोसेमंद वेब के ज़रिए पहली बार प्रोग्रेसिव वेब ऐप्लिकेशन (पीडब्ल्यूए) लॉन्च करता है गतिविधि के लिए, सर्विस वर्कर अभी उपलब्ध नहीं होगा.
  • अगर उपयोगकर्ता के पास इंटरनेट कनेक्शन न हो, तो ऑफ़लाइन स्क्रीन देखने से बचने के लिए, ऑफ़लाइन स्थिति का पता लगाया जा सकता है और फ़ॉलबैक ऑफ़लाइन स्क्रीन दिखाई जा सकती है आज़माएं.
  • इस गाइड से आपने रणनीति को लागू करने का तरीका सीखा. अगर आप इस गाइड में हमने जिस कोड का इस्तेमाल किया है उसे देखने में दिलचस्पी है, तो ऑफ़लाइन पहले TWA डेमो में पूरा समाधान देखें.