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

パッケージ内の Salesforce URL のコール

Salesforce が対象組織に提供する URL は、組織種別や設定に応じて変化します。考えられるすべての URL 形式をサポートするパッケージを作成するには、可能な限り、相対 URL を使用してください。パッケージ機能で完全な URL が必要な場合は、DomainCreator Apex クラスを使用して、対応するホスト名を取得します。この方法を使用すると、組織種別や [私のドメイン] の設定に関係なく、また、拡張ドメインが有効であるかどうかにかかわらず、すべての組織でパッケージが機能します。

拡張ドメインは最新のブラウザ要件を満たすため、将来の標準となります。ただし、これらがすべての Salesforce 組織で使用可能になるまで、パッケージは、考えられるすべての URL 形式に対応する必要があります。パッケージに完全なホスト名または URL への参照が含まれている場合、動的に生成されたホスト名を使用すると、拡張ドメインへの移行時に顧客をサポートできます。

メモ

[私のドメイン] の URL の形式は、本番組織と Sandbox 組織とで異なります。パーティション分割されたドメインの場合も、ホスト名の形式は、デモ組織、Developer Edition 組織、無料組織、パッチ組織、スクラッチ組織、および Trailhead Playground に応じて変化します。たとえば、現在、Sandbox の [私のドメイン] のログインホスト名には 2 個の形式、Visualforce ホスト名には 10 個の形式が使用できます。詳細は、Salesforce ヘルプの「[私のドメイン] の URL の形式」「パーティション分割されたドメイン」を参照してください。

一般的にパッケージ内では、可能な限り、相対 URL を使用します。完全な URL が必要な場合は、System.DomainCreator Apex クラスを使用して、URL のホスト名を取得します。

System.DomainCreator Apex クラスは、API バージョン 54.0 以降で使用できます。

メモ

ログインでの [私のドメイン] のログイン URL の使用

すべての Salesforce 組織には、[私のドメイン] があります。[私のドメイン] とは、Salesforce がその組織用にホストする URL の組織固有のサブドメインのことです。顧客は、汎用のホスト名である login.salesforce.com および test.salesforce.com からのユーザログインと SOAP API ログインを防止するオプションを選択できます。これらのオプションを有効にすると、ログイン時に [私のドメイン] のログイン URL が必要になります。

組織用の [私のドメイン] のログイン URL 形式を取得するには、System.DomainCreator Apex クラスの getOrgMyDomainHostname() メソッドを使用します。
1//Get the My Domain login hostname
2String myDomainHostname = DomainCreator.getOrgMyDomainHostname();

この場合、[私のドメイン] の名前が mycompany の本番組織では、myDomainHostnamemycompany.my.salesforce.com が返されます。

相対 URL の使用

可能な限り、パッケージ内のパスのみが含まれる相対 URL を使用することをお勧めします。

たとえば、URL が https://MyDomainName--PackageName.vf.force.com/apex/myCases の Visualforce ページのリンクを、URL が https://MyDomainName--PackageName.vf.force.com/apex/newCase の Visualforce ページに追加することを想定します。この場合は、ページを参照するときに相対パス /apex/newCase を使用します。

完全な URL のホスト名の生成

完全な URL が必要になる場合があります。たとえば、自分のパッケージで提供されるコンテンツを含む Visualforce ページを自分のパッケージで提供する場合です。パッケージに完全な URL が含まれる場合は、System.DomainCreator Apex クラスを使用して、関連付けられているホスト名を取得します。そうしないと、ユーザ側でパッケージ機能に関する問題が発生する場合があります。

たとえば、Visualforce ページのホスト名を返すには、System.DomainCreator Apex クラスの getVisualforceHostname(packageName) メソッドを使用します。
1//Define the name of your package as a string
2String packageName = 'abcpackage';
3
4//Get the Visualforce hostname
5String vfHostname = DomainCreator.getVisualforceHostname(packageName);
6
7//Build the URL for creating a new case
8System.URL vfNewCaseUrl = new URL('https', vfHostname, '/apex/newCase');

この例の場合、拡張ドメイン、および mycompany という [私のドメイン] の名前を持つ本番組織では、vfNewCaseUrlhttps://mycompany--abcpackage.vf.force.com/apex/newCase が返されます。

ドメインの一部の取得

既知の URL またはドメインを解析して値を取得するコードがパッケージにある場合は、より新しい Apex クラスの 1 つが使用されるようにコードを更新することをお勧めします。特定の URL 形式を前提としたコードは失敗する場合があります。

ホスト名が必要な場合は、System.DomainCreator クラスを使用できるかどうかを評価します。

別の理由でその値が必要な場合は、代わりに System.DomainParser または System.Domain Apex クラスを使用します。

次の例では、既知の URL を解析して、ドメイン種別、組織の [私のドメイン] の名前、およびパッケージ名を取得します。
1//Parse a known URL
2System.Domain domain = DomainParser.parse('https://mycompany--abcpackage.vf.force.com');
3
4//Get the domain type
5System.DomainType domainType = domain.getDomainType(); // Returns VISUALFORCE_DOMAIN
6
7//Get the org’s My Domain name
8String myDomainName = domain.getMyDomainName(); // Returns mycompany
9
10//Get the package name
11String packageName = domain.getPackageName(); // Returns abcpackage