ChatterのプロファイルベースのロールアウトがSummer'14からGAとなりました(有効化するためにはサポートへの連絡が必要です)。
これによって、組織としてはChatterを有効化してもユーザレベルではChatterを無効化することができるようになりました。そのため、利用しているユーザがChatterを利用できるか判定するための方法が変わってきます。
ということで、Chatterが利用できるか判定する方法を調べてみました。
有効化していない場合
組織単位でChatterが有効化されているかチェックする
ConnectApi.OrganizationSettings o = ConnectApi.Organization.getSettings(); System.debug('Chatter=' + o.features.chatter);
有効化した場合
ユーザごとにChatterが有効化されているかチェックする
ConnectApi.UserSettings u = ConnectApi.Organization.getSettings().userSettings; System.debug('Chatter=' + u.hasChatter);
基本的には、ConnectApiを叩けば値を取得できます。UserSettingsクラスのhasChatterはChatterのプロファイルベースのロールアウトを有効化していない状態でも値を取得できましたので、有効化した場合の書き方をしておけば、どちらの状況でも対応できそうです。
ただ、UserSettingsのhasChatterはAPIレファレンスに載っていないようなので今後変更になるかもしれません。
Enjoy Chatter!
2014/8/17追記:APIリファレンスに掲載されていることを確認