场景介绍
我们在开发power apps的时候会遇到这样一个业务问题:当户用超过一定的时间没有操作App 界面的时候,为了安全就要求自动退出这个App。其实这个功能微软也是自带了的,但是有一定的局限性。它在admin center里面有一个关于Session的设置,但是这个局限于不能应用于单个App,他的最小颗粒度是环境。也就是说当我们设置了之后整个环境的App,都会遵循这个时间的设置销毁这个会话。接下来我们介绍一种只针对于单个App方法。
环境准备
1,任意的一个PP环境都可以
2,测试账号
代码开发
定时器(Timer)
我们采用定时器作为辅助功能。
新建一个App,然后插入一个Timer,我们将Timer的
1.AutoStart(自动开始)属性设为true,它会在我们进入App 的时候自动开始计时2.Duration(定时的时间)属性设为10000,(单位为毫秒),即10秒。3.OnTimerEnd(计时结束后的Action)属性设为:
Notify(“即将退出登录!”,NotificationType.Warning); (提示时间到了)
Exit(true);(注销当前用户,退出App)
4.Start (开始计时),我们这个地方需要注意,将这个属性设置为:
TimerStartVar 的全局变量(当变量为true时,计时器会开始计时,但是当我们干预计时,或者我们重置计时器后,这个变量不会自动设为false,还是true。这个时候就需要手动将这个变量设为false,然后再设为true。后面我们可以试一下就明白什么意思了。)
函数
Exit()
退出登录,当函数的输入参数为ture的时候账户会注销。需要重新登录:
Exit(True)
倒计时显示
然后我们可以插入一个Text Label,然后将TextLable的Text属性设置为:
"Number of seconds remaining: " & RoundUp(10-Timer1.Value/1000, 0)
这个是10秒的倒计时
按钮重置倒计时
插入一个按钮,然后我们把按钮的OnSelect属性设置为:
Notify("您已重置时间",NotificationType.Information); //点击按钮,干预计时器提示重置时间,模拟用户在界面上的操作。
Reset(Timer1);//重置定时器的计时,使定时器重新计时
Set(TimerStartVar,true);//将Timer1的Start属性的TimerStartVar 变量设置为true,为了让计时器开始计时。
测试
我们播放开始测试,我们播放后可以看到正常计时:
但是当我们点击重置之后,我们发现计时器不会计时了:
这是因为,我们这个变量不会随着Reset(Timer1),而自动更新,这个时候需要我们手动设置一下false,再设置为true,正确按钮代码如下:
Notify("您已重置时间",NotificationType.Information);
Reset(Timer1);
Set(TimerStartVar,false);
Set(TimerStartVar,true);
然后我们可以再测试:
我们发现没有问题了。
然后Timer有个AutoPause的属性:
AutoPause – 用户导航到其他屏幕时 计时器 控件是否自动暂停,我们设置为false,我们全局就用这一个定时器呀。
然后我们把App发布,来测试注销的效果。
注销账户效果
一般客户会使用App的link来进入App,我们可以去取App的Link:
我们复制到浏览器来整体测试:
点击重置后:
等待即时结束:
然后我们发现从这个页面除了重新登陆是不能再进入App了,成功!
总结
我们最后用按钮模拟用户在App 中的Action ,我们就需要在App 中的每一个能够点击,输入有Action的地方将
Reset(Timer1);
Set(TimerStartVar,false);
Set(TimerStartVar,true);
代码粘贴进去,然后注意将定时器的AutoPause 属性设为false,跳转到其他屏幕时自动暂停计时关闭。(我们全局就用一个定时器辅助)。然后就完成了,流程不麻烦,大家可以试一下。