Capacitor Android プラグインガイド
Android 用の Capacitor プラグインを構築するには、Android SDK とのインターフェイスとして Java または Kotlin を記述する必要があります。
はじめかた
まず、プラグインガイドの はじめかた にあるように、プラグインを生成してください。
次に、Android Studio で echo/android/
を開きます。このファイルは、プラグインを作成するときに使用したプラグイン ID とプラグインクラス名によって変化します。
例えば、ID が com.domain.echo
で Plugin Class Name が Echo
のプラグインの場合、.java
ファイルは android/src/main/java/com/domain/echo/EchoPlugin.java
に存在することが確認できます。
Kotlin を使う
Capacitor はデフォルトで Java を使用しますが、お好みで Kotlin を代わりに使用することもできます。
プラグインを生成したら、Android Studio で Java プラグインクラスを右クリックし、メニューから「Convert Java file to Kotlin file」オプションを選択します。Android Studio は、Kotlin をサポートするためにプロジェクトを設定する手順を説明します。これが完了したら、Java クラスを再度右クリックし、変換オプションを再選択して Kotlin クラスに変換します。
プラグインの基本
Android 用 Capacitor プラグインは com.getcapacitor.Plugin
を継承したシンプルな Java クラスで、 @CapacitorPlugin()
アノテーションを持っています。
また、JavaScript から呼び出し可能ないくつかのメソッドを @PluginMethod()
アノテーションで持っています。
プラグインが生成されたら、生成ツールで選択したプラグインクラス名のファイルを開いて、プラグインの編集を開始することができます。
簡単なサンプル
生成された例では、単純な echo プラグインが echo
関数を持ち、単に与えられた値を返します。
この例では、Plugin Call,からデータを受け取り、呼び出し元にデータを返すという、Capacitor プラグインの中核となるコンポーネントを示しています。
EchoPlugin.java
package android.plugin.test;
import com.getcapacitor.JSObject;
import com.getcapacitor.Plugin;
import com.getcapacitor.PluginCall;
import com.getcapacitor.PluginMethod;
import com.getcapacitor.annotation.CapacitorPlugin;
@CapacitorPlugin(name = "Echo")
public class EchoPlugin extends Plugin {
@PluginMethod()
public void echo(PluginCall call) {
String value = call.getString("value");
JSObject ret = new JSObject();
ret.put("value", value);
call.resolve(ret);
}
}
Call Data へのアクセス
各プラグインメソッドは、クライアントからプラグインメソッド呼び出しの全ての情報を含む com.getcapacitor.PluginCall
のインスタンスを受け取ります。
クライアントは、number、text、booleans、オブジェクト、配列など、JSON でシリアライズ可能な任意のデータを送信することができます。このデータ には、コールインスタンスの options
フィールド、または getString
や getObject
などの便利なメソッドでアクセスすることができます。
例えば、メソッドに渡されるデータを取得する方法は以下の通りだとします:
@PluginMethod()
public void storeContact(PluginCall call) {
String name = call.getString("yourName", "default name");
JSObject address = call.getObject("address", new JSObject());
boolean isAwesome = call.getBoolean("isAwesome", false);
if (!call.getData().has("id")) {
call.reject("Must provide an id");
return;
}
// ...
call.resolve();
}
getData
の has
メソッドを使用してキーをチェックする方法など、 PluginCall
インスタンスでデータにアクセスするさまざまな方法に注目してください。