DeepLink 外部オブジェクトは、アプリケーション上のディープリンクを手動で管理するのに役立ちます。
なし
なし
[ Deep Link Base URL ] プロパティで指定したベースを持つリンクをデバイスから開こうとしたときに、このイベントによってそのリンクが取得されます。イベントがトリガーされると、URI が渡されます。開発者は、処理が正常に完了した時点で通知する必要があります。そのためには、該当するパネルを呼び出す前に出力パラメーターを True (既定値は False) に設定します。
E コマース Web サイトのモバイルアプリケーションを開発しているとします。ユーザーが E メール、WhatsApp、Facebook やその他のサードパーティリソースを通じて Web サイトの URL を受け取ったときに、アプリケーションで製品情報を見られるようにしたいと考えています。このようなリクエストを処理したり、その他の情報も登録したいと考えています。このようなケースでは、スマートデバイスのメインオブジェクト ([ Deep Link Base URL ] プロパティが設定されたもの) で、次のイベントを記述する必要があります。
Event DeepLink.Handle( &URL, &IsHandled )
Composite
// Web サイトで https://www.mystore.com/viewproduct?1 のような URI を処理するものとする
if &URL.ToLower().StartsWith("https://www.mystore.com/")
and &URL.Contains("viewproduct")
&Index = &URL.indexof( "?")+1
&Query = &URL.Substring( &Index)
&ProductId = &Query.Trim().ToNumeric()
&IsHandled = True
SDViewProduct(&ProductId)
endIf
EndComposite
EndEvent
コードの記述方法を見ていきます。最初に、(一連の異なる URI を処理できるように) 対象のドメインに対してリクエストが行われるようにする必要があります。次に、リクエストされたコンテンツを識別します (この例では "viewproduct")。それ以降の行では、クエリのパラメーター (ProductId) を解析し、プロセスを処理済みとして設定し、最後にスマート デバイス パネルを呼び出してリクエストを処理させます。
- この外部オブジェクトは、スマートデバイスの [ Main object properties ] でのみ使用します。
- ディープリンクを提供するパネルの呼び出しは、CallOptions の設定に沿って行われます。
- [ Handled ] 出力パラメーターを True に設定すると、自動ディープ リンク メカニズムがトリガーされなくなります。
- 複数のパラメーターを解析する場合は、次のコードを使用すると役立ちます。
- 指定シナリオ (つまり、&Query.Contains("&") 条件を満たす)
for &Parm in &Query.SplitRegEx("&") // パラメーターは「キー = 値」の形でアンパサンド区切り
&i = &Parm.IndexOf("=")
&Key = &Parm.Substring(1,&i-1)
&Val = &Parm.Substring(&i+1)
do Case
case &Key = "parm1"
&parm1 = transform1(&Val)
case &Key = "parm2"
&parm2 = transform2(&Val)
...
endCase
endFor</parm2></parm1>
- 位置シナリオ
&i = 1
for &Parm in &Query.SplitRegEx(",") // パラメーターはコンマ区切り
do Case
case &i = 1
&parm1 = transform1(&Parm)
case &i = 2
&parm2 = transform2(&Parm)
...
endCase
&i += 1
endFor
いずれのケースでも、transformi 操作によって文字列値が適切な parmi データタイプに変換されます。 たとえば、parm1:Numeric(4.0) および parm2:VarChar(40) の場合、transform 操作は次のようになります: - &parm1 = &str.Trim().ToNumeric() - &parm2 = &str.Replace("%20"," ")
この外部オブジェクトは、GeneXus 15 Upgrade 6 以降で使用できます。
プラットフォーム |
スマートデバイス (iOS、Android) |
|