最近のアクセス:
GeneXus 15 におけるスマートデバイスの外部オブジェクトとユーザーコントロールの互換性

GeneXus 15 では、スマートデバイス向けの外部オブジェクトやユーザーコントロールの開発に役立つライブラリの概念が導入されています。
新しいバージョンにコードを移植する際には、次の点に留意してください。

Android

Android 用のネイティブコントロールの開発環境が Eclipse/Ant から Android Studio/Gradle になりました。
FlexibleClient コンポーネントはモジュールにコンパイルされています。ソースファイルとしては配布されません。ネイティブコントロールを開発するには、Android ライブラリにコードをパッケージ化し、それをサードパーティ製リポジトリとして GeneXus に追加する必要があります。

外部オブジェクト

外部オブジェクトについては、重要な変更点が 2 つあります。
1 つ目は、execute() メソッドがプレーンオブジェクトではなく ExternalApiResult を返すようになったことです。このクラスは、メソッドから実際に返された値 (存在する場合) と、その成否の両方を示すことができます。3 つ目のオプションとして、呼び出しがまだ完了していないことを示すこともできます (その場合、ExternalApiResult.SUCCESS_WAIT を返します)。このオプションは、操作が別のアクティビティ (またはユーザー入力) を待っている状態にあり、それが完了するまで実行をブロックできない場合に必要になります。
この変更に伴って、catchOnActivityResult() メソッドが削除されました。基本的に、catchActivityResult() に対して true を返した外部オブジェクトは、単に SUCCESS_WAIT を返すようになっています。
2 つ目の変更点は、GeneXus 15 が API レベル 23 以上 (Android 6.0 Marshmallow) を対象としており、アクセス許可 (連絡先の読み取り、ユーザーの位置情報へのアクセス、SMS の送信など) を必要とするシステム呼び出しを使用する外部オブジェクトは、実行時にもそれらのアクセス許可をリクエストすることです。ネイティブの Android 呼び出し (ActivityCompat.requestPermissions() など) を使用することも、ExternalApi.executeRequestingPermissions() メソッドを介すこともできます。後者のメソッドは、アクセス許可のリクエストや結果の確認を行います。
値が返される仕組みについては、次のサンプルで確認してください。
// 正しい実行
return new ExternalApiResult(ActionResult.SUCCESS_CONTINUE);
// 文字列を返す
String data; // 期待される戻り値とともにロード
return new ExternalApiResult(ActionResult.SUCCESS_CONTINUE, data);

外部オブジェクトのヘルパーメソッド

本質的な変更ではありませんが、外部オブジェクトの実装で扱うボイラープレートの量を減らすために、ExternalApi クラスに多数のメソッドが追加されています。それらの機能を次に示します。
  • addMethodHandler: 特定の名前および特定の数のパラメーターを持つメソッドを処理する IMethodInvoker を登録します。IMethodInvoler.invoke() の実装は、前述のセクションで説明したように ExternalApiResult を返す必要があります。
  • addSimpleMethodHandler: ISimpleMethodInvoker を登録します。前のオプションとは異なり、ISimpleMethodInvoker.invoke() は単にメソッドの実際の出力を返します。失敗という選択肢がないメソッドや待機が必要なメソッドを実装する場合は、このオプションを使用するほうが簡単です。つまり、ExternalApiResult メカニズムは不要になります。
  • addMethodHandlerRequestingPermissions: 外部オブジェクトのメソッドが呼び出されたときに特定のアクセス許可を取得できる場合 (またはその時点でアプリケーションにそれらのアクセス許可が既にある場合) にのみ実行される IMethodInvoker を登録します。不可能な場合、メソッドの呼び出しは失敗し、ExternalApiResult.FAILURE が返され、現在の Composite ブロックの実行が中止されます。




Created: 18/10/29 01:05 by Admin Last update: 21/05/21 02:39 by Admin
カテゴリ
Powered by GXwiki 3.0