关于salesforce手机端的开发有一个应用叫【Publisher Playground】,今天简单讲一下配置以及如何适用于Community Cloud,ios系统和安卓系统都可以。
现在以安卓手机为例子,首先在GooglePlay把这个应用下载下来,如下图。
※正常在国内是无法下载的,可以自己想办法
打开之后,如下图所示,可以直接输入准备好的Community的URL,就可以进入登录页面了,如果没有Community,可以参照之前的文章Salesforce学习 CommunityCloud(一)开发前的准备工作
输入User和密码之后,就会直接进入Community画面了。
PC端登录后效果:
上边手机端和PC端进入之后,打开的是同一个画面,因为画面大小布局不同,所以一般手机和PC想要展示的画面是不一样的。如果分别做成两个Page,登录成功之后,要如何实现跳转呢,手机端登录的情况下,要求有相应Check要怎么实现呢,我们可以考虑使用【Login Flows】功能,具体请参照。
1.手机端专用HomePage做成
这个是正常的HomePage↓↓↓
手机端用的Page做成↓↓↓,记住URL,后边访问时使用。
做成之后,可以通过画面右上角第三个图标选择手机图标进行预览,效果如下
2.跳转用VisualforcePage做成
PC端登录,手机端登录的判断逻辑,跳转和验证的逻辑,都可以在这里实现。
loginFlowTest.page
代码语言:javascript复制<apex:page showHeader="false" standardStylesheets="false" sidebar="false" applyHtmlTag="false" applyBodyTag="false" controller="VFLoginFlowController" action="{!initialNavigation}">
{!header}
<apex:pageMessages />
</apex:page>
VFLoginFlowController.cls
代码语言:javascript复制public with sharing class VFLoginFlowController {
public string header { get; set; }
public Boolean isMobile {get; set;}
public DeviceWrapper deviceWrapper { get; set; }
public VFLoginFlowController () {
this.isMobile = false;
this.deviceWrapper = new DeviceWrapper();
this.header= ApexPages.currentPage().getHeaders().get('User-Agent');
if (header.contains('iPhone') || header.contains('android') || header.contains('Android') || header.contains('webOS')) {
this.isMobile = true;
}
if(this.isMobile) {
if(this.header.contains('Publisher')) {
deviceWrapper.appType = 'Publisher';
} else if(this.header.contains('mitoco_Calendar') || this.header.contains('mitoco Calendar')) {
deviceWrapper.appType = 'mitocoCal';
} else if(this.header.contains('TalkAppStore') || this.header.contains('mitoco Talk')) {
deviceWrapper.appType = 'mitocoTalk';
}
} else {
}
}
public PageReference initialNavigation() {
String baseURL = URL.getSalesforceBaseUrl().toExternalForm();
String destinationURL = baseURL '/UrsaMajor' '/s/';
String errorType;
if(this.isMobile) {
if(this.deviceWrapper.appType == 'Publisher') {
destinationURL = 'TopPageMobile';
return Auth.SessionManagement.finishLoginFlow(destinationURL);
} else {
// TODO
destinationURL = 'XXXXXXX';
return Auth.SessionManagement.finishLoginFlow(destinationURL);
}
} else {
return Auth.SessionManagement.finishLoginFlow(destinationURL);
}
}
public class DeviceWrapper {
public String appType {get; set;}
}
}
3.Login Flows做成
Setup→Login Flows→New
在【VisualforcePage】栏选择上边做成的Page名,【Profile】栏选择允许登录User的profile名。
效果展示:
PC端登录也不会被影响