Capacitor Web/PWA プラグインガイド
Capacitor は、Web/Native 互換レイヤーを利用しており、Web 上の PWA で動作した場合と同様にネイティブで動作した場合の機能を持つプラグインを簡単に構築することができます。
はじめかた
まず、プラグインガイドの はじめかた の項目にあるように、プラグインを生成してください。
つづいて、echo/src/web.ts
を好きなエディタで開きます。
サンプル
Capacitor の Web プラグインの基本的な構造は次のようになります:
import { WebPlugin } from '@capacitor/core';
import type { EchoPlugin } from './definitions';
export class EchoWeb extends WebPlugin implements EchoPlugin {
async echo(options: { value: string }) {
console.log('ECHO', options);
return options;
}
}
EchoPlugin
インターフェースは、プラグインのメソッドシグネチャを定義します。TypeScript では、Web の実装 (EchoWeb
クラス) が正しくインタフェースを実装していることを確認することができます。
Permissions
プラグインがウェブ上でエンドユーザーの許可を必要とする機能を持つ場合、permissions パターンを実装する必要があります。
エイリアス
プラグインが必要とするパーミッションを抽象化し、グループ化するために、1 つ以上のエイリアスを開発する必要があります。これらのエイリアスは、パーミッションの状態を伝えるために使用されます。デフォルトでは、エイリアスは以下の状態のいずれかになります。
granted
: このエイリアスに含まれるすべてのパーミッションは、エンドユーザーによって許可されています (あるいはプロンプトが表示される必要はありません)。denied
: このエイリアスの 1 つ以上のパーミッションがエンドユーザーによって拒否されています。prompt
: 許可も拒否もされていないので、エンドユーザーに許可を求めるプロンプトを表示する必要があります。prompt-with-rationale
: エンドユーザーが以前に許可を拒否したことがあるが、まだプロンプトをブロックしていない。
これらは @capacitor/core
からエクスポートされた PermissionState
型で表現されます。
必要であれば、エイリアスのためにカスタムの状態を定義することも可能です。例えば、公式の Camera plugin では、 camera
と photos
のエイリアスに対して limited
ステート を定義しています。
エイリアスはクロスプラットフォームなので、プラグインのエイリアスを決定する際には、iOS、Android、Web のパーミッションを考慮するようにしてください。