SalesforceのMobile SDKを使ってPush通知が出来るようなので、Androidで試してみました。JDKやAndroid Studioのインストールは完了済みとして、そこからの構築工程を備忘として残しておきます。環境はwindows 8 です。

参考URLはこちら

forcedroidのインストール

SalesforceのSDKを使ってAndroidアプリを作る場合はforcedroidというジェネレータを使う必要があります。forcedroidのインストールはgit cloneで落としてインストールする方法と、npmでインストールする方法がありますが、後者の方がパスを通す工程が必要が無いので、今回はnpmでインストールしてみます。windowsの場合は予めChocolatey等でnode.jsとnpmをインストールしておきます。

まず、npmでforcedroidをインストールします。

適当なプロジェクトフォルダを作成します。

あとはこんな感じでforcedroidでプロジェクトのテンプレートをジェネレートします。

また、環境変数にANDROID_HOMEが設定されていないとエラーが出るので忘れずに設定してください。私の環境の場合は、”C:\Users\ {user name}\AppData\Local\Android\sdk”に設定されていました。

Android Studioへのインポート

Android Studioを開いて、File>New>Import Projectをクリックします。

先ほど作成したフォルダを選択します。

salesforce-android-studio

Create project from existing sourcesを選択します。

salesforce-android-studio-import1

あとは、そのままNextを押し続けます。(SDKのバージョンは21を選択)

salesforce-android-studio-import2

salesforce-android-studio-import3

salesforce-android-studio-import4

salesforce-android-studio-import5

salesforce-android-studio-import6

salesforce-android-studio-import7

完了するとこんな感じで展開されます。

salesforce-android-studio-project

このままRunすると以下のエラーメッセージが出て、依存関係問題でビルドできません。

File>Project Structure のMobulesのところで、プロジェクトのDependenciesの設定を変更します。(チェックつけるだけ)

salesforce-android-studio-dependencies1

libsだけでも通ったのでframeworkは要らないかも。

アプリを起動するとログイン画面でOAuthフローを通して、APIを叩いてAccount, Contactのリスト表示をするようなUIが表示されます。

salesforce-android-sample-login

salesforce-android-sample-accountlist

ちなみに認証・認可画面はWebViewです(個人的にはブラウザに飛ばしてImplicit Grantで実装したかった…)

Google Developers Consoleの設定

Google Developers ConsoleでServer Keyを発行して、APIキーをメモります。(発行方法は割愛)

google-developer-console-serverkey

プロジェクト番号もメモっておきます。

google-developer-console-project

Salesforceの接続アプリケーションの設定

Push用の接続アプリを作成します。サポートされているプッシュプラットフォームに”Android GCM”、サーバアプリケーションのキー (API キー)にdevelopers consoleで取得したAPIキーをセットします。

salesforce-android-connectapp1

作成された接続アプリのクライアントIDとリダイレクトURLをメモります。

Push配信のアプリ設定

com.salesforce.androidsdk.push.PushNotificationInterfaceをimplementsしたクラスを作成します。

ApplicationのサブクラスのonCreateメソッドを以下のように書き換えます。

さらにSalesforceAndroidApp\res\values\bootconfig.xmlを以下のように書き換えます。

テスト配信

接続アプリケーションの”テスト通知の送信”リンクから、任意の端末に対してPush配信のテストを行うことができます。

salesforce-android-connectapp2

予めデバイス登録されているユーザ(端末ID)に対してPushを送信することが出来ます。

salesforce-android-push-testsend

参考URL:Testing Your Connected App Push Configuration | Salesforce Mobile Push Notifications Implementation Guide | Salesforce Developers

Push配信(トリガ)

ApexトリガでPush配信を行うことができます。(VFでは出来ないっぽいです)

参考URL:Step 4. Using Apex Triggers to Send Push Notifications | Salesforce Mobile Push Notifications Implementation Guide | Salesforce Developers

Push配信(Chatter REST)

Chatter RESTにPushのリソースがあるので、API経由でPush配信が可能です。

参考URL:Push Notifications Resource | Salesforce Mobile Push Notifications Implementation Guide | Salesforce Developers