@capacitor/app
App API 处理高级别的应用状态和事件。例如,此 API 在应用进入和离开前台时发出事件,处理深层链接,打开其他应用,以及管理持久化的插件状态。
安装
npm install @capacitor/app
npx cap sync
iOS
要能够通过自定义 scheme 打开应用,你需要先注册该 scheme。你可以通过编辑 Info.plist 文件并添加以下内容来实现。
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLName</key>
<string>com.getcapacitor.capacitor</string>
<key>CFBundleURLSchemes</key>
<array>
<string>mycustomscheme</string>
</array>
</dict>
</array>
Android
要能够通过自定义 scheme 打开应用,你需要先注册该 scheme。你可以通过在 AndroidManifest.xml 的 activity 部分中添加以下内容来实现。
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="@string/custom_url_scheme" />
</intent-filter>
custom_url_scheme 的值存储在 strings.xml 中。当添加 Android 平台时,@capacitor/cli 会以应用的包名作为默认值 ,但可以通过编辑 strings.xml 文件进行替换。
示例
import { App } from '@capacitor/app';
App.addListener('appStateChange', ({ isActive }) => {
console.log('App state changed. Is active?', isActive);
});
App.addListener('appUrlOpen', data => {
console.log('App opened with URL:', data);
});
App.addListener('appRestoredResult', data => {
console.log('Restored state:', data);
});
const checkAppLaunchUrl = async () => {
const { url } = await App.getLaunchUrl();
console.log('App opened with URL: ' + url);
};
配置
| 属性 | 类型 | 描述 | 默认值 | 自 |
|---|---|---|---|---|
disableBackButtonHandler | boolean | 禁用插件的默认返回按钮处理。仅 Android 可用。 | false | 7.1.0 |
示例
在 capacitor.config.json 中:
{
"plugins": {
"App": {
"disableBackButtonHandler": true
}
}
}
在 capacitor.config.ts 中:
/// <reference types="@capacitor/app" />
import { CapacitorConfig } from '@capacitor/cli';
const config: CapacitorConfig = {
plugins: {
App: {
disableBackButtonHandler: true,
},
},
};
export default config;
API
exitApp()getInfo()getState()getLaunchUrl()minimizeApp()getAppLanguage()toggleBackButtonHandler(...)addListener('appStateChange', ...)addListener('pause', ...)addListener('resume', ...)addListener('appUrlOpen', ...)addListener('appRestoredResult', ...)addListener('backButton', ...)removeAllListeners()- Interfaces
- Type Aliases
exitApp()
exitApp() => Promise<void>
强制退出应用。此方法应仅与 Android 的 backButton 处理程序结合使用,在导航完成时退出应用。
Ionic 会自行处理此功能,因此如果你使用 Ionic,则不需要调用此方法。
自: 1.0.0
getInfo()
getInfo() => Promise<AppInfo>
返回应用的相关信息。
返回值:
Promise<AppInfo>
自: 1.0.0
getState()
getState() => Promise<AppState>
获取当前应用状态。
返回值:
Promise<AppState>
自: 1.0.0
getLaunchUrl()
getLaunchUrl() => Promise<AppLaunchUrl | undefined>
获取应用启动时的 URL(如果有)。
返回值:
Promise<AppLaunchUrl>
自: 1.0.0
minimizeApp()
minimizeApp() => Promise<void>
最小化应用程序。
仅 Android 可用。
自: 1.1.0
getAppLanguage()
getAppLanguage() => Promise<AppLanguageCode>
获取应用特定的语言区域代码。
返回值:
Promise<AppLanguageCode>
自: 8.1.0
toggleBackButtonHandler(...)
toggleBackButtonHandler(options: ToggleBackButtonHandlerOptions) => Promise<void>
在运行时启用或禁用插件的返回按钮处理。
仅 Android 可用。
| 参数 | 类型 |
|---|---|
options | |
自: 7.1.0
addListener('appStateChange', ...)
addListener(eventName: 'appStateChange', listenerFunc: StateChangeListener) => Promise<PluginListenerHandle>
监听应用或活动状态的变化。
在 iOS 上,当原生 UIApplication.willResignActiveNotification 和 UIApplication.didBecomeActiveNotification 事件被触发时发出。 在 Android 上,当 Capacitor 的 Activity 的 onResume 和 onStop 方法被调用时发出。 在 Web 上,当 document 的 visibilitychange 被触发时发出。
| 参数 | 类型 |
|---|---|
eventName | 'appStateChange' |
listenerFunc | |
返回值:
Promise<PluginListenerHandle>
自: 1.0.0
addListener('pause', ...)
addListener(eventName: 'pause', listenerFunc: () => void) => Promise<PluginListenerHandle>
监听应用或活动暂停时的事件。
在 iOS 上,当原生 UIApplication.didEnterBackgroundNotification 事件被触发时发出。 在 Android 上,当 Capacitor 的 Activity 的 onPause 方法被调用时发出。 在 Web 上,当 document 的 visibilitychange 被触发且 document.hidden 为 true 时发出。
| 参数 | 类型 |
|---|---|
eventName | 'pause' |
listenerFunc | () => void |
返回值:
Promise<PluginListenerHandle>
自: 4.1.0
addListener('resume', ...)
addListener(eventName: 'resume', listenerFunc: () => void) => Promise<PluginListenerHandle>
监听应用或活动恢复时的事件。
在 iOS 上,当原生 UIApplication.willEnterForegroundNotification 事件被触发时发出。 在 Android 上,当 Capacitor 的 Activity 的 onResume 方法被调用时发出, 但仅在 resume 首次触发之后。 在 Web 上,当 document 的 visibilitychange 被触发且 document.hidden 为 false 时发出。
| 参数 | 类型 |
|---|---|
eventName | 'resume' |
listenerFunc | () => void |
返回值:
Promise<PluginListenerHandle>
自: 4.1.0
addListener('appUrlOpen', ...)
addListener(eventName: 'appUrlOpen', listenerFunc: URLOpenListener) => Promise<PluginListenerHandle>
监听应用的 URL 打开事件。这处理自定义 URL scheme 链接以及你的应用处理的 URL(iOS 上的 Universal Links 和 Android 上的 App Links)。
| 参数 | 类型 |
|---|---|
eventName | 'appUrlOpen' |
listenerFunc | |
返回值:
Promise<PluginListenerHandle>
自: 1.0.0