1

我有一个 PowerApp,我正在尝试为其构建离线功能。以下是我正在尝试实现的场景。需要建议。

我有计时器 API 方法,它基本上在我在应用程序中启动和停止计时器方法时执行。在在线模式下它工作正常,但我想允许用户在离线模式下启动/停止计时器。当应用处于离线模式时,API 调用失败,因为它未连接。我如何绕过这种情况并在离线模式下启动和停止计时器。有没有办法做到这一点?这是我的 API 定义。

ClearCollect(colTimers, Time360.timerStartStop({_timerContract:{
    Comment:txtDBTimerDescription.Text, 
    Running:"Yes", 
    IsPinned:"No", 
    CustomerAccount:tsLineCust.CustNum,
    ProjectId:tsLineProj.ProjectId,
    ProjectCategoryId:tsLineCat.CategoryId,
    ParentId:0,
    RecordId:0,
    ProjectDataAreaId:If(Len(tsLineCust.DataAreaId) > 0, tsLineCust.DataAreaId, If(Len(tsLineProj.DataAreaId) > 0, tsLineProj.DataAreaId))
    }}));
4

2 回答 2

1

使用 Connection.Connected 查看您是否有互联网连接。

If(Connection.Connected, 
      // TRUE: connect to the api, 
      // FALSE: add to local collection
   )
于 2020-03-31T03:24:59.810 回答
0

PowerApps 有一个内置的 Timer 控件。

  • 插入
  • 输入/定时器

在此处输入图像描述

  • 将其Duration属性设置为所需的毫秒数
  • 将其设置Repeattrue保持脉冲
  • 将其设置AutoStarttrue使其在屏幕加载时启动
  • 将其设置OnTimerEnd为执行您想要的功能(如下面的代码)

您可能想要调查 PowerAppsSaveData()函数。

就像是:

If(
    Connection.Connected,
        Patch(theDataSource,
        Defaults(theDataSource),
        {
            Comment:txtDBTimerDescription.Text, 
            Running:"Yes", 
            IsPinned:"No", 
            CustomerAccount:tsLineCust.CustNum,
            ProjectId:tsLineProj.ProjectId,
            ProjectCategoryId:tsLineCat.CategoryId,
            ParentId:0,
            RecordId:0,
            ProjectDataAreaId:If(Len(tsLineCust.DataAreaId) > 0, tsLineCust.DataAreaId, If(Len(tsLineProj.DataAreaId) > 0, tsLineProj.DataAreaId))
        }
    ),

    Collect(colLocalData, {...same stuff as above...});
    SaveData(fileLocalCache, colLocalData)
)

Paul O'Flaherty在这里拥有更好的 PowerApps 离线视频之一。

于 2020-04-18T07:58:24.127 回答