Androidアプリケーションの設定 - Android SDK

新しいプロジェクトの作成

クライアントが登録されたら、独自のAndroidアプリケーションの作成を開始できます。

コマンドラインで、モバイルプロジェクトを作成するディレクトリーに移動し、次のコマンドを実行してください。

zohoandroid作成

これにより、以下のユーザー入力が求められます。

  1. モバイルアプリの名前(見込み客の承認者など)。
  2. モバイルアプリの目的のJavaパッケージ名(com.zoho.testなど)。
  3. Zoho OAuthクライアントID(アプリ登録時に取得)。
  4. Zoho OAuthクライアントシークレット(アプリ登録時に取得)。
  5. Zoho OAuthリダイレクトURL(アプリ登録時に取得)。

上記のコマンドを正常に実行すると、プロジェクトフォルダーが同じディレクトリーに作成されます。プロジェクトフォルダーの名前は、モバイルアプリの名前と同じになります。

注:

  • デフォルトでは、アプリはAndroid APIレベル26(Oreo)に準拠して作成、コンパイルされます。ただし、このレベルは、アプリのbuild.Gradleで必要なAPIレベルに変更できます。
  • また、APIレベルを切り替えるには、新しいAPIレベルの欠落している依存関係を処理する必要があります。

プロジェクトの実行

新しく作成されたプロジェクトは、実際にはAndroidアプリのデモであり、Android Studioを使用してすぐに実行できます。

  1. Android Studioを開いてください。
  2. [ファイル] > [新規] > [プロジェクトのインポート]をクリックしてから、新しく作成したプロジェクトフォルダーを選択して[開く]をクリックしてください。
    新しく作成したデモアプリを、Androidプロジェクトとして開きます。
  3. 必要に応じて、Gradleが推奨するように欠落している依存関係をインストールしてください。
  4. Gradleのビルドに成功したら、このプロジェクトをエミュレーターで実行してください。
    このアプリは、エミュレーターのZohoサインイン画面で開きます。
  5. Zoho CRM認証情報でサインインし、デモアプリでデータを表示できます。

アプリの拡張

プロジェクトが正常にビルドされ実行されると、要件に応じて、アプリ用の新しい画面と機能をさらに設計して作成できます。アプリの開発には、フロントエンドの制限はありません。ただし、ユーザー認証をかんたんにするために、アプリの設計時には次の点に注意してください。

サインイン/サインアウトを処理するには:

  1. ユーザーサインインを適切に処理するために、起動アクティビティーはSDKですでに設定されており、サインインしているユーザーだけがアプリケーションのデータを表示できるようになっています。
    • ただし、独自のカスタマイズされたサインイン画面を表示する場合は、独自サインイン用のクラスパッケージを、app_configuration.propertiesのcustomLoginActivityClassに指定してください。customLoginClassをランチャーアクティビティーとして起動してください。マニフェストでこのクラスをランチャーとして指定する必要はありません。スムーズな機能を確保するために、カスタム起動アクティビティーからZCRMLoginActivityインテントを開始していることを確認して、サインインプロセスを開始してください。
    • カスタム起動アクティビティーの作成中は、ZCRMLoginActivityを呼び出さずに、Zoho CRMへの呼び出しを行っていないことを確認してください。
  2. ユーザーのサインアウトを処理するには、サインアウトボタンのonClick呼び出しを処理するアクティビティーが、ZCRMBaseActivityを拡張する必要があり、そのonClickメソッドがsuper.logout()を呼び出す必要があります。

app_configuration.propertiesファイルの場合:

  1. mainActivityClass(必須) - メインクラスパッケージ(サインインアクティビティーの後に開始するクラス)を指定してください。
  2. oauthScopes(必須) - 作成されたプロパティーファイルにサンプルスコープがすでに記述されており、必要に応じてスコープを変更できます。詳細はこちら
  3. accessType(オプション) - CRMの環境の種類
    • 本番 - 重要なビジネスデータにアクセスする有効なな有料ユーザーが存在する環境。
    • 開発 - 本番環境に影響を与えることなく拡張、連携、開発が可能な環境。
    • サンドボックス - 本番環境に展開する前、またはお客さまにリリースする前に、アプリケーションの機能をテストするための専用の環境。
  4. minLogLevel(オプション) - ここで、優先するログレベルを指定してください(ALL、FINEST、TRACE、DEBUG、CONFIG、INFO、WARNING、ERROR、OFF)。
  5. domainSuffix(オプション) - 複数DCサポート。
    • us - www.zohoapis.com
    • eu - www.zohoapis.eu
    • cn - www.zohoapis.com.cn
  6. portalID(オプション) - CRMポータルIDを指定してください(例:65468393)。"portalID"がない場合は、プロパティーファイル内で指定する必要はありません。
  7. showSignUp(オプション)- アプリケーションにサインアップ機能を提供する場合はtrue、それ以外の場合はfalseを指定してください。
  8. customLoginActivityClass(オプション) - ランチャーアクティビティークラスパッケージを指定してください。そのランチャークラスから、ZCRMLoginActivityのクラスインテントを開始してサインインをカスタマイズできます。

app_configuration.properties

このファイルには、アプリの実行に必要な特定の設定値が含まれています。プロパティーの既存の名前や値は、SDKやアプリをスムーズに機能させるために必要なので変更しないでください。

このファイルは次のパスから入手できます。
[プロジェクトホーム]> [アプリ] > [src] > [メイン] > [アセット] > [app_configuration.properties]

必要に応じて、独自のプロパティーや値を追加することもできます。アプリの起動後にJavaコードの任意の部分でZCRMSDKConfigUtil.getConfigValue(propertyName);を呼び出すと、このファイルに追加するプロパティーの値が表示されます。

Zoho CRM APIラッパー

Zoho CRM REST APIによるデータアクセスをかんたんにするため、Zoho CRM用の組み込みAPI SDKを使用して、APIを通じてCRMデータにアクセスしてください。このレイヤーは、API認証(OAuthアクセストークンの作成とリフレッシュ)、APIレスポンスとリクエスト構造を処理し、APIレスポンスをラッピングするJavaオブジェクトを返します。

したがって、API呼び出しは、クライアントアプリのメソッド呼び出しとなります。

Zoho CRM Java SDKドキュメントのクラス階層セクションを参照してください。

SDKデータアクセスラッパー

Zoho CRM APIの上記のラッピングに加えて、不要なAPI呼び出しを回避するために、必須のタブのメタデータがSDKによってデバイスのローカルストレージにキャッシュされます。

現在、CRMデータ(レコード)はキャッシュされず、レイアウト、セクション、項目、カスタムビューの詳細などのタブのメタデータのみがキャッシュされます。

ZCRMCachedModule

一部の追加のメタデータキャッシングは、ZCRMCachedModuleによって行われます。これにより、Zoho CRM APIクライアントライブラリーのZCRMModuleクラスが拡張されます。このクラスには、次のメソッドがあります。

  • getLayouts - タブのすべてのレイアウトをBulkAPIResponseとして返します。
  • getCustomViews - タブのすべてのカスタムビューの詳細をBulkAPIResponseとして返します。

キャッシュの更新

ZCRMCachedModuleは、デバイスのローカルストレージにキャッシュされているタブとフォームレイアウトのメタデータ情報を保存して使用します。SDKは、タブの保存されたメタデータを12時間ごとにリフレッシュします。

Zoho CRM API呼び出しを通じて、SDKにキャッシュの削除とメタデータのリフレッシュを実行させたい場合(例:アプリでリフレッシュするためにスワイプのようなものを提供する場合)は、上記のメソッドのオーバーロードされたバージョンで提供されているrefreshCacheフラグを設定してください。以下に、呼び出しの例を示します。

zcrmCachedModuleObj.getAllLayouts(true);

zcrmCachedModuleObj.getCustomViews(true);