【问题标题】:How to redirect the user to a mobile app or a website on click of a hyperlink sent in an email? Should it need to be handled on server-side using PHP?如何通过单击电子邮件中发送的超链接将用户重定向到移动应用程序或网站?是否需要使用 PHP 在服务器端进行处理?
【发布时间】:2015-05-07 16:31:30
【问题描述】:

我有一个已经使用 PHPFox 开发的网站,并且运行良好。现在,iOS 开发团队已经在 iOS 中创建了一个与网站功能相同的移动应用程序。用户可以使用此应用程序执行他/她可以在网站上执行的所有操作。换句话说,我们可以说这个应用程序是现有网站的复制品。开发应用程序的唯一限制是流程和功能应与网站相同。应用程序和现有正在运行的网站之间不应存在任何功能差异。

对于这个应用程序,他们使用网站 PHPFox 代码库中的相同功能。我通过使用 Slim 框架开发的 REST API 使 iOS 团队可以使用这些功能。在这些 API 中,我从应用程序接受 JSON 格式的请求,对其进行解码,通过传递所需的请求参数从 PHPFox 代码库调用所需的函数,从函数获取响应,将其转换为 JSON 格式并将其发送回到移动应用程序。

现在,让我们专注于我面临的问题。

在这两种情况下(网站和应用程序)的某些功能,如新用户帐户激活链接、重新发送帐户激活链接、如果他/她忘记密码则重置现有用户的密码等,将向相关用户发送一封电子邮件。此电子邮件包含相关的超链接。当用户点击发送到电子邮件中的这个超链接时,它总是会重定向到网站上的相应网页。

当该特定用户点击收到的邮件中的超链接时,它会被重定向到仅网站。它不会重定向到应用程序。

我的要求是,如果用户已在安装/运行移动应用程序的设备上打开邮件并单击邮件中的超链接,他/她应该重定向到移动应用程序的特定页面而不是网站。

假设如果用户在计算机、笔记本电脑或未安装应用程序的设备上打开邮件,他/她应该重定向到网站。

我应该如何做到这一点?

这里还有一点需要注意的是,要发送到邮件中的链接的重定向路径(href 属性的值)只生成到网站的PHPFox 代码中。那么,如果我需要改变逻辑来实现这个新功能,我应该怎么做而不改变应用程序和网站上的系统流程呢?或者我应该为它写一个新函数,以免改变 PHPFox 的现有代码?

我研究了这个问题的解决方案。我知道Bitly 可以完成这项工作,但不明白如何。

iOS 团队根据他们在互联网上找到的this hyperlink article 向我(PHP 团队)提出了这个要求。也请参考这个。

所以,我的直截了当的问题是,既然这篇文章是关于 iOS 编码的,它与服务器端编码(即 PHP)无关,我是否必须使用 PHP 在服务器端做任何事情来实现这个功能?

