4D for iOSで、私たちは常にモバイルフレンドリーな機能を考えています。その主な目的は、開発者がモバイルアプリケーションで最高のユーザーエクスペリエンスを提供できるようにすることです。そして、4D v19 R3で、アクション入力コントロールを出荷するのは、そのためです。
入力コントロールとは?
ギャラリーで利用できるiOSコードを使ったフォーマッタで 、携帯電話からiOSネイティブアプリと簡単に対話することができます。たとえば、電話番号フィールドをクリックすると自動的に電話番号をダイヤルしたり、URLをクリックするだけでSafariアプリを開いたりすることができます。
アクション入力コントロールも、これとまったく同じ理屈です。これらを使って、アクションフォームにいくつかの種類のモジュールを追加し、Appleのネイティブアプリと対話することになります。ギャラリーには、次のようなものがすでに用意されています。
- phoneContact: Apple の連絡先アプリから直接連絡先の電話番号を検索します。
- emailContact: Apple Contact app から直接、連絡先のメールアドレスを検索します。
- currentLocation と currentLocationAddress: アプリユーザーの現在地を座標(緯度・経度)と住所で自動的に埋めます。
これらは、iOS環境とのスムーズなインタラクションを通じて新しい視点を切り開き、ユーザーの生活をより快適にするために設計されました。
そして何より、あなたは自由に独自の入力コントロールを作成し、あなたのモバイルプロジェクトに統合し、コミュニティと共有することができます。
どのように使うのですか?
モバイルプロジェクトで入力コントロールを使用するには、フォーマッタやカスタムリスト、カスタム詳細フォーム用のデータベースに入力コントロールを含める必要があります。これを行うには、特別な“inputControls” フォルダを作成し、ギャラリーから最適な入力コントロールをダウンロードし、解凍して inputControls フォルダにドラッグします。
このアクション入力コントロールは、アクションパラメータの種類に応じて、アクションセクションのパラメータプロパティで利用でき、選択できるようになります。
以下はその例です。
この例では、連絡先の電話番号と電子メールを更新するつもりです。ここで斬新なのは、Appleの連絡先アプリからデータを取得することです。この場合、ギャラリーにあるphoneContactと emailContactのアクション入力コントロールを使用します。
ユーザーのアプリでの見え方
ユーザーは、アクションメニューからeditContactアクションを選択するだけで、モバイルアプリにアクションフォームが表示されます。そこから、アクション入力コントロールによって、Appleの連絡先アプリから電話番号と電子メールを選択することができるようになります。
このように、アクション入力コントロールは、Apple Nativeアプリと対話し、モバイルアプリに素敵なインタラクションを追加する、もうひとつの素晴らしい方法なのです。
プロジェクトエディタでの見え方
次に、この例を動作させるために、On Mobile App Actionデータベースメソッドでeditアクションを作成する必要があります。
editアクションの4Dコード
以下は、MobileAppServerコンポーネントを使用した、プリセットアクションの編集のための、On Mobile App Actionデータベースメソッドの4Dコードの例です。
#DECLARE($request : Object)->$response : Object $action:=MobileAppServer.Action.new($request) $response:=New object("success"; False) Case of : ($action.name="editContact") // edit@ var $entity; $status : Object $entity:=$action.getEntity() For each ($key; $request.parameters) $entity[$key]:=$request.parameters[$key] End for each $status:=$entity.save() // save the entity If ($status.success) $response.success:=True // notify App that action success $response.dataSynchro:=True // notify App to refresh the selection $response.statusText:="Edited" Else $response.statusText:="Failed to edit" // $status.statusText $response.errors:=$status.errors End if End case
4Dに組み込まれたMobileAppServerコンポーネントは、4Dモバイルアプリのバックエンドコーディングをスピードアップするための様々なユーティリティメソッドにアクセスできることを思い出してください。