跳过主要内容
教程

使用Capacitor和__CAPGO_KEEP_1__在Vue、Angular、React中实现离线屏幕

了解如何使用网络API和Capacitor在Vue、Angular或React应用中实现离线屏幕,改善用户体验并有效地处理离线场景

文章来源

马丁·多纳迪厄

作者

瓦莱里亚

审阅者

乔丹

编辑

Offline Screen in Vue, Angular, React with Capacitor

How to Create an Offline Screen in Vue 3, Angular 14, or React

在本教程中,我们将学习如何在 Vue 3、Angular 14 和 React 应用程序中创建离线屏幕,使用 Network API。Network API 提供网络和连接信息,使我们能够处理离线场景并提供更好的用户体验。为了更深入地检查超出简单的在线/离线标志之外的可达性,我们可以测试 URL 可达性、TCP 端口和 WebSocket 握手,从本机 API 中测试。 @capgo/capacitor-network-diagnostics can test URL reachability, TCP ports, and WebSocket handshakes from native code.

在开始之前,请确保已安装以下内容:

Node.js

在本教程中,我们将学习如何在 Vue 3、Angular 14 和 React 应用程序中创建离线屏幕,使用 Network __CAPGO_KEEP_0__。Network __CAPGO_KEEP_1__ 提供网络和连接信息,使我们能够处理离线场景并提供更好的用户体验。为了更深入地检查超出简单的在线/离线标志之外的可达性,我们可以测试 URL 可达性、TCP 端口和 WebSocket 握手,从本机 __CAPGO_KEEP_0__ 中测试。

首先,让我们使用各个框架的构建工具创建一个新的项目。

Vue 3

打开终端并运行以下命令创建一个新的 Vue 3 项目:

vue create offline-screen-vue3

选择默认预设并等待项目创建完成。

Angular 14

打开终端并运行以下命令创建一个新的 Angular 14 项目:

ng new offline-screen-angular14

遵循提示,到项目创建完成时选择“Routing”并按空格键。 等待项目创建完成。 React

打开终端并运行以下命令创建一个新的 React 项目:

等待项目创建完成。

npx create-react-app offline-screen-react

__CAPGO_KEEP_0__

安装网络API

现在,让我们安装 @capacitor/network 包,提供网络API。

打开您的终端并导航到您的项目目录。然后,运行以下命令安装包:

npm install @capacitor/network

对于Capacitor项目,还需要运行以下命令同步原生项目文件:

npx cap sync

确保您已全局安装Capacitor CLI,方法是运行:

npm install -g @capacitor/cli

实现离线屏幕

下一步,我们将在每个框架中实现离线屏幕功能。我们将在用户脱机时显示一个简单的消息。

Vue 3

在您的Vue 3项目中,打开 src/main.js 文件并导入 Network 模块 @capacitor/network:

import { createApp } from 'vue';
import { Network } from '@capacitor/network';

const app = createApp(App);

// Your application setup

app.mount('#app');

Network.addListener('networkStatusChange', status => {
  if (status.connected) {
    // User is back online
    // Hide the offline screen
    document.getElementById('offline-screen').style.display = 'none';
  } else {
    // User is offline
    // Display the offline screen
    document.getElementById('offline-screen').style.display = 'block';
  }
});

const logCurrentNetworkStatus = async () => {
  const status = await Network.getStatus();
  console.log('Network status:', status);
};

In您的应用程序模板(<code>)中,添加一个<code>元素,id为<code>,以显示离线屏幕消息:</code>App.vue现在,当用户脱机时,离线屏幕将显示。用户回线时,离线屏幕将隐藏。 <div> Angular 14 offline-screen 在您的Angular 14项目中,打开<code>文件并导入<code>模块

<template>
  <div id="app">
    <div id="offline-screen">
      <h1>You are offline</h1>
      <p>Please check your internet connection and try again.</p>
    </div>
    <!-- Your application content -->
  </div>
</template>

<style>
#offline-screen {
  display: none;
  text-align: center;
  padding: 20px;
  background-color: #f2f2f2;
}

#offline-screen h1 {
  font-size: 24px;
}