【问题讨论】:

    标签: php ios redirect hyperlink phpfox


    【解决方案1】:

    您(或您的 iOS 团队)需要将 URL 方案添加到 iOS 应用程序以使深层链接成为可能。然后,您需要一个网站来检查此 URL 方案(以及 iOS 应用程序)是否在设备上可用。如果是,那么您转发到应用程序,如果不是,您转发到网站。然后,您将检查网站的链接嵌入到您的电子邮件中。

    有一些服务可以帮助您完成整个设置。我知道的一个是https://branch.io,但我敢肯定还有更多。

    编辑:

    iOS 中的深度链接:http://blog.originate.com/blog/2014/04/22/deeplinking-in-ios/

    来自该链接:“要启用深度链接,请转到 Xcode 项目中的 Info 选项卡。在 URL Types 部分中,单击 + 按钮,然后添加标识符和 URL 方案。确保标识符和您选择的 URL 方案是唯一的。记下您输入的 URL 方案,因为这是 iOS 知道在您的应用中打开链接的方式。”

    还有更多步骤需要遵循,因此请务必阅读全文。

    为 iOS 和 Web 创建链接:

    Create a link that either launches iOS app, or redirects to app store

    Is it possible to register a http+domain-based URL Scheme for iPhone apps, like YouTube and Maps?

    您希望重定向到您的网页,而不是重定向到 AppStore。

    【讨论】:

    • 感谢您的回答,但坦率地说,我从您的回答中没有得到任何有用的解决方案。我还在我的问题中建议了一个这样的链接,即bitly.com我的问题仍未得到解答。我应该怎么做,或者 iOS 团队应该在他们这边完成整个工作?我期待这个问题的逐步详细答案,这可能是解决这个问题的有效方法。还有一件事,我无法对用 PHPFox 编写的现有正在运行的网站代码进行任何更改。所以,考虑到这个限制,请给我适当的解决方案。再次感谢您的努力。
    • 这个答案没有错,我个人认为你不明白你必须做什么。这项工作必须由 iOS 团队通过注册“深层链接”或“URLScheme”来完成,这将是其他应用程序(和浏览器)能够调用和打开您的应用程序和 PHP 端的“地址”,检查是否页面已在 PC 或 iPhone 浏览器上查看,并重定向到应用程序或留在浏览器上,以防您的 iPhone 上没有安装应用程序(@Adam 为此提供了代码 sn-p)。跨度>
    • @Thorsten 这不是给定问题的答案。你的答案没有指向问题,所以这没有用。
    【解决方案2】:

    使用 javascript,您可以有一个登录页面来引导用户:

    您可以使用以下方法将用户重定向到应用方案:

     document.location="myApp://myUrl";
    

    如果浏览器没有找到 uri 方案,您可以使用 setTimeout 将用户重定向到您的网页

    setTimeout(function() {
       document.location="/path/inside/website.html";
    }, 100);
    

    另一个好的解决方案是在一个小测试文件上使用 iframe 测试 url 架构的存在,如果 iframe 可以加载,则重定向当前页面

    <iframe id="ifrm" src="" style="display:none"></iframe>
    <script>
    window.frames['ifrm'].onload = function() {
       document.location="myApp://myUrl";
    };
    window.frames['ifrm'].src = "myApp://myUrl/ok.txt";
    </script>
    

    【讨论】:

    • 有没有办法捕获请求参数?例如,电子邮件中的链接包含“landingpage.com?email=hello@yahoo.com”,当用户点击时,他们会被重定向到登录页面,该页面将提取电子邮件并将其添加到“myApp://myUrl/email”?
    【解决方案3】:

    您无需执行任何操作。请您的 iOS 开发人员阅读有关 URL Schemes 的信息,这似乎已在您提到的链接中进行了解释,iOS 团队已根据该链接与您联系。该链接显示了如何使您的应用程序能够从另一个地方启动(应用程序-在您的情况下是邮件应用程序)。电子邮件将用户带到网站而不是应用程序的原因是因为超链接提到了您的网络链接,而对应用程序只字未提。

    与您的网站具有sayhttp://youwebsite.com/ 形式的链接的方式基本相似,该应用程序还具有yourapp:// 的链接,一旦iOS 应用程序集成了URL scheme,它就可以在设备上运行。因此,您需要在电子邮件超链接中提及此 URL。

    请参阅this answer,这可能会帮助您设置邮件链接。

    总结一下,

    1. 你什么都不用做
    2. iOS 团队需要集成 URL Scheme
    3. 生成电子邮件的位置确保链接已正确更新

    P.S.:使用上面的链接来了解链接是如何工作的,这里没有解释它有两个原因,

    a) 它超出了问题的范围,您需要知道作为 PHP 开发人员是否需要进行任何更改,所以答案是否定的。

    b) 已在this answer 中解决

    【讨论】:

      【解决方案4】:

      根据我的理解,解决方案很简单。

      每当用户要求忘记密码或创建新帐户..等。您必须识别来自iPhone or Website 的用户发送请求,如果用户从网站发送请求,您必须传递网页的激活链接,否则您必须发送这样的应用程序链接 "itms-apps:// itunes.apple.com/app/idyourappID",据我说,为了确定这个 PHP 团队必须从开发团队那里获得一个用于识别设备的参数,例如 'web''mobile',这样你的问题会解决的。

      希望这会对你有所帮助。

      【讨论】:

        【解决方案5】:

        在用户实际打开链接应用程序或桌面之前,您永远不会知道用户将从何处打开链接应用程序或桌面。

        所以我会尝试基于用户代理代理 URL。

        Here 是一个关于如何在 nginx 中执行此操作的示例。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2013-10-24
          • 2014-10-28
          • 1970-01-01
          • 1970-01-01
          • 2011-08-05
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多