0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

[OutSystems]モバイルアプリケーションのApp Identifierをプログラムで取得する

Posted at

OutSYstemsのモバイルアプリケーションに自動で付与されるApp Identifierを取得するJavaScript APIが追加されているようなので動作確認してみる。

(SAML認証をモバイルアプリケーションにも提供するSingle Sign-On Mobile Pluginの実装を見ているときに存在に気づいた)

結論から

モバイルアプリケーションへのDeep linkに使うApp IdentifierをJavaScript API「OutSystemsNative.ApplicationInfo.getAppPackageIdentifier」を利用することでプログラムから取得できるようになった(MABS9から)。

環境情報

Personal Environment(Version 11.18.1 (Build 37884))
Service Studio(Version 11.53.39)
MABS 9.0

App Identifier

Service CenterのApplicationページ > Distributeタブ > Configure
image.png

で開いたページで、App Identifier項目を確認できる。
設定可能項目であるが、デフォルトで、「(hostを.区切りで逆順にしたもの).モジュール名」というフォーマットの値が入っている。

Deep link

モバイルアプリケーションの特定の画面へのリンク(Deep link)は

「App Identifier://モジュール名/画面名」

の形式。このApp Identifierが今回問題としているもの。
モバイルアプリのディープリンクの設定

App Identifierを取得する新API(MABS 9)

MABS 9で追加された機能にJavaScriptの新しい関数「OutSystemsNative.OSApplicationInfo.getAppPackageIdentifier」というものがあり、App Identifierを取得できる。

It is now possible to obtain the application package identifier using the js method OSApplicationInfo.getAppPackageIdentifier. (RNMT-5784)

使い方は、Client Actionのフロー内にJavaScript要素を配置し、以下のように記述する。

function Success(appId) {    
    $parameters.AppIdentifier = appId;
    $parameters.Success = true;
    $resolve();
}

function Fail(message) {
    $parameters.ErrorMessage = message;
    $parameters.Success = false;
    $resolve();
}

OutSystemsNative.ApplicationInfo.getAppPackageIdentifier(Success, Fail);

OutSystemsNative.ApplicationInfo.getAppPackageIdentifier関数に成功時のコールバックと失敗時のコールバックを渡す。成功すると、成功時のコールバック(1つ目)が動作し、その引数にApp Identifierが渡ってくる。

ただし、今のところドキュメントが無いようなので、公開で利用して良いものかどうかは不明。
公式サポートプラグインであるSingle Sign-On Mobileでは利用していた。

動作確認

実際にJavaScriptを組み込んで動作確認してみた。

PWAの場合、以下のエラーメッセージが表示される(つまり、OutSystemsNativeはPWAでは未定義になる)。

Can't find variable: OutSystemsNative

Native (android)ではService Centerで設定してあったApp Identifierが正しく取得できた。

用途

Single Sign-On Mobileでやっているように、外部の認証サーバーに認証をリクエストし、認証成功後アプリケーションに戻ってくる時に使う。

外部の認証サーバーにリクエストする際に、戻ってくる画面へのパスをDeep linkで渡すのにApp Identifierが必要になる。
私も、OpenID Connectの実装をする際にApp Identifierが必要になったことがある。そのときはこのAPIが利用できなかったために、利用側でApp Identifierを設定値として保持してもらった。このAPIが利用できれば、設定値が不要になりちょっと楽ができる。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?