首页 > 解决方案 > 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

这两个被标记为已解决,但我认为这个问题仍然存在。

如果有人经历过或知道解决方法并想分享它 - 将不胜感激

标签: androidtabsmicrosoft-teams

解决方案


我建议在没有任何 url 参数的情况下尝试它 - 尝试Context在页面上使用 Teams 对象获取上下文。这有一个额外的好处,即某些私人信息不会通过请求本身共享(我认为查询字符串值将报告给服务器之间,而流量本身不会,在这种情况下,它包括您用户的登录名)。

在相关说明中,当您使用setSettings它时,它会设置选项卡的最终url。它不会用户而异。但是,您是loginHint根据配置选项卡的用户进行设置的。这意味着,如果您使用该值尝试为每个用户做某事,它实际上只会显示第一个用户的值(不会为每个访问者设置 URL,仅在setSettings.

因此,就像我说的那样,请考虑使用 Teams 上下文执行所有操作,或者至少确保您不介意查询字符串中的内容。


推荐阅读