Ionicは、自社の新たなWebビューコンポーネントのIonic Portalsについて、iOSやAndroid上で使用可能なネイティブWebビューコントロールの"スーパーチャージ"バージョンだ、と説明する。その目的は、Webアプリをネイティブコードに効率よく、簡単に統合できるようにすることだ。
Ionic Portalsのベースになっているのは、JavaScriptやHTML、CSSを使ったハイブリッドネイティブアプリ開発を可能にする、ネイティブランタイムのCapacitorである。Ionicによれば、Webアプリをネイティブアプリとしてパッケージすることを望むWeb開発者にとって、Capacitorは完璧なソリューションだ。Ionic Portalsが重視しているのは、しかしながら、その問題の別の面である。すなわち、ポータルへの認証やプロダクトカタログといった既存のWebワークフローを、ネイティブアプリに統合する必要のあるアプリ開発者が対象なのだ。
Ionic Portalsは、OSの提供する既存のWebビュー上に、ネイティブ機能のWebエクスペリエンスへの公開、Webレイヤの生成結果をコンシューム可能にするWeb-ネイティブ間通信ブリッジ、ネイティブ機能やデータをWebに公開する新たなAPIを定義するためのプログラムプラグイン、その他の機能を構築する。
Ionic Portalsの基本的な抽象化単位はポータルで、これがWebアプリをネイティブアプリに組み込む手段を提供している。異なるポータルを通じて複数のWebアプリを組み込むことや、ひとつのWebアプリの異なる画面を別々のポータルに組み込むことができる。
Ionicによれば、Ionic Portalsを使用することによって、ネイティブ開発チームとWeb開発チームがそれぞれの責任範囲を損なうことなく、より適切なコラボレーションを持つことも可能になる。
ポータルを通じて優れたセキュリティプラクティスを実施することにより、開発者とユーザを同じように保護することが可能になります。ネイティブ開発者は、詳細なパーミッションを設定することで、Webチームがアクセス可能なネイティブアプリの部分を指定できます。この機能によって、ネイティブチームとWebチームが、データへの不正なアクセスや、重要な機能やデータへの誤った上書きの発生を防止しながら、安全にコラボレーションすることが可能になるのです。
iOSプロジェクトにIonic Portalsを追加するための推奨方法は、次のような依存関係をプロジェクトにPodfile
に配置することだ。
pod 'IonicPortals', '~> 0.2.0'
Androidでも同じように、Ionic Portalsの依存関係をbuild.gradle
ファイルに追加すればよい。
dependencies {
implementation 'io.ionic:portals:0.2.0'
}
同様のアプローチを使って、カメラやクリップボード、ローカルファイルシステムなどにアクセスするCapacitorの20以上のプラグインを追加すれば、Ionic Portalsを拡張することも可能になる。
Ionic Portalsをプロジェクトに統合したならば、自身のAPIキーでPortalManager.register()
を呼び出して初期化し、ローカルにストアしたWebアプリでポータルのインスタンスを生成すると同時に、必要なプラグインも初期化する。
PortalManager.newPortal("profile")
.setStartDir("webapp")
.addPlugin(CameraPlugin.class)
.setInitialContext(initialContextProfile)
.create();
Ionic Portalsは、アプリストアでの新たなレビューやリリースを必要とせずにアプリをアップデートする機能もサポートしている。