You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使Rivets Nuget实现邮件跳转Xamarin Forms App的自定义URI可点击

解决Xamarin Forms中自定义协议链接在邮件中不可点击的问题

这个问题的核心原因很明确:绝大多数邮件客户端只会自动识别带http/https协议的链接,像example://products?id=12345这种自定义协议的URL,默认会被当成纯文本处理,不会渲染成可点击的超链接。下面给你两个可行的解决方案,按需选择:

方案1:发送HTML格式邮件,用标签包裹自定义链接

这是最直接的办法,只要你的邮件支持HTML格式,就可以把自定义协议链接封装成标准的HTML超标签,邮件客户端会识别并渲染成可点击链接。

示例HTML代码:

<p>点击下方链接查看产品详情:</p>
<a href="example://products?id=12345">查看产品ID:12345的详情</a>

注意事项:

  • 确认你发送邮件的代码是按HTML格式发送的,而不是纯文本。比如在.NET中使用SmtpClient时,要把MailMessage.IsBodyHtml设为true。
  • 部分邮件客户端可能会对自定义协议链接做安全提示(比如询问是否允许打开外部应用),这是正常的安全机制,无法避免。

方案2:用HTTP中转链接跳转至自定义协议

如果因为某些限制不能发送HTML邮件,或者需要兼容对自定义协议支持较差的客户端,可以设置一个简单的HTTP中转页面,用户点击HTTP链接后,自动跳转到你的自定义协议地址。

步骤:

  1. 搭建一个轻量的web页面(比如用ASP.NET Core或者静态HTML页面),接收参数并跳转。
  2. 邮件中发送这个HTTP链接,比如http://yourdomain.com/redirect?productId=12345。
  3. 中转页面通过JavaScript或Meta标签自动跳转至自定义协议:

静态HTML中转页面示例:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>跳转至应用</title>
    <script>
        // 获取URL参数
        const urlParams = new URLSearchParams(window.location.search);
        const productId = urlParams.get('productId');
        // 跳转到自定义协议链接
        window.location.href = `example://products?id=${productId}`;
    </script>
</head>
<body>
    <p>如果没有自动跳转,请<a href="example://products?id=12345">点击这里</a></p>
</body>
</html>

额外确认:确保自定义协议已正确注册到APP

不管用哪个方案,都要先确认你的Xamarin Forms应用已经正确注册了example这个自定义协议,否则即使链接可点击,也无法打开APP:

Android端(AndroidManifest.xml):

在<activity>标签内添加intent-filter:

<intent-filter>
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" />
    <data android:scheme="example" />
</intent-filter>

iOS端(Info.plist):

添加以下配置:

<key>CFBundleURLTypes</key>
<array>
    <dict>
        <key>CFBundleURLSchemes</key>
        <array>
            <string>example</string>
        </array>
    </dict>
</array>
<key>LSApplicationQueriesSchemes</key>
<array>
    <string>example</string>
</array>

这两个配置确保系统能识别example://协议并关联到你的应用。

内容的提问来源于stack exchange,提问作者DarkW1nter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:23:05