通知
初期化後にネイティブコンテンツや表示が変わる場合は、receiveListenersを使います。これは変更成功の通知であり、メソッドの呼び出しを横取りするものではありません。転送する場所はCapacitorとCordovaのガイドを参照してください。このページでは共通のイベント契約を説明します。
たとえば、別のネイティブタブを選択すると、バーの位置は変わらず強調項目だけが変わります。更新通知がなければ、Webシートを開いた際に古い選択の画像が再利用されることがあります。プラグインの選択成功イベントを発行し、updateに含めます。非表示操作は別扱いです。後の外観更新で隠したバーが再表示されないよう、そのイベントをnoneへ振り分けます。
起動と振り分け
プラグインから通知を転送すると、Webランタイムが購読する前でも、Engineは条件に一致する最新の投影先を保持できます。別の状態変数や初期状態のコールバックは不要です。プラグインからアプリケーションへのイベント配信は維持してください。Engineは通知、更新、ユーザー操作を再実行せずに状態を記録します。投影先の通知がなければ、ネイティブビューの可視性から初期の投影先を推定します。監視する通知が発生する前に登録を作成してください。
プラグインが複数の登録を持つ場合、各登録へ通知を渡します。receiveListeners.matchが所有するサーフェスを選びます。外観の更新は投影先を変えません。接続前のネイティブの配置と可視性は、引き続きレンダラーが管理します。
デフォルトのWebフォールバックでは、準備済み画像やネイティブスクロールバインディングがない状態でスクロールすると、レンダラーがネイティブ投影先の通知で現在の配置を確認するまでWebフォールバックが表示され続けます。外観更新だけでは、その確認になりません。失敗時にネイティブへ復旧する利用側は、ネイティブのジオメトリを自ら最新に保つ必要があります。
更新成功と表示のイベントを選ぶ
受信イベントの宣言はすべてreceiveListenersに属します。updateのリストは画像と設定済みの値バインディングを更新し、projectionのリストは投影先を選択します。任意のmatchは、所有するサーフェスへの通知を絞り込みます。
| 通知 | 既存プラグインで発行する場所 |
|---|---|
appearanceChanged(updateイベント) |
setColorsなど、ネイティブの外観更新が成功した後 |
transitionStarted(web) |
フォールバックDOMが動き始める前、またはWebレイヤーがネイティブビューを覆う前 |
shown(native) |
プラグインの既存の表示操作の後、またはWeb投影から戻るとき |
hidden(none) |
プラグインの既存の非表示操作の後 |
例の名前は利用側が選ぶ規約であり、Engineの予約済みメソッドではありません。updateイベントは要求された投影先を変えずに、準備済み画像と設定済みの値を更新します。setColorsを再度呼び出すことはありません。
DOMが動き始める前にtransitionStartedを、再びネイティブ投影を要求するときにshownを、プラグイン自身の非表示操作の後にhiddenを発行します。ネイティブキャプチャ、URL変換、画像の準備、描画の確認、画像の破棄、リスナーの後処理はEngine内で行います。Engineはプラグインのshow、hide、選択、広告読み込みメソッドを呼び出しません。レンダラーの破棄時に、iOSではprojection.destroy()、Androidではprojection.close()で登録を終了します。登録はそのライフタイム全体にわたって保持し、ネイティブAPIはUIスレッドで呼び出してください。