如何使用消息按钮或 link 在 slack 上发送临时应用程序下载 link itms-service

How to send ad-hoc app download link itms-service on slack using message buttons or link

我有一个 slack /Slash 命令可以生成应用程序文件 link。我想将 link 作为按钮或 link 发送给用户,但它必须带有前缀:

itms-services://?action=download-manifest&url={download_link}

目前 slack 没有将其识别为有效的 link,但由于权限问题,iOS 将其强制执行。

基本上我想在 slack 上模仿网络上的下载按钮,这样用户就不需要访问该网站。

在 Web 上这个 link itms-services://?action=download-manifest&url={download_link} 工作正常,要求用户授权下载。

test_attachment = [
    {
        "color": "#CC0000",
        "actions": [
            {
                "type": "button",
                "text": ":red_circle:   Download Link:",
                "url": "itms-services://?action=download-manifest&url={download_link}"
            }
        ]
    }
]

slack_client.api_call("chat.postMessage", channel=channel_id, text=text, attachments=json.dumps(test_attachment))

另一个例子:

<a href="itms-services://?action=download-manifest&url=http://loqi.me/app/Geoloqi.plist">
  Download Geoloqi
</a>

这将适用于 Web 以及如何使其适用于松弛消息。

我在我的一个应用程序中遇到了类似的问题,我想为动态生成的图像文件提供下载按钮。

据我所知,Slack 中没有允许您执行此操作的开关或选项,因此您唯一的选择是使用辅助网络应用程序。

方法是:

  1. 用户点击 Slack 上的 link 按钮,在浏览器中打开您的帮助网络应用程序
  2. Helper Web 应用执行实际下载(不需要进一步的用户交互)

我的猜测是用户无论如何都需要在浏览器中进行身份验证,因此这不会给用户带来任何不便。但当然你需要提供额外的网络助手应用程序。

itms-services link 不被 slack 解析器识别为有效的 URL 因为它的地址(我们通常在 :// 之后找到的东西)是空的。 一个快速的解决方法是用一个虚拟地址填充它,例如 0.0.0.0.

这是一个有效的积木套件:

{
    "blocks": [
        {
            "type": "section",
            "text": {
                "type": "mrkdwn",
                "text": "Try to install me:"
            },
            "accessory": {
                "type": "button",
                "text": {
                    "type": "plain_text",
                    "text": "Install",
                    "emoji": true
                },
                "url": "itms-services://0.0.0.0?action=download-manifest&url={download_link}"
            }
        }
    ]
}

看起来像: