tyoshikawa1106のブログ

- Force.com Developer Blog -

SFDC:Lightning Experienceの判定方法

TrailheadにLightning Experienceの判定方法が紹介されていました。

f:id:tyoshikawa1106:20151028222948p:plain

Sharing Visualforce Pages Between Classic and Lightning Experience Unit | Salesforce Trailhead

JavaScriptでの判定方法

JSの処理中にLightning ExperienceかSalesforce Cloassicか判定する場合は、次のように判定すればいいみたいです。
f:id:tyoshikawa1106:20151028223130p:plain

function isLightningExperienceOrSalesforce1() {
    return((typeof sforce != 'undefined') && sforce && (!!sforce.one));
}

if( isLightningExperienceOrSalesforce1() ) {
    // Do something for Lightning Experience
}
else {
    // Use classic Visualforce
}

SOQLでの判定方法

ユーザ項目に『UserPreferencesLightningExperiencePreferred』という項目が追加されていました。これをつかって判定ができるみたいです。
f:id:tyoshikawa1106:20151028223454p:plain


実際にクエリを実行してみた結果がこちらです。
f:id:tyoshikawa1106:20151028223638p:plain


この『UserPreferencesLightningExperiencePreferred』項目ですが、そのユーザがどちらのモードを利用しているかをフラグで持っているみたいです。

Salesforce Classicを利用している場合

f:id:tyoshikawa1106:20151028223843p:plain
f:id:tyoshikawa1106:20151028223942p:plain

Lightning Experienceに切り替えた場合

f:id:tyoshikawa1106:20151028224032p:plain
f:id:tyoshikawa1106:20151028224116p:plain


けっこうおもしろい項目だと思います。ただし、「クエリを使った判定方法は非推奨です」と記載がありました。

Querying for the user’s Lightning Experience preference directly is discouraged. The result tells you what the user’s current preference setting is, not what user experience is actually on their screen. If the user is using an older browser, the preference value might not reflect the user experience that’s actually being delivered.


クエリ判定の方はあまり利用しないほうがいいかもしれません。