__CAPGO_KEEP_0__ 处理平台差异的方法

How Capacitor Handles Platform Differences

了解如何使用单一代码库为iOS和Android进行移动应用开发,有效管理平台差异。

How Capacitor Handles Platform Differences

Capacitor 帮助开发者使用相同的代码库构建 iOS 和 Android 应用程序,同时解决平台特有的差异。它简化了原生功能的集成、确保了平台指南的遵守以及优化了性能。关键亮点:

  • 平台检测: 使用 Capacitor.getPlatform() to apply platform-specific code.
  • 内置插件: 为像摄像头、存储和地理位置等功能提供统一的 API。
  • 自定义插件: Add native code for unique requirements.
  • UI 调整: 遵循 iOS 设计规则(例如, SF Symbols、圆形按钮) 和 Android (例如, Material Icons、左对齐按钮).
  • 配置: 在两种平台上调整设置. capacitor.config.json 实时更新
  • : __CAPGO_KEEP_0__ Capgo功能

iOS

iOS Android Android
导航 底部导航栏,左侧返回按钮 顶部导航抽屉,底部导航
字体 San Francisco 字体 Roboto 字体
插件(例如,相机) AVFoundation 相机2 API
构建输出 .ipa 文件 .aab 或 .apk 文件

Capacitor 将 web 和原生应用开发之间的差距桥接起来,使其更容易创建跨平台应用,同时保持平台特定的优化。

跨平台开发:探索 CapacitorJS 与 …

如何 Capacitor Code 处理平台差异

Capacitor 框架文档网站

Capacitor offers tools to manage platform-specific code, allowing developers to create tailored experiences for iOS and Android using a single API.

Code 检测平台

With Capacitor’s built-in platform API, detecting the current platform is simple. The Capacitor.getPlatform() 方法识别正在运行的环境,使其易于应用条件逻辑:

import { Capacitor } from '@capacitor/core';

const platform = Capacitor.getPlatform();
if (platform === 'ios') {
  // Code specific to iOS
} else if (platform === 'android') {
  // Code specific to Android
}

这种方法尤其适合像 生物识别验证,iOS可能使用 Face ID ,而Android依赖于指纹识别。与平台检测相结合,Capacitor内置的插件简化了原生集成。

内置平台功能

Capacitor内置了一套核心插件,它们可以轻松处理原生实现中的平台差异。这些插件管理原生实现的复杂性,同时提供一致的JavaScript接口:

插件 iOS实现 Android实现
相机 AVFoundation 相机2 API
存储 用户默认值 共享首选项
地理位置 核心位置 位置管理器

每个插件都自动使用平台的本机API,确保平滑的性能和功能。

构建自定义平台插件

对于无法满足您需求的内置插件的情况,您可以创建自定义插件来访问特定的本机API。以下是如何做到的:

  1. 定义插件

    @Plugin({
      name: 'CustomFeature',
      platforms: ['ios', 'android']
    })
  2. 添加本机Code

    @PluginMethod()
    async customFunction(): Promise<void> {
      if (Capacitor.getPlatform() === 'ios') {
        // Add iOS-specific code
      } else {
        // Add Android-specific code
      }
    }
  3. 实现平台处理器

    • iOS(Swift):

      @objc func customFunction(_ call: CAPPluginCall) {
        // Add native iOS functionality
      }
    • Android(Kotlin):

      @PluginMethod
      fun customFunction(call: PluginCall) {
        // Add native Android functionality
      }

自定义插件允许访问本机功能,同时保持API一致且易于使用。这确保了性能和功能,而不会复杂化开发过程。

平台特定UI指南

iOS与Android设计规则

在设计iOS和Android时,遵循本机设计模式非常重要。每个平台的用户对导航、字体、按钮、标题和图标等方面的期望都不同。以下是它们的比较:

设计元素 iOS Android
导航 __CAPGO_KEEP_0__ __CAPGO_KEEP_0__
__CAPGO_KEEP_0__ San Francisco 字体 Roboto 字体
__CAPGO_KEEP_0__ 圆角矩形,居中文本 Material Design 按钮,左对齐文本
__CAPGO_KEEP_0__ 大标题,居中 应用栏,左对齐
__CAPGO_KEEP_0__ SF Symbols Material Icons

跨平台设计标准

虽然每个平台都有自己的规则,但在两者之间保持一致的品牌身份至关重要。以下是如何确保一致性的方法:

const sharedStyles = {
  primaryColor: '#007AFF', // iOS blue
  androidPrimaryColor: '#6200EE', // Material Design purple
  borderRadius: Capacitor.getPlatform() === 'ios' ? '10px' : '4px'
};

:root {
  --app-header-height: var(--platform-header-height, 56px);
  --app-safe-area-top: var(--platform-safe-area-top, 0px);
}

通过使用Capacitor,您可以将平台特定的UI组件集成到应用程序中,同时保持功能的一致性。它还可以帮助管理系统级设置,如暗色模式和动态类型。要完成此过程,请确保您的平台特定构建设置与这些指南相符。

平台设置和配置

在管理您的平台code之后,正确的配置至关重要,以确保您的应用程序在iOS和Android上运行得平滑。

在 capacitor.config.json

使用 capacitor.config.json 文件来定义关键的平台特定设置:

{
  "appId": "com.example.app",
  "appName": "MyApp",
  "ios": {
    "contentInset": "always",
    "backgroundColor": "#ffffff",
    "scheme": "myapp",
    "preferredContentMode": "mobile"
  },
  "android": {
    "backgroundColor": "#FFFFFF",
    "allowMixedContent": true,
    "captureInput": true,
    "webContentsDebuggingEnabled": true
  }
}

以下是需要考虑的配置选项:

选项 iOS Android
深度链接 scheme 属性 androidScheme 属性
状态栏 statusBar.style statusBar.backgroundColor
键盘 keyboard.resize keyboard.resize, keyboard.style
启动屏幕 splashScreen.launchShowDuration splashScreen.layoutName

一旦运行时设置就位,调整您的构建设置以为每个平台提高性能。

平台特定构建设置

精细调整构建设置以优化您的应用程序的iOS和Android。

对于iOS,更新 Info.plist file:

<key>NSCameraUsageDescription</key>
<string>Required for document scanning</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>Required for store locator</string>

对于 Android 来说,需要修改 android/app/build.gradle:

android {
    defaultConfig {
        minSdkVersion 21
        targetSdkVersion 33
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt')
        }
    }
}

以下是关键的构建考虑因素:

方面 iOS Android
权限 在 Info.plist 定义在 AndroidManifest.xml
图标 尺寸从 20px 到 1024px 密度从 mdpi 到 xxxhdpi
启动屏幕 基于Storyboard的 基于XML布局的
构建输出 .ipa 文件 .aab 或 .apk 文件

更新应用程序 Capgo

Capgo实时更新控制台界面

保持 Capacitor应用程序 在 iOS 和 Android 上高效更新至关重要。 Capgo 提供了一个与两大平台指南相符的实时更新系统。

Capgo 功能

功能 描述 平台优势
实时更新 上下文: 首页问题/解决方案部分。 角色: 页面或部分标题。 见于: 页面 premium-support.astro。 消息键 `ps_help_updates_title` (Ps Help Updates Title)。 无需等待 app store 审核即可立即部署
确保 iOS 和 Android 上的统一体验 端到端加密 上下文: Capgo 解决方案营销页面。 角色: 页面或部分标题。 见于: 页面 solutions/fintech.astro。 消息键 `solutions_fintech_cert3_title` (Solutions Fintech Cert3 Title) | 页面 solutions/fintech.astro。 角色: 页面或部分标题。 见于: 页面 solutions/fintech.astro。 消息键 `solutions_fintech_sol3_title` (Solutions Fintech Sol3 Title) | 页面 solutions/healthcare.astro。 角色: 页面或部分标题。 见于: 页面 solutions/healthcare.astro。 消息键 `solutions_healthcare_sol3_title` (Solutions Healthcare Sol3 Title) | 页面 solutions/fintech.astro。 角色: 短 UI 标签或导航项。 见于: 页面 solutions/fintech.astro。 消息键 `solutions_fintech_badge_e2e` (Solutions Fintech Badge E2e) | 页面 solutions/healthcare.astro。 角色: 短 UI 标签或导航项。 见于: 页面 solutions/healthcare.astro。 消息键 `solutions_healthcare_badge_e2e` (Solutions Healthcare Badge E2e)。
确保更新传递的安全性 针对特定用户群 支持beta测试和分阶段发布
部分更新 仅下载修改的内容 节省带宽并加快更新

Capgo has delivered 23.5 million updates, achieving a 95% active user update rate within 24 hours [1]这些功能使得 更新管理 更流畅和高效的跨平台

Capgo Platform Management

Capgo’s channel system makes updates easier to manage. Developers can test iOS-specific features with beta users, roll out Android updates in stages, and track performance metrics seamlessly.

该平台遵循苹果和谷歌的即时更新要求 [1].

目前,750个生产应用程序依赖于Capgo,保持了82%的全球更新成功率 [1].其CI/CD集成简化了部署,回滚功能允许开发人员在出现问题时立即回滚到之前的版本。实时分析提供了更新性能的见解,并有助于维持应用程序的稳定性。

结论

平台管理利益

在Capacitor中有效地管理平台差异可以增强跨平台开发。其内置工具可以检测和配置平台,允许开发人员为iOS和Android创建smooth的体验,同时尊重每个平台的独特设计标准和功能。

通过专注于适当的平台管理,开发团队可以更快地发布更新并提高用户满意度。像Capgo这样的工具已经表明了如何通过一致的平台处理来实现更高的更新成功率和更好的用户体验 [1].

“我们实践敏捷开发,@Capgo在持续交付给我们的用户方面是 mission-critical!”
– Rodrigo Mantica [1]

这些见解可以指导您进行实际改进。

下一步

为了最大限度地利用这些利益,请考虑实施以下策略:

行动项 优点
启用平台检测 自动适应iOS和Android的需求
实现实时更新 避免急修的应用商店延迟
设置分析 跟踪每个平台的性能指标
启用回滚支持 快速解决平台特定问题

对于希望改进工作流程的开发者,工具如Capgo可以简化过程。具有端到端加密和CI/CD集成的功能有助于团队保持一致性,同时高效地部署更新。

在平台管理中取得成功,取决于使用正确的工具并遵循平台特定指南。通过专注于强大的检测和管理策略,开发者可以确保他们的应用程序在iOS和Android上顺畅运行。

继续阅读How Capacitor处理平台差异

如果您正在使用 How Capacitor Handles Platform Differences 为了规划原生媒体和界面行为,连接它与 Using @capgo/capacitor-live-activities for the native capability in Using @capgo/capacitor-live-activities, @capgo/capacitor-live-activities for the implementation detail in @capgo/capacitor-live-activities, Using @capgo/capacitor-video-player for the native capability in Using @capgo/capacitor-video-player, @capgo/capacitor-video-player for the implementation detail in @capgo/capacitor-video-player, and Using @capgo/capacitor-native-navigation 为使用@capgo/capacitor-native-navigation的原生能力。

Capacitor 应用的实时更新

当一个 web 层面的 bug 在 live 时,通过 Capgo 发送修复,而不是等待几天的 app store 审批。用户在后台接收更新,而原生改变仍在正常的审批路径中。

来自 Martin 的人性化支持

立即开始

最新博客

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