构建离线应用

为了将重点放在应用开发的脱机方面,本主题演示了一个围绕 Twitter 的简单方案。你将构建一个应用,使你能够在离线状态下阅读 Twitter 帖子和提交推文。当应用联机时,应用会发布推文并重新加载本地数据。

在较高级别上,应用执行以下任务:

  • 当用户打开应用时:
  • 如果设备处于联机状态,应用将通过 Twitter 连接器提取数据,并使用该数据填充集合。
  • 如果设备处于脱机状态,应用将使用 LoadData 函数从本地缓存文件加载数据。
  • 用户可以提交推文。如果应用程序处于联机状态,它会将推文直接发布到 Twitter 并刷新本地缓存。
  • 应用联机时每五分钟一次:
  • 应用会在本地缓存中发布任何推文。
  • 应用将刷新本地缓存,并使用 SaveData 函数进行保存。

第 1 步:将 Twitter 添加到空白手机应用

  1. 创建具有"手机"布局的空白画布应用。
  2. 在"视图"选项卡上,选择"数据源"。
  3. 在"数据"窗格中,选择"添加数据源"。
  4. 选择"新建连接"> Twitter >创建"。
  5. 输入凭据,创建连接,然后关闭"数据"窗格。

第 2 步:收集现有推文

  1. 在树视图窗格中,选择"应用",然后将其 OnStart 属性设置为以下公式:
If( Connection.Connected,
    ClearCollect( LocalTweets, Twitter.SearchTweet( "PowerApps", {maxResults: 10} ) );
        Set( statusText, "Online data" ),
    LoadData( LocalTweets, "LocalTweets", true );
        Set( statusText, "Local data" )
);
SaveData( LocalTweets, "LocalTweets" );

ChatGPT 有离线版本 twitch离线_属性设置

  1. 在"树视图"窗格中,选择 App 对象的省略号菜单,然后选择"在启动时运行"以运行该公式。

 注意

LoadData 和 SaveData 函数可能会在 Power Apps Studio 中显示错误,因为浏览器不支持它们。但是,在将此应用部署到设备后,它们将正常运行。

此公式检查设备是否联机:

  • 如果设备处于联机状态,则该公式会将最多 10 条带有搜索词"PowerApps"的推文加载到 LocalTweets 集合中。
  • 如果设备处于脱机状态,则公式将从名为"LocalTweets"的文件(如果可用)加载本地缓存。

第 3 步:在图库中显示推文

  1. 在"插入"选项卡上,选择"库">"空白挠性高度"。
  2. 将库控件的 Items 属性设置为 。LocalTweets
  3. 在库模板中,添加三个 Label 控件,并将每个标签的 Text 属性设置为以下值之一:
  • ThisItem.UserDetails.FullName & " (@" & ThisItem.UserDetails.UserName & ")"
  • Text(DateTimeValue(ThisItem.CreatedAtIso), DateTimeFormat.ShortDateTime)
  • ThisItem.TweetText
  1. 使最后一个标签中的文本加粗,以便库类似于此示例。

步骤 4:显示连接状态

  1. 在库下,插入一个标签,然后将其 Color 属性设置为红色。
  2. 将最新标签的 Text 属性设置为以下公式:If( Connection.Connected, "Connected", "Offline" )

此公式确定设备是否联机。如果是,标签将显示"已连接";否则,将显示"脱机"。

第 5 步:添加用于撰写推文的框

  1. 在连接状态标签下,插入一个 Text 输入控件,并将其重命名为 NewTweetTextInput。
  2. 将文本输入框的"默认"属性设置为 。""

步骤 6:添加用于发布推文的按钮

  1. 在文本输入框下,添加一个 Button 控件,并将其 Text 属性设置为以下值:"Tweet"
  2. 将按钮的 OnSelect 属性设置为以下公式:
If( Connection.Connected,
    Twitter.Tweet( "", {tweetText: NewTweetTextInput.Text} ),
    Collect( LocalTweetsToPost, {tweetText: NewTweetTextInput.Text} );
        SaveData( LocalTweetsToPost, "LocalTweetsToPost" )
);
Reset( NewTweetTextInput );
  1. 在应用的 OnStart 属性中,在公式的末尾添加一行:
If( Connection.Connected,
    ClearCollect( LocalTweets, Twitter.SearchTweet( "PowerApps", {maxResults: 100} ) );
        Set( statusText, "Online data" ),
    LoadData( LocalTweets, "LocalTweets", true );
        Set( statusText, "Local data" )
);
SaveData( LocalTweets, "LocalTweets" );
LoadData( LocalTweetsToPost, "LocalTweetsToPost", true );  // added line

ChatGPT 有离线版本 twitch离线_Text_02

以下公式确定设备是否处于联机状态:

  • 如果设备处于联机状态,它会立即发布推文。
  • 如果设备处于脱机状态,它将捕获 LocalTweetsToPost 集合中的推文并将其保存到设备。

然后,公式重置文本输入框中的文本。

第 7 步:检查新推文

  1. 在按钮的右侧,添加一个 Timer 控件。
  2. 将计时器的"持续时间"属性设置为 300000。
  3. 将计时器的"自动启动"和"重复"属性设置为 true。
  4. 将计时器的 OnTimerEnd 设置为以下公式:
If( Connection.Connected,
    ForAll( LocalTweetsToPost, Twitter.Tweet( "", {tweetText: tweetText} ) );
    Clear( LocalTweetsToPost );
    ClearCollect( LocalTweets, Twitter.SearchTweet( "PowerApps", {maxResults: 10} ) );
    SaveData( LocalTweets, "LocalTweets" );
)

此公式确定设备是否联机。如果是,应用将发布 LocalTweetsToPost 集合中的所有项目,然后清除该集合。