この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

キャンバスアプリケーションで使用する Salesforce モバイルアプリケーションの navigation メソッド

Canvas フレームワークには、Visualforce を使用せずに、キャンバスアプリケーションと Salesforce モバイルアプリケーション間のナビゲーションを円滑に統合するために使用できるメソッドが含まれます。

キャンバスアプリケーションが含まれる iframe のナビゲーションの制限を回避するには、Canvas メソッドを使用します。このメソッドには Visualforce ページに代わるシンプルな方法が用意されており、Salesforce アプリケーションでのキャンバスアプリケーションへの移動またはキャンバスアプリケーションからの移動を制御できます。

たとえば、キャンバスアプリケーションのコードで Salesforce の「レコード作成」ロジックをコールして、[アカウントを作成] ボタンが存在するページに移動できます。このボタンをクリックすると、navigation メソッドがトリガーされて、キャンバスアプリケーションの外部にあるレコード作成ページに移動します。

Canvas フレームワーク内のこれらのメソッドは、JavaScript ライブラリにあるイベントです。いずれかの navigation メソッドをキャンバスコードからコールすると、Salesforce にイベントが送信されます。Salesforce は、このペイロードを読み取って指定の移行先にユーザーを移動します。

キャンバスアプリケーションからメソッドをコールするのは、Visualforce ページから関数をコールするのとは若干異なります。これは、メソッドが Canvas のクロスドメイン API を介して Salesforce コンテナにプロキシされるからです。

名前とペイロードを使用して、navigation メソッドをイベント変数として参照します。次に例を示します。

var event = {name:"s1.createRecord", payload: {entityName: "Account", recordTypeId: "00h300000001234"}};

次の表に、Salesforce の navigation メソッドの名前、ペイロード、目的を示します。

名前 ペイロード 説明
s1.back {"refresh" : true} sforce.one 履歴に保存されている、以前の状態に移動します。ブラウザーの [戻る] ボタンをクリックするのと同じです。

refresh は省略可能です。デフォルトでは、ページは更新されません。可能な場合は true を渡してページを更新します。

s1.navigateTo​SObject {"recordId" : "001XXXXXXXXXXXX", "view" : "chatter"} 15 文字または 18 文字の recordId で指定した sObject レコードに移動します。このレコードの「ホーム」には複数のビューがあり、このビューは Salesforce アプリケーション内で、ユーザーがスワイプして移動するスライドとして表示されます。

view は省略可能でデフォルト値は detail です。view には最初に表示する、レコードのホーム内のスライドを指定します。

ContentNote sObject に対応するレコード ID はサポートされていません。

メモ

値は次のとおりです。
  • detail: レコード詳細スライド
  • chatter: Chatter スライド
  • related: 関連スライドのビュー
s1.navigateTo​URL {"url" : "https://salesforce.com/​apex/v.apexp", "isredirect" : true} 指定した URL に移動します。
相対 URL と絶対 URL がサポートされています。相対 URL は Lightning ドメインに対して相対的で、ナビゲーション履歴を保持します。外部 URL、つまり Lightning ドメインの外部の URL は別のブラウザーウィンドウに開きます。

ユーザーのデバイスプラットフォーム、デバイス設定、Salesforce のバージョン、および開いている外部 URL の認証要件によっては、別のブラウザーに認証や再認証が必要な場合があります。

メモ

アプリケーション内のさまざまな画面に移動するには相対 URL を使用します。ユーザーに別のサイトまたはアプリケーションへのアクセスを許可し、そこでのアクションを元のアプリケーションに保持する必要がない場合、外部 URL を使用します。ユーザーが元のアプリケーションに戻るには、別のアプリケーションを終了したときに、外部 URL によって開かれた別のウィンドウを閉じる必要があります。この新しいウィンドウは、元のアプリケーションとは別の履歴を持ち、ウィンドウを閉じるとこの履歴は破棄されます。新しいウィンドウの履歴を破棄することでユーザーが [戻る] ボタンをクリックして元のアプリケーションに戻ることを回避します。つまり、ユーザーは新しいウィンドウを閉じる必要があります。

外部アプリケーションを起動し、ユーザーが適切な操作を行えるようにするため、mailto:tel:geo: などの URL スキームがサポートされています。ただし、サポートはモバイルプラットフォームとデバイスによって異なります。mailto:tel: は信頼できますが、他の URL については、使用が想定されるさまざまなデバイスでテストすることをお勧めします。

isredirect は省略可能であり、デフォルトは false です。ナビゲーション履歴の現在の URL を新しい URL に置き換えるようにするには、true に設定します。

<apex:commandButton> または任意の <button type="submit"><input type="submit">onClick ハンドラー内で navigateToURL を使用する場合は注意してください。isredirect=true の場合も、コマンドボタンのデフォルトのクリックアクションはフォーム投稿です。この場合、コマンドボタンによってフォーム投稿と navigateToURL アクションが実行されるため、ユーザーは前のページに移動するために戻るボタンを 2 回クリックする必要があります。デフォルトのクリックアクションを回避するには、event.preventDefault() をコールするか false を返すように onClick ハンドラーを設定します。

メモ

ContentNote sObject に対応する URL はサポートされていません。

メモ

s1.navigateTo​Feed {"subjectId" : "001XXXXXXXXXXXX", "type" : "NEWS"} subjectId で絞り込んだ、指定した type のフィードに移動します。一部のフィード type では、subjectId は必須ですが無視されます。これらのフィード type では、現在のユーザーの ID を subjectId として渡します。
type で使用できる値は次のとおりです。
  • BOOKMARKS: コンテキストユーザーがブックマークとして保存したすべてのフィード項目が含まれます。現在のユーザーの ID を subjectId として渡します。
  • COMPANY: 種別が TrackedChange のフィード項目を除くすべてのフィード項目が含まれます。ユーザーがフィード項目を表示するには、親への共有アクセス権が必要です。現在のユーザーの ID を subjectId として渡します。現在のユーザーの ID を subjectId として渡します。
  • FILES: コンテキストユーザーがフォローしている人またはグループによって投稿されたファイルを含むすべてのフィード項目が含まれます。現在のユーザーの ID を subjectId として渡します。
  • GROUPS: コンテキストユーザーが所有するか、メンバーであるすべてのグループのすべてのフィード項目が含まれます。現在のユーザーの ID を subjectId として渡します。
  • NEWS: コンテキストユーザーがフォローする人、ユーザーがメンバーとなっているグループ、およびユーザーがフォローしているファイルとレコードのすべての更新が含まれます。親がコンテキストユーザーであるレコードのすべての更新が含まれます。現在のユーザーの ID を subjectId として渡します。
  • PEOPLE: コンテキストユーザーがフォローしているすべての人によって投稿されたすべてのフィード項目が含まれます。現在のユーザーの ID を subjectId として渡します。
  • RECORD: 親が指定されたレコードであるすべてのフィード項目が含まれます。レコードは、グループ、ユーザー、オブジェクト、ファイル、その他の標準またはカスタムオブジェクトの場合があります。レコードがグループの場合、フィードにはそのグループにメンションしているフィード項目も含まれます。レコードがユーザーの場合、フィードにはそのユーザーに対するフィード項目のみが含まれます。別のユーザーのレコードフィードは取得できません。レコードの ID を subjectId として渡します。
  • TO: コンテキストユーザーのメンションを含むすべてのフィード項目が含まれます。コンテキストユーザーがコメントしたフィード項目、コンテキストユーザーが作成し、コメントされたフィード項目が含まれます。現在のユーザーの ID を subjectId として渡します。
  • TOPICS: 指定したトピックを含むすべてのフィード項目が含まれます。トピックの ID を subjectId として渡します。この値は、モバイル Web の Salesforce でのみサポートされます。トピックは、Salesforce for iOS または Salesforce for Android では使用できません。
s1.navigateTo​FeedItemDetail {"feedItemId" : "001XXXXXXXXXXXX"} 特定のフィード項目 feedItemId と関連付けられたコメントに移動します。
s1.navigateTo​RelatedList {"relatedListId" : "001XXXXXXXXXXXX", "parentRecordId" : "001XXXXXXXXXXXX" } parentRecordId の関連リストに移動します。たとえば、Warehouse オブジェクトの関連リストを表示する場合、parentRecordIdWarehouse__c.Id です。

relatedListId は、表示する関連リストの API 名または ID です。

s1.navigateTo​List {"listViewId" : "001XXXXXXXXXXXX", "listViewName" : "myListView", "scope" : "scope"} listViewId (表示されるリストビューの ID) で指定されたリストビューに移動します。

listViewName にリストビューのタイトルを設定します。リストビューに保存されている実際の名前と一致する必要はありません。保存されている名前を使用するには、listViewName を null に設定します。

scope に、ビュー内の sObject の名前 (「Account」や「MyObject__c」など) を設定します。

s1.create​Record {"entityName" : "MyObject__c", "recordTypeId" : "001XXXXXXXXXXXX"} 指定した entityName (「Account」や「MyObject__c」など) のレコードを作成するページを開きます。

recordTypeId は省略可能ですが、作成されるオブジェクトのレコードタイプを指定します。recordTypeId を指定しないで createRecord を呼び出すと、エラーになることがあります。

s1.editRecord {"recordId" : "001XXXXXXXXXXXX"} recordId で指定したレコードを編集するページを開きます。

Visualforce で使用する navigation メソッドについての詳細は、『Salesforce Mobile App Developer’s Guide (Salesforce ��バイルアプリケーション開発者ガイド)』を参照してください。