【问题标题】:Custom URL Scheme not a link in Outlook (iOS/Android)自定义 URL 方案不是 Outlook (iOS/Android) 中的链接
【发布时间】:2018-05-07 09:38:11
【问题描述】:

我们的应用程序可以使用myapp://mainpage?param=123 等自定义 URL 方案启动。当它作为链接包含在网页中时,此方法有效。而且,在 iOS 上,它可以在平台自带的邮件客户端中运行。

用户注册并安装应用程序后,会收到一封带有链接的邮件。我们需要这个,因为我们想将一些数据传递到应用程序中。

但是,这在 iOS 上的 Microsoft Outlook 应用中不起作用。

在 Android 上,作为一种解决方法,我们的应用还支持 https URL Scheme,例如 https://myapp/mainpage?param=123

有人知道如何在 iOS 上的 Microsoft Outlook 中从邮件启动我的应用程序吗?

如果不需要,我宁愿不依赖第三方网站。通用链接不起作用,因为该应用程序与一个网站协同工作,该网站位于我们每个企业客户的单独 URL 上。

这是我在Info.plist 中注册方案的部分内容:

  <key>CFBundleURLTypes</key>
  <array>
    <dict>
      <key>CFBundleURLName</key>
      <string>My App</string>
      <key>CFBundleURLSchemes</key>
      <array>
        <string>myapp</string>
      </array>
    </dict>
  </array>

【问题讨论】:

  • https://myapp/mainpage?param=123 是否适用于 Outlook?任何网址都适用于 Outlook 吗?如果您可以获得在 Outlook 中工作的 url,但不是您喜欢使用的方式,您可以专门为 Outlook 创建一个if 语句,Android 或 IOS 不会看到该语句。你可以专门为 IOS 做同样的事情。
  • @gwally 我不明白,我在哪里可以创建if 语句?

标签: android ios mobile outlook mobile-application


【解决方案1】:

iOS 也支持通用链接。 所以,不要使用自定义方案,而是在 iOS 中实现 Universal link

这是一个旧的 repo,但可能对 github.com/Satish/iOS-Universal-Links 有所帮助

您需要在http://your-site.com/ 域(即http://your-site.com/apple-app-site-association)托管apple-app-site-association。

 {
    "applinks": {
        "apps": [],
        "details": [
            {
                "appID": "XXXX.nnnn",
                "paths": [
                    "/yourpath"
                ]
            }
        ]
    }
 }

您可以在单个域上托管此文件并发送具有相同域的 URL http://your-site.com 并发送标识符作为参数来识别您的业务并在您的应用代码中采取行动。

【讨论】:

  • 感谢您的回答,但我不想托管一个仅用于处理应用链接的新网站。
【解决方案2】:

在电子邮件中,我们可以根据电子邮件客户端在一定程度上隐藏内容。

如果你把它添加到你的样式表中:

<style>
  .android {display: block;}
  .webkit {display: none;}

  @media screen and (-webkit-min-device-pixel-ratio:0) {
    .android {display: none;}
    .webkit {display: block !important;}
  }
</style>
<!--[if (gte mso 9)|(IE)]>
 <style type="text/css">
   .android {display: none;}
   .webkit {display: none;}
</style>
<![endif]-->  

这告诉电子邮件客户端它是 android 还是任何电子邮件客户端,显示类 .android 媒体查询告诉所有 webkit 客户端(Apple Mail、IOS)隐藏 android 并显示 webkit 链接。

&lt;!--[if (gte mso 9)|(IE)]&gt; 创建一个特殊的样式表以在 Outlook 中隐藏 .android.webkit 类。

在电子邮件正文中,执行以下操作:

<!--[if mso | IE]>
  Outlook Only: url://that-works-with-outlook
<![endif]-->
<!--[if !mso 9]><!-->
  <span class="android">All Email Clients: https://myapp/mainpage?param=123</span>
  <span class="webkit" style="display: none;">Webkit-only: myapp://mainpage?param=123</span>
<![endif]-->

&lt;!--[if !mso 9]&gt;&lt;!--&gt; 在 Outlook 中隐藏 Apple 和其他设备的 URL,因此它们不会显示在 Outlook 的电子邮件中。

&lt;!--[if mso | IE]&gt; 对非 Outlook 客户端隐藏 Outlook 专用 URL。

.webkit 类对其他客户端隐藏 Apple / IOS 链接。

.android 从 Outlook 隐藏适用于其他客户端的 URL。

通过这种方式,您可以针对 Outlook、Apple 并适用于所有其他电子邮件客户端,而不会让最终用户感到困惑。

祝你好运。

【讨论】:

  • 谢谢!但是问题仍然存在:Outlook 邮件应用程序不显示带有自定义 URL 方案的链接。我要做的是:在邮件中将用户指向一个显示带有自定义 URL 方案的链接的站点。
  • @JaccoDieleman 我不确定哪种 url 方案适用于 Outlook。我只是为您提供了一种使用适用于您的任务的 URL 来定位 Outlook、Android 和 IOS 的方法。
最近更新 更多