#offline-screen p {
  font-size: 16px;
}
</style>

来自<code>。

In您的应用程序模板(<code>)中,添加一个<code>元素,id为<code>,以显示离线屏幕消息:</code>

Angular 14 src/app/app.component.ts 在您的Angular 14项目中,打开<code>文件并导入<code>模块 Network 来自<code>。 @capacitor/network:

import { Component } from '@angular/core';
import { Network } from '@capacitor/network';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent {

  constructor() {
    Network.addListener('networkStatusChange', status => {
      if (status.connected) {
        // User is back online
        // Hide the offline screen
        document.getElementById('offline-screen').style.display = 'none';
      } else {
        // User is offline
        // Display the offline screen
        document.getElementById('offline-screen').style.display = 'block';
      }
    });
  }

  logCurrentNetworkStatus = async () => {
    const status = await Network.getStatus();
    console.log('Network status:', status);
  };

}

In您的应用程序模板(<code>)中,添加一个<code>元素,id为<code>,以显示离线屏幕消息:</code>app.component.html现在,当用户脱机时,离线屏幕将显示。用户回线时,离线屏幕将隐藏。 <div> Angular 14 offline-screen 为了显示离线屏幕消息:

<div id="offline-screen">
  <h1>You are offline</h1>
  <p>Please check your internet connection and try again.</p>
</div>

<!-- Your application content -->

添加以下样式到文件: app.component.css 文件:

#offline-screen {
  display: none;
  text-align: center;
  padding: 20px;
  background-color: #f2f2f2;
}

#offline-screen h1 {
  font-size: 24px;
}

#offline-screen p {
  font-size: 16px;
}

现在,当用户脱离网络时,会显示离线屏幕。当用户重新上线时,离线屏幕会被隐藏。

React

在您的 React 项目中,打开文件并导入模块 src/App.js 文件 Network 模块 @capacitor/network:

import React, { useEffect } from 'react'
import { Network } from '@capacitor/network'

function App() {

  useEffect(() => {
    Network.addListener('networkStatusChange', (status) => {
      if (status.connected) {
        // User is back online
        // Hide the offline screen
        document.getElementById('offline-screen').style.display = 'none'
      }
      else {
        // User is offline
        // Display the offline screen
        document.getElementById('offline-screen').style.display = 'block'
      }
    })
  }, [])

  const logCurrentNetworkStatus = async () => {
    const status = await Network.getStatus()
    console.log('Network status:', status)
  }

  return (
    <div id="app">
      <div id='offline-screen'>
        <h1>You are offline</h1>
        <p>Please check your internet connection and try again.</p>
      </div>
      {/* Your application content */}
    </div>
  )

}

export default App

App.css 添加以下样式到文件:

#offline-screen {
  display: none;
  text-align: center;
  padding: 20px;
  background-color: #f2f2f2;
}

#offline-screen h1 {
  font-size: 24px;
}

#offline-screen p {
  font-size: 16px;
}

文件:

现在,当用户脱离网络时,会显示离线屏幕。当用户重新上线时,离线屏幕会被隐藏。

网络API提供了多种方法和接口来帮助您处理网络连接。以下是其中一些关键的:

从Vue、Angular、React中继续使用Capacitor

如果您正在使用 从Vue、Angular、React中继续使用Capacitor 以计划原生媒体和界面行为,连接它与 使用@capgo/capacitor-live-activities 为原生能力在使用@capgo/capacitor-live-activities 使用@capgo/capacitor-live-activities 为实现细节在@capgo/capacitor-live-activities 使用@capgo/capacitor-video-player 为使用@capgo/capacitor-video-player的原生能力 @capgo/capacitor-video-player 为@capgo/capacitor-video-player的实现细节 使用@capgo/capacitor-native-navigation 为使用@capgo/capacitor-native-navigation的原生能力

Capacitor实时更新

当一个web层bug是活跃的,通过Capgo将修复发送,而不是等待几天的应用商店批准。用户在后台接收更新,而本机更改保持在正常的审查路径中。

来自马丁的人性化支持

立即开始

最新博客

Capgo为您提供创建真正专业的移动应用所需的最佳见解。