Salesforce学习 Mobile(一)Publisher for Community Cloud

2021-03-19 10:21:55 浏览数 (1)

关于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端登录也不会被影响

0 人点赞