【发布时间】:2018-09-26 04:16:03
【问题描述】:
我们在 iOS 和 Android 上都有一个应用程序。它们都实现了相同的深层链接 (例如 myapp://home/?abc=xxx&bcd=yyy)
我们已经在 iOS 和 Android 上进行了测试,深层链接有效,可以打开我们的应用程序。
然后我们创建一个 API 服务。 (例如https://myapp.com/testing/1234568)
当用户点击该链接时,会通过HTTP头User-Agent判断用户是否为移动客户端。
如果客户端是移动客户端,它将返回 HTTP 302,其 Location 标头与我们的深层链接相同。
请求和响应是这样的:
GET /testing/1234568 HTTP/1.1
Host: myapp.com
Accept: */*
User-Agent: Mozilla/5.0 (Linux; Android 7.0; SM-G930V Build/NRD90M)
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.125 Mobile Safari/537.36
HTTP/1.1 302
Location: myapp://home/?abc=xxx&bcd=yyy
Content-Length: 0
该服务可以在iOS中完美运行,用户点击链接后会被重定向到我们的应用。
但是,对于 Android,它不起作用。用户单击链接后无法重定向到我们的应用程序。它仍然停留在空白页中。
我已经测试过使用带有 javascript 的 html,如下所示:
<html>
<head>
<script type="text/javascript">
window.onload = function(){
window.location="myapp://home/?abc=xxx&bcd=yyy";
};
</script>
</head>
</html>
Android 用户可以成功重定向回应用程序。
但是,由于某种原因,我无法在我的 API 服务中返回 html。
有什么方法可以在 Android 中使用 HTTP 302 将用户重定向回移动应用程序?
【问题讨论】:
标签: android deep-linking http-redirect