android - MSTeams 选项卡应用程序可在桌面、浏览器和 iOS 上运行,但不能在 Android 上运行
问题描述
我正在为 MSTeams 开发一个选项卡应用程序。我在桌面应用程序、浏览器和 iOS 上的一切都按预期工作。但是,当我尝试访问 Android 设备上的选项卡时,它似乎entityId
被覆盖了。
这就是我所拥有的registerOnSaveHandler()
:
microsoftTeams.settings.registerOnSaveHandler((saveEvent) => {
microsoftTeams.settings.setSettings({
websiteUrl: "https://{{ teams_app_domain }}/",
contentUrl: "https://{{ teams_app_domain }}/msteams/content/?name={loginHint}&tenant={tid}&group={groupId}&channelId={channelId}&teamSiteDomain={teamSiteDomain}&entityId={entityId}",
entityId: config,
suggestedDisplayName: "Display Name"
});
saveEvent.notifySuccess();
});
这与文档所说的处理程序的期望相匹配。我已经尝试更新并使其与此处建议的本文websiteUrl
完全相同,但这也不起作用。contentUrl
但是,我在 GitHub 上发现了这两个问题(从去年年初开始),这与我看到的行为完全匹配
https://github.com/MicrosoftDocs/msteams-docs/issues/1335
https://github.com/MicrosoftDocs/msteams-docs/issues/1251
这两个被标记为已解决,但我认为这个问题仍然存在。
如果有人经历过或知道解决方法并想分享它 - 将不胜感激
解决方案
我建议在没有任何 url 参数的情况下尝试它 - 尝试Context
在页面上使用 Teams 对象获取上下文。这有一个额外的好处,即某些私人信息不会通过请求本身共享(我认为查询字符串值将报告给服务器之间,而流量本身不会,在这种情况下,它包括您用户的登录名)。
在相关说明中,当您使用setSettings
它时,它会设置选项卡的最终url。它不会因用户而异。但是,您是loginHint
根据配置选项卡的用户进行设置的。这意味着,如果您使用该值尝试为每个用户做某事,它实际上只会显示第一个用户的值(不会为每个访问者设置 URL,仅在setSettings
.
因此,就像我说的那样,请考虑使用 Teams 上下文执行所有操作,或者至少确保您不介意查询字符串中的内容。
推荐阅读
- mysql - 复合键索引
- docker - 如何在 dockerfile 中参数化 docker registery
- php - 在 laravel 中编辑帖子时显示类别
- ios - 使用加速度计移动、摆动、连接到弹簧的 UIView
- php - 如何在codeIgniter中正确查询?
- c# - 将数据发布到 WebApi 时,DataTables.AspNet IDataTablesRequest 为空
- python-3.x - Tkinter 无法分配图像
- machine-learning - 如何启动从数据表中提取相关短语的 AI?
- html - 在下拉列表中捕获粘贴事件
- php - 在 PHP 中使用 foreach 创建的表单中的输入,如何使用 post 方法传递所有输入值?