Android 用 Hello World アプリケーションの作成

学習の目的

この単元を完了すると、次のことができるようになります。
  • サービス SDK フレームワークを Android プロジェクトに埋め込む。
  • サービス SDK の基本機能を Android プロジェクトに結び付ける。
  • サービス SDK リソースを入手する場所について説明する。

Android の使用開始

ほんの少しの作業で、既存の Android アプリケーションに Service Cloud 機能を結び付けることが可能となりますが、この単元ではそのやり方を説明します。Android サービス SDK による方法は、iOS サービス SDK と少し異なります。それぞれの SDK を開発して、プラットフォームごとに標準的な設計パターンに従っているのはこのためです。

メモ

メモ

この単元は、Android 開発に慣れている方が対象です。Java コードの作成方法や Android Studio IDE の回避方法については説明しません。これらに精通していなくても、この単元をざっと読んで、この SDK を使用するためには何が必要となるかを把握することができます。

Android Studio での基本的なプロジェクトの作成

Android Studio で電話のプロジェクトを作成しましょう。API 21 以降の最低限の SDK を指定してください。

Android Studio の設定

[Basic Activity] (基本アクティビティ) プロジェクトを作成し、無料のフロート表示アクションボタン (FAB) を取得します。

Basic Activity (基本アクティビティ) プロジェクト

今は準備段階です。SDK をプロジェクトに組み込むため、build.gradle スクリプトでリポジトリを更新する必要があります。

allprojects {
  repositories {
    google()
    jcenter()
    maven {
      url 'https://s3.amazonaws.com/salesforcesos.com/android/maven/release'
    }
    maven {
      url 'http://tokbox.bintray.com/maven/'
    }
  }
}

アプリケーションの build.gradle スクリプトで連動関係も更新します。

dependencies {
  compile 'com.salesforce.service:servicesdk:+'
}
メモ

メモ

SDK の特定のバージョンに対してコンパイルすることをお勧めします。「+」は、使用する特定のバージョンで置き換えてください。そのバージョンのインストール指示情報を参照してください (「リソース」を参照)。

コーディングに取り掛かる前に、FAB をメールアイコン (ic_dialog_email) からヘルプアイコン (ic_menu_help) に変更しましょう。activity_main.xml から変更できます。

<android.support.design.widget.FloatingActionButton
        android:id="@+id/fab"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom|end"
        android:layout_margin="@dimen/fab_margin"
        app:srcCompat="@android:drawable/ic_menu_help"/>

ここまでは良さそうです。それでは、コードをこのプロジェクトに追加して、面白いことを実行してみましょう。

Android スタイルのコーディング

この単元では、もう一度ナレッジ機能に結び付けますが、その他のどのような機能でも、お望みであれば試すことができます。

まず、メイン Activity クラスで変数をいくつか定義します。

// You should normally maintain a reference to these instances
// within the Application lifecycle (rather than Activity lifecycle)...
// They are placed here just for this example...
KnowledgeUI mKnowledgeUI = null;
KnowledgeUIClient mKnowledgeUIClient = null;
// Specify the community url, category group, and root category
public static final String communityUrl = "https://your-community-url";
public static final String categoryGroup = "your-category-group";
public static final String rootCategory = "your-root-category";

iOS の単元と同じように、プレースホルダ値は、コミュニティ、データカテゴリグループ、ルートデータカテゴリの実際の値で置き換えてください。詳しいガイダンスについては、「リソース」セクションの「Cloud Setup for Knowledge」 (ナレッジ用のクラウドの設定) を参照してください。

ここで、ナレッジの初期化メソッドと起動メソッドを作成しましょう。

// Call this method at init time...
private void initKnowledge() {
    if (mKnowledgeUI == null) {
        // Create a core configuration instance
        KnowledgeConfiguration coreConfiguration =
            KnowledgeConfiguration.create(communityUrl);
        // Create a UI configuration instance from core instance
        KnowledgeUIConfiguration uiConfiguration =
            KnowledgeUIConfiguration.create(coreConfiguration, categoryGroup, rootCategory);
        // Create a UI instance
        mKnowledgeUI = KnowledgeUI.configure(uiConfiguration);
    }
}
// Call this method when you want to show the Knowledge UI
private void startKnowledge() {
    if (mKnowledgeUIClient == null) {
        // Create a client asynchronously
        mKnowledgeUI.createClient(MainActivity.this)
            .onResult(new Async.ResultHandler<KnowledgeUIClient>() {
            @Override public void handleResult (Async<?> operation,
                KnowledgeUIClient uiClient) {
                // Store reference to the Knowledge UI client
                mKnowledgeUIClient = uiClient;
                // Handle the close action
                uiClient.addOnCloseListener(new KnowledgeUIClient.OnCloseListener() {
                    @Override public void onClose () {
                        // Clear reference to the Knowledge UI client
                        mKnowledgeUIClient = null;
                    }
                });
                // Launch the UI
                uiClient.launchHome(MainActivity.this);
            }
        });
    }
}

initKnowledge メソッドでは、設定情報を使用して KnowledgeUI オブジェクトを構築します。startKnowledge メソッドでは KnowledgeUIClient を KnowledgeUI オブジェクトから作成し、SDK メソッド launchHome でインターフェースを起動します。

initKnowledge メソッドは onCreate メソッドに、startKnowledge メソッドは、ユーザが FAB をタップする場所に結び付けることができます。これは次のようになります。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    initKnowledge();
    FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
    fab.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            startKnowledge();
        }
    });
}

これで終了です。エミュレータでアプリケーションを起動して FAB をタップし、ナレッジが表示されることを確認してください。

Android のナレッジ

iOS と同じように、これは始まりにすぎません。ヒーローの画像を追加したり、色をカスタマイズしたりしてブランドに合わせることもできます。ナレッジやケース管理、チャットなどのサポートホーム環境全体を構築できます。お望みであれば、独自の UI を作成し、低レベルの API を利用できます。

次のステップ

「リソース」セクションのリンクで役立つドキュメントを確認し、サービス対応アプリケーションをさらに使いやすいものにしましょう。まずは『Android 用組み込みサービス SDK 開発者ガイド』を参照します。この開発者ガイドには、さらに多くのチュートリアルと例が含まれており、さらに多くのトピックが扱われています。ナレッジ、ケース管理、チャットという、主要サポート機能をつなげるために必要となる、すべてのことについて説明されています。API の詳細については、Android のリファレンスドキュメントも参考になります。

モバイルアプリケーション用組み込みサービス SDK の概要の説明はこれで終わりです。これで、このツールキットの価値について理解し、この使い方の概要を把握しました。多機能でありながら、必要となるコーディングはそれほどありません。次はみなさんの番です。この SDK で何ができるかについて見てみましょう。