您是否曾经经历过一场技术噩梦,使您感到沮丧和失望?好吧,让我告诉您我在Firebase Deep Link和Instagram Webview中最糟糕的经历。这一切都始于我试图深入链接到我的应用程序时,几乎不知道等待我的过山车骑行。当我更深入地研究时,我发现自己陷入了似乎永无止境的错误和虫子的迷宫中。就在我认为不会变得更糟的时候,Instagram WebView决定加入聚会。在本文中,我将分享我的故事如何变成持续数周的噩梦。
乍一看,我客户的要求似乎很简单。他们希望他们的应用具有带有深链接的特定页面,当用户单击该深链接时,该应用程序将直接打开到该页面。作为经验丰富的开发人员,我相信我可以使用Firebase Deep Links轻松实施此功能。
我首先创建Deep Link URL并在设备上对其进行测试。一切似乎都按预期工作,简单的权利
当我以为自己完成了深层链接功能时,我的客户再次与我联系了我。他们想跟踪深处链接上的点击次数,并仅在管理面板中提供数据。
我以为我会给firebase一个深层链接,而firebase会为我提供链接点击应用程序的统计信息,而不是打开什么,但是众所周知,期望总是会受到伤害
Firebase没有办法将这些信息提供给我们,因为这些链接是从我的后端动态生成的。
所以我开始考虑替代解决方案,因此我提出了一个想法,即用户将首先重定向到我的着陆页,然后我将其重定向到我的deeplink,因此我将获得链接点击计数,并且应用程序页面将打开为好吧,再次简单,但我丢失了深层链接给我的链接预览,但是当我知道meta和og标签时,生成链接预览是一项简单的任务,我只需要从服务器中动态发送HTML,我就可以完成
但是,这些和平的日子并没有持续很长时间,链接停止了工作
原因:我的客户启动了Facebook和Instagram广告,当共享我的自定义链接时,我的自定义链接重定向到Deep Link,但没有将其重定向到我的应用程序ð,这是React Native WebView的问题,它仍然在github中打开自2016年以来
所以我的同事Android(我是否提到此问题仅在Androidð中)开发人员带来了一个想法,可以使用自定义方案打开Android应用
关于自定义方案的小注释
- 自定义方案是可以帮助您从浏览器打开应用程序的链接,这些自定义方案在安装应用程序时在OS级别注册
下面是WhatsApp网站试图通过自定义方案打开WhatsApp应用的示例
但是问题仍然相同ð,Instagram WebView如果未安装该应用程序并且WebView崩溃,则无法处理,所以现在!
我们观察到我们的链接仅在WebView中不起作用,因此可以找到一种方法,因此我们只需要找到一种方法,以便当Instagram和Facebook中的clicked inclate in instagram和facebook中的链接在外部浏览器中打开,链接将只能工作细ð
但是问题是我该怎么做?
记住,当我说我要发送元标签以生成链接预览后,我发现了一个元标记
<meta http-equiv="refresh" content="0; url=intent://${intent_link}/#Intent;scheme=https;action=android.intent.action.VIEW;end;" />
所以现在发生的事情是,当某人单击链接时,打开了应用程序浏览器,然后打开一个外部浏览器,然后浏览器打开我的原始深链接,然后深链接将控制权控制
经过几天的挣扎和与我的团队无休止的头脑风暴会议,我们终于找到了一种无缝效果的解决方案。通过结合自定义方案和Meta Refresh标签,我们能够绕过Instagram WebView的局限性并为我们的客户提供流畅的用户体验。
回顾过去,这是一段艰难的旅程,但是我们一路上学到的教训是无价的。我们对Webview技术的工作原理以及如何处理开发过程中出现的不可预见的障碍有了更深入的了解。
总而言之,尽管实施Firebase Deep Links和Instagram Webview的道路可能是颠簸的,但我们以超出客户期望的解决方案取得了胜利。谁知道,也许下次我们面临类似的挑战时,我们会更好地面对面。