アプリを Capacitor3.0 にアップデート
Capacitor 3 は、エコシステムに重要なアップデートとエキサイティングな新機能をもたらします。
アプリを Capacitor3 にアップグレードした後、何かフィードバックがあれば このディスカッション で共有していただけませんか?ご意見をお待ちしております 💖
プラグインを Capacitor の新しいバージョンにアップグレードしたいと考えているプラグイン作者の方は、 Upgrade Guide for Capacitor Plugins をご覧ください。
NodeJS 12+
Node 8 は生産終了となりました。Node 10 は 2021 年 4 月 30 日に寿命を迎えます。Capacitor 3 は NodeJS 12 以上が必要です。(最新の LTS バージョンを推奨します。)
Ionic CLI
If you are using the Ionic CLI, official Capacitor 3 support starts at version 6.16.0. We suggest upgrading to the latest version at this time via npm install -g @ionic/cli
.
Update Capacitor CLI and Core
npm install @capacitor/cli@latest-3 @capacitor/core@latest-3
ES2017+
Capacitor 3 は ES5 ではなく、ES2017 の環境でビルドされるようになりました。また、 プラグインテンプレートも ES2017 をターゲットに更新されました ので、サードパーティのプラグインもターゲットを更新することが推奨されます。
この変更は、Capacitor が公式にサポートしていない IE11 をサポートしている場合を除き、アプリに影響を与えることはありません。
TypeScript 3.8+
Capacitor 3 は新しい TypeScript の構文を使用しており、TS 3.8 以降でしか使用できません。
Capacitor Config の変更
TypeScript 3.8+がインストールされている場合、 capacitor.config.json
を移行して、 capacitor.config.ts
という名前の Type 化された TypeScript 設定ファイルにすることができます。 .json
ファイルを使い続けることもできますが、TypeScript の設定ファイルの方が、チームにとってより良い開発環境を提供できるかもしれません。以下は、 Capacitor Test App で使用されている capacitor.config.ts
フ ァイルの例です。c
/// <reference types="@capacitor/local-notifications" />
/// <reference types="@capacitor/push-notifications" />
/// <reference types="@capacitor/splash-screen" />
import { CapacitorConfig } from '@capacitor/cli';
const config: CapacitorConfig = {
appId: 'com.capacitorjs.app.testapp',
appName: 'capacitor-testapp',
webDir: 'build',
plugins: {
SplashScreen: {
launchAutoHide: false,
},
LocalNotifications: {
smallIcon: 'ic_stat_icon_config_sample',
iconColor: '#CE0B7C',
},
PushNotifications: {
presentationOptions: ['alert', 'sound'],
},
},
};
export default config;
公式プラグイン
すべてのプラグインは、Capacitor コアから削除され、独自の npm パッケージになりました。これにはいくつかの理由がありますが( #3227 参照)、コアチームはこれが正しい方法であると確信しています。コアプラグインのインポートは以下のように行います。
import { Camera } from '@capacitor/camera';
Background Task、Permissions、 Photos の各プラグインは削除されました
- Background Task: このプラグインは、ほとんど使用されていないようで、ほとんどの開発者が期待していたようには動作しませんでした。コアチームは将来的にバックグラウンド機能を再検討する予定です。アップデートのために #3032 に登録してください
- Permissions: コアチームはこの集中型のアプローチに代わるものを実装しました。コミュニティのプラグインもこれを採用することができます(new Permissions API を参照)
- Photos。この文書化されていない iOS 専用のプラグインは削除されました。
@capacitor-community/media
をご利用ください
Accessibility、App、Modals plugins は分割されました
- Accessibility
- VoiceOver and TalkBack functionality moved into Screen Reader
- App
- App-related info and functionality remains in App
- App URL handling (
openUrl()
andcanOpenUrl()
) moved into App Launcher
- Modals
- Action Sheet functionality (
showActions()
) moved into Action Sheet - Dialog window functionality (
alert()
,prompt()
, andconfirm()
) moved into Dialog
- Action Sheet functionality (
新しい公式プラグインパッケージを使用するためにアプリを移行する
この変更に伴い、これまで使用していたプラグインを個別にインストールする必要があります。
- Search your project for core plugins extracted from the
Plugins
object from@capacitor/core
- Find the corresponding plugin documentation, keeping in mind that some plugins have been split up
- Follow the installation instructions for each plugin in the documentation
- Change the plugin import to import from the plugin's package instead (see Plugin Imports)
- Follow any instructions in Backward Incompatible Plugin Changes
Ionic Framework を使っていますか?
Ionic Framework では、以下のプラグインで API を利用しています:
Ionic Framework で最高のユーザーエクスペリエンスを得るためには、アプリにプラグインをインポートしていなくても、これらのプラグインがインストールされていることを確認する必要があります:
npm install @capacitor/app @capacitor/haptics @capacitor/keyboard @capacitor/status-bar
Plugin のインポート
The Plugins
object is deprecated, but will continue to work in Capacitor 3. Capacitor plugins should be updated to use the new plugin registration APIs (see the Upgrade Guide for plugins), which will allow them to be imported directly from the plugin's package.
今後は、@capacitor/core
の Plugins
オブジェクトは使 用しないでください。
// OLD
import { Plugins } from '@capacitor/core';
const { AnyPlugin } = Plugins;
プラグインのパッケージから直接インポートするのが望ましいのですが、これを可能にするためには、プラグインを Capacitor 3 で動作するようにアップデートする必要があります。
// NEW
import { AnyPlugin } from 'any-plugin';
後方互換性のないプラグインの変更
プラグインの API の多くは Capacitor 3 への移行を容易にするために変更されませんが、一部のプラグインはコードの更新や手動での移行が必要になります。
- Accessibility / Screen Reader
isScreenReaderEnabled()
メソッドは、isEnabled()
に名称変更されました。accessibilityScreenReaderStateChange'
イベントは、'stateChange'
に名称変更されました。- Android および iOS では、スクリーンリーダーが現在アクティブな場合にのみ、
speak()
が動作します。スクリーンリーダーがアクティブかどうかに関わらず音声合成を行うには、@capacitor-community/text-to-speech
を使用してください。
- Browser
prefetch()
が削除されました。
- Device
- App information has been removed from
getInfo()
(appVersion
,appBuild
,appId
andappName
). Use the App plugin'sgetInfo()
for this information. uuid
has been removed fromgetInfo()
. Use the newgetId()
function.
- App information has been removed from
- Haptics
HapticsNotificationType
列挙型のキーが、他の列挙型と一致するように、大文字からキャメルケースに変更されました。
- Local Notifications
- このプラグインは新しい Permissions API を使用するようになりました。
requestPermission()
が削除されたので、requestPermissions()
を使用してください。
- このプラグインは新しい Permissions API を使用するようになりました。
- Push Notifications
- このプラグインは新しい Permissions API を使用するようになりました。
requestPermission()
は削除されました。requestPermissions()
を使用してください。
- このプラグインは新しい Permissions API を使用するようになりました。
- Share
share()
メソッドはany
ではなくShareResult
を返すようになりました。share()
の戻り値には、completed
が含まれなくなりました。完了しなかった場合は、代わりに拒否されます。
- Storage
- データ移行が必要です! 内部ストレージのメカニズムが変更され、データ移行が必要になりました。便利なメソッドが追加されました:
migrate()
. エンドユーザーに影響を与えずにアプリを更新するには、他のメソッドの前にmigrate()
を呼び出してください。
- データ移行が必要です! 内部ストレージのメカニズムが変更され、データ移行が必要になりました。便利なメソッドが追加されました:
- Filesystem
statute()
メソッドは、すべてのプラットフォームで ctime および mtime のタイムスタンプをミリ秒単位で返すようになりました。以前 は、iOS はタイムスタンプを秒単位で返していました。
Logging の変更
The hideLogs
configuration option has been deprecated in Capacitor 3. It has been replaced by a new loggingBehavior
configuration option. Details can be found in the config documentation.
iOS
Capacitor 3 は iOS 12+をサポートしています。Xcode 12+が必要です。CocoaPods 1.8+を推奨します。
CocoaPods のアップデート
CocoaPods を最新の安定版にアップグレードすることを推奨します。 CocoaPods 1.8 では CDN を使用するようになったため、pod repo update
を定期的に実行する必要がなくなりました。
CocoaPods のバージョンは pod --version
で確認し、インストール方法は cocoapods.org を参照してください。