构建应用时的一个常见场景是需要将“深层链接”共享到特定屏幕。 当您希望让用户直接访问特定屏幕和数据而不是让他们从应用的“主”屏幕导航时,深层链接非常有用。
要深度链接到 Power Apps,您需要使用以下 URL 语法:https://apps.powerapps.com/play/{App ID}?{Query}
。
在此语法中:
- 应用 ID- 应用程序的 ID。 转到 Power Apps>应用程序> 选择您的应用程序>详细信息。
- 查询 - 查询文本允许您提供要深度链接的数据。 您需要对画布应用进行一些代码更改,以使用提供的参数通过查询 URL 打开应用。
在本文中,您将了解如何:
- 设置一个画布应用来处理查询参数。
- 创建一个 UI,用于直接从您的应用屏幕通过电子邮件发送深层链接。
- 使用应用浏览到特定客户,发送包含深层链接的电子邮件,然后使用收到的电子邮件中的链接直接将应用打开到该客户。
先决条件
- Power Apps 许可证
- 如果您不熟悉 Power Apps,请通过生成应用然后自定义该应用的控件、库、窗体和卡来熟悉 Power Apps 的基础知识。
- 若要创建应用,须具有环境创建者安全角色。
创建应用
使用 Microsoft Dataverse 中的客户表创建应用。
您的应用将打开到 BrowseScreen,其中显示库中的客户列表。 默认情况下,此库显示一个电子邮件地址、一个城市和一个客户名称。 此应用还包含 DetailScreen 和 EditScreen。
更新导航
现在,您将设置导航以使用我们要用于将用户带到另一个屏幕的上下文。
在 BrowseScreen 屏幕上,选择库属性下的布局,然后选择标题、副标题和正文
选择 BrowseGallery 库的第一个记录。 然后,在 OnSelect 下,输入:
Navigate(DetailScreen1, Fade, {accountVal:ThisItem})
Navigate() 函数将创建一个名为 accountVal 的上下文变量。 每当您从库中选择记录时,都会填充此变量。 选择记录后,您将被带到 DetailScreen,其中包含 accountVal 中的选定值(在本例中为“客户”)。
从屏幕左侧的树视图,展开 DetailScreen1,然后选择 DetailForm1。
从屏幕右侧的属性窗格中,选择编辑字段,然后添加客户、主要联系人和电子邮件字段。
选择 DetailForm,将项目设置为 accountVal。
保存,使用名称“客户深层链接”。
获取应用 ID
应用 ID 是代表给定应用的唯一 GUID,在您将应用保存到云时生成。
要获取应用 ID,请打开新标签页并转到 Power Apps>应用程序> 选择您的应用程序>详细信息。 详细信息:获取应用 ID
启用指向屏幕的深层链接
此示例的目标是在应用启动时将用户带到 DetailsScreen1,并将 accountId 查询参数作为应用 URL 的一部分。 为此,我们将使用启动应用时检索提供的查询字符串参数的函数 Param()。
从屏幕左侧的树视图中选择应用。
小费
如果您已关闭 Power Apps Studio,请通过编辑应用重新打开已保存的“客户深层链接”应用。
从属性列表中选择 OnStart 属性。
要存储 应用 ID 值,请更新 OnStart 属性公式,如下所示。
Set(AppID, "GUID"); If(Not(IsBlank(Param("accountId"))),Set(accountId,Param("accountId")));
在此公式中,函数 Set() 将应用 ID 设置为应用的 GUID。 函数 Param() 将值存储在 accountId 变量中(如果不为空)。
备注
确保将上述公式中的“GUID”相应地替换为您的应用 ID。
选择应用的 StartScreen 属性,并添加:
If(Not(IsBlank(Param("accountId"))),DetailScreen1,BrowseScreen1)
此函数检查 Param 是否为空,然后停留在 BrowseScreen1 上。 或者,转到 DetailScreen1。
从树视图中选择 DetailScreen1。
选择 OnVisible 属性,输入:
If(Not(IsBlank(accountId)), UpdateContext({accountVal:LookUp(Accounts, Account = GUID(accountId))}))
此函数使用上一步中存储的 accountId 来设置 accountVal 变量。
创建深层链接 URL
您的应用现在已配置为作为参数接收 accountId,其包含客户表中客户的 GUID。 当向应用发起的请求中提供此参数时,应用将使用给定的 accountId 直接打开详细信息屏幕 (DetailScreen1)。
要使用参数值调用应用,我们必须使用以下语法:
https://apps.powerapps.com/play/{App ID}?{Query}
在上述语法中,我们必须添加应用 ID 和包含 accountId 变量及其值的查询。
例如,在示例租户的浏览器中输入以下 URL 时,应用客户深层链接直接使用提供的 accountId 参数值打开(在本例中为“A. Datum Corporation(示例)”):https://apps.powerapps.com/play/061b64cd-e5a0-4a7a-a77f-b6f8586dd6c7?accountId=01e5bf81-7d44-ec11-8c60-002248094566
在电子邮件中发送深层链接
我们还可以提供一个变量 accountVal 来指向客户的 ID,而不是使用上面解释的绝对链接,同时从应用内部调用给定客户的 URL。
为此,我们将创建一个按钮,并添加可从客户深层链接应用使用指向所选客户详细信息屏幕的深层链接在应用中调用电子邮件的功能。
在屏幕左侧选择数据。
选择添加数据>搜索并选择 Office 365 Outlook> 选择连接。
备注
此操作添加 Microsoft 365 Outlook 连接,以便我们可以使用后续步骤调用撰写电子邮件以共享客户信息。
从树视图中选择 DetailScreen1。
在屏幕右下角插入一个按钮,并将其重命名为共享客户。
在按钮的 OnSelect 属性上,输入:
Office365Outlook.SendEmailV2("Recipient", "Subject", "Here's the deep link to the selected account - https://apps.powerapps.com/play/{App ID}?accountId=" & accountVal.Account)
此公式使用 Outlook 的 Microsoft 365 连接器使用 SendEmailV2 操作发送电子邮件。
备注
将上述公式中的 Recipient、Subject 和 AppID 替换为收件人的电子邮件地址、电子邮件的主题和应用的 ID。
保存并发布应用。
测试应用
运行应用,然后转到任何客户的详细信息屏幕。 然后,选择共享客户按钮。 OnSelect 按钮公式会触发一封电子邮件发送给收件人,使用之前配置的主题和正文。 以下是配置的应用发送的示例电子邮件:
打开电子邮件,复制指向所选客户的深层链接,您将直接进入客户深层链接应用中的客户详细信息屏幕,而不是默认的浏览屏幕。