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
インスタンスでデータにアクセスするさまざまな方法に注目してください。
データを返す
プラグインの呼び出しは、成功するか失敗するかのどちらかです。プラグイン呼び出しは JavaScript のプロミスからメソッド名を借用しています。成功を示すには resolve()
を呼び出し(オプションでデータを返す)、失敗をエラーメッセージで示すに は reject()
を使用します。
プラグインコールの resolve()
メソッドは JSObject
を受け取り、JSON でシリアライズ可能なデータ型をサポートします。以下は、データをクライアントに返す例です:
JSObject ret = new JSObject();
ret.put("added", true);
JSObject info = new JSObject();
info.put("id", "unique-id-1234");
ret.put("info", info);
call.resolve(ret);
呼び出しを失敗、または拒否するには、 call.reject
を使用します。エラー文字列と、オプションでエラーコードと Exception
インスタンスを渡します。
call.reject(exception.getLocalizedMessage(), null, exception);
プラグイン呼び出しの永続化
ほとんどの場合、プラグインメソッドはタスクを実行するために呼び出され、すぐに終了することができます。しかし、後でアクセスできるようにプラグインの呼び出しを有効にしておく必要がある場合もあります。例えば、位置情報データのライブストリーミングのようなデータを定期的に返したり、非同期タスクを実行したりする場合です。
プラグイン呼び出しを持続させる方法の詳細については、プラグイン呼び出しの保存に関するこのガイド を参照してください。