如何__CAPGO_KEEP_0__处理平台差异

How Capacitor Handles Platform Differences

Learn how to effectively manage platform differences in mobile app development using a single codebase for iOS and Android.

Martin Donadieu

Martin Donadieu

Content Marketer

How Capacitor Handles Platform Differences

Capacitor helps developers build apps for iOS and Android using the same codebase, while addressing platform-specific differences. It simplifies native feature integration, ensures compliance with platform guidelines, and optimizes performance. Key highlights:

  • Platform Detection: Use Capacitor.getPlatform() 适用于特定平台的code
  • 内置插件: 为像摄像头、存储和地理位置这样的功能提供统一的API。
  • 自定义插件: 为独特需求添加本机code。
  • UI调整: 遵循iOS的设计规则(例如 SF符号,圆角按钮)和Android(例如 材料图标,左对齐按钮)。
  • 配置: 调整设置 capacitor.config.json 适用于两种平台。
  • 实时更新 Capgo: 立即部署更新,无需等待应用商店延迟,实现 24 小时内 95% 的用户采用率。

快速比较

功能iOSAndroid
导航底部选项卡栏、左侧返回按钮顶部导航抽屉、底部导航
跨平台开发San Francisco 字体Roboto 字体
插件(例如,摄像头)AVFoundation摄像头2 API
构建输出.ipa 文件.aab.apk 文件

Capacitor 填补了 web 和原生应用开发之间的差距,使得创建跨平台应用变得更加容易,同时保持平台特定的优化.

跨平台开发:探索 CapacitorJS 与 …

如何 Capacitor 处理 Code 平台

Capacitor 框架文档网站

Capacitor 提供了管理 code 平台特有的工具,允许开发者使用单一 API 创建针对 iOS 和 Android 的定制体验。

在 Code 中检测平台

使用 Capacitor 的内置 API 平台检测当前平台非常简单。该方法识别正在运行的环境,使其容易应用条件逻辑: 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可能使用, where iOS might use Face ID和Android依赖于指纹识别。与平台检测功能一起,__CAPGO_KEEP_0__内置插件简化了原生集成。 and Android relies on Fingerprint Authentication. Along with platform detection, Capacitor’s built-in plugins simplify native integration.

__CAPGO_KEEP_0__内置了一套核心插件,能够处理原生差异并实现平滑的原生集成。这些插件管理原生实现的复杂性,同时提供一致的JavaScript接口:

Capacitor comes with a set of core plugins that handle platform-specific differences seamlessly. These plugins manage the complexities of native implementations while providing a consistent JavaScript interface:

iOS实现Android实现相机
AVFoundation相机2 __CAPGO_KEEP_0__Camera2 API
UserDefaults内置插件简化了原生集成SharedPreferences
地理位置CoreLocationLocationManager

每个插件都自动使用平台的原生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 vs Android 设计规则

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

设计元素iOSAndroid
导航底部选项卡栏、左侧的返回按钮顶部导航抽屉、底部导航
字体San Francisco 字体Roboto 字体
按钮圆角矩形,居中文本左对齐文本的 Material Design 按钮
标题居中的大标题左对齐的应用栏
图标SF SymbolsMaterial 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
  }
}

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

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

__CAPGO_KEEP_0__

平台特定构建设置

优化 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安卓
权限添加条目 Info.plist在这里定义 AndroidManifest.xml
图标尺寸从 20px 到 1024px密度从 mdpi 到 xxxhdpi
启动屏幕基于 Storyboard 的基于 Layout XML 的
构建输出.ipa 文件.aab.apk 文件

更新应用程序 Capgo

Capgo 实时更新控制台界面

保持 Capacitor 应用程序 Capgo 提供了一个实时更新系统,符合 iOS 和 Android 平台的指南。

Capgo 功能

功能描述__CAPGO_KEEP_0__
即时更新无需等待 App Store 审核即可立即部署确保 iOS 和 Android 平台上的统一体验
端到端加密确保更新传递的安全满足两大平台的安全要求
频道系统针对特定用户群支持 beta 测试和分阶段发布
部分更新仅下载修改的内容节省带宽和加速更新

Capgo已成功推送23.5万次更新,实现了24小时内95%的活跃用户更新率 [1]这些功能使得 更新管理 在各个平台上变得更加smooth和高效

Capgo 平台管理

Capgo的频道系统使得更新管理变得更加容易。开发者可以在beta用户中测试iOS特有的功能,分阶段发布Android更新,并且可以轻松地跟踪性能指标

该平台遵循了Apple和Google的OTA更新要求 [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上顺畅运行。

继续阅读关于Capacitor如何处理平台差异的内容

如果您正在使用 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-layer 的 bug 时,通过 Capgo 直接将修复推送给用户,而不是等待几天的 app store 审核。用户在后台接收更新,而原生代码的更改仍然在正常的审查路径中。

立即开始

Latest from our Blog

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