カスタムインタラクションに関する考慮事項
Apex を使用して、管理パッケージとのカスタムインタラクションを簡単に作成および記録できます。登録者がパッケージを操作して Apex コードが実行されると、定義したカスタムインタラクションが記録されます。パッケージの AppExchange App Analytics の利用状況ログと利用状況概要でカスタムインタラクションを取得します。
| 使用可能なインターフェース: Salesforce Classic および Lightning Experience の両方 |
| 使用可能なエディション: Enterprise Edition、Performance Edition、Unlimited Edition、および Developer Edition |
ISV パートナーの場合、管理パッケージで開発する機能が複雑になり、さまざまなオブジェクトに対する複数のアクションや Apex 関数へのコールアウトなどが関与する可能性があります。ダウンロードされた App Analytics パッケージ利用状況ログおよび概要で、登録者が特定のパッケージ化されたコンポーネントをどのように操作したのかを把握することは難しい場合があります。
カスタマイズされた方法と異なる粒度レベルで登録者のイベントを明確化するには、Apex を使用して管理パッケージのカスタムインタラクションを作成します。
Apex カスタムインタラクションを使用すると、以下を検出できます。
- ユーザーが操作したアプリケーション機能
- 特定のユーザージャーニーのユーザーフロー
- ユーザーが操作した UI コンポーネント
次の考慮事項に注意してください。
- カスタムインタラクションは、特定のユーザー要求で最大 50 回表示されます。この制限により、大きなループが原因でログがあふれることを回避できます。
- ループ内から IsvPartners.AppAnalytics.logCustomInteraction をコールしないことをお勧めします。
- IsvPartners.AppAnalytics.logCustomInteraction メソッドが実行中の Apex テストからコールされると、AppExchange App Analytics パッケージ利用状況ログデータまたはパッケージ利用状況概要データが生成されません。
カスタムインタラクションの記録
Apex を使用して、管理パッケージとのカスタムインタラクションを作成および記録します。
- パッケージ化された Apex コードに、カスタムインタラクションとして記録するイベントに関連付けられた Apex 列挙を含めます。
- Apex コードで、作成した列挙を使用して IsvPartners.AppAnalytics.logCustomInteraction を呼び出します。
- コードをテストします。これを行うには、コードを開発環境で実行してデバッグログをチェックし、作成したカスタムインタラクションが記録されていることを確認します。Apex コードのデバッグログレベルが FINE に設定されていることを確認します。
- 実装が完了したら、新しいバージョンの管理パッケージを公開します。
- 登録者がパッケージをインストールしたら、パッケージ利用状況ログとパッケージ利用状況概要を取得します。パッケージ利用状況ログデータを custom_entity_type について CustomInteractionLabel で、log_record_type について CustomInteraction で絞り込みます。または、パッケージ利用状況概要データを custom_entity_type について CustomInteractionLabel で絞り込みます。
- カスタムインタラクションデータを分析します。
例
Visualforce ページがあるとします。Visualforce ページでは、送信ボタンがクリックされたときにキュー可能ジョブをキューに追加する Apex メソッドが含まれる Apex クラスを使用します。色が選択されたとき、送信ボタンがクリックされたとき、キュー可能ジョブが実行されたときにインタラクションを記録したいと考えています。
コードに Apex 列挙を含め、IsvPartners.AppAnalytics.logCustomInteraction を呼び出します。
1MyQueueable Apex Class:
2public class MyQueueable implements Queueable {
3 private final string color;
4
5 public MyQueueable(string color) {
6 this.color = color;
7 }
8
9 public void execute(QueueableContext context) {
10
11 Id myJobId = context.getJobId(); //NEW
12 IsvPartners.AppAnalytics.logCustomInteraction( //NEW
13 MyQueueableInteractions.MY_QUEUABLE_EXECUTED, myJobId); //NEW
14
15 // do something with the color
16 }
17
18 private enum MyQueueableInteractions { //NEW
19 MY_QUEUABLE_EXECUTED //NEW
20 } //NEW
21}
22MyPageController Apex Class:
23public class MyPageController {
24 public String colorValue { get; set; }
25
26 public MyPageController() {
27 colorValue = 'Green';
28 }
29
30 public void colorSelected() {
31 IsvPartners.AppAnalytics.logCustomInteraction( //NEW
32 getInteractionLabel()); //NEW
33 }
34
35 public void submitClicked() {
36 Id jobId = System.enqueueJob(new MyQueueable(colorValue));
37
38 IsvPartners.AppAnalytics.logCustomInteraction( //NEW
39 MyPageInteractions.SUBMIT_CLICKED, jobId); //NEW
40 }
41
42 private enum MyPageInteractions { //NEW
43 GREEN_SELECTED, //NEW
44 YELLOW_SELECTED, //NEW
45 RED_SELECTED, //NEW
46 SUBMIT_CLICKED //NEW
47 } //NEW
48
49 private MyPageInteractions getInteractionLabel() {
50 if (colorValue == 'Green') {
51 return MyPageInteractions.GREEN_SELECTED;
52 } else if (colorValue == 'Yellow') {
53 return MyPageInteractions.YELLOW_SELECTED;
54 } else if (colorValue == 'Red') {
55 return MyPageInteractions.RED_SELECTED;
56 }
57 return null;
58 }
59}
60MyPage Visualforce Page:
61<apex:page controller="MyPageController">
62 <apex:outputLabel >{!colorValue} selected</apex:outputLabel>
63 <apex:form >
64 <apex:selectRadio layout="Color" value="{!colorValue}">
65 <apex:selectOption itemLabel="Red" itemValue="Red"></apex:selectOption>
66 <apex:selectOption itemLabel="Yellow" itemValue="Yellow"></apex:selectOption>
67 <apex:selectOption itemLabel="Green" itemValue="Green"></apex:selectOption>
68 <apex:actionSupport event="onchange" action="{!colorSelected}"/>
69 </apex:selectRadio>
70 <apex:commandButton action="{!submitClicked}" value="submit" />
71 </apex:form>
72</apex:page>次に、コードをテストします。Apex コードデバッグログレベルが FINE に設定されている状態で、APP_ANALYTICS_FINE、APP_ANALYTICS_WARN、または APP_ANALYTICS_ERROR というデバッグログでイベントを検索し、カスタムインタラクションが記録されていることを確認します。
1…
2APP_ANALYTICS_FINE [External]IsvPartners.AppAnalytics.logCustomInteraction was called, but not from an installed managed package. This means that the code is ready to be packaged.
3…