我正在使用 Uber API,它使用uber://?...
URL 深度链接到 Uber 本机应用程序。我正在构建一个移动网站,并且正在构建这些 URL 之一,如此处所述;
在 iOS 上一切正常,但在 Android 上,Uber 应用程序打开并且只获取其中一个参数product_id
。所以我认为我如何编码 URL 以及 Android 系统如何打开它存在一些问题。这是我构建 URL 的 JS:
uber.createURL = function() {
var params = {
"client_id": uber.CLIENT_ID,
"product_id": maps.product_id,
"pickup[latitude]": maps.noSurgeMarker.getPosition().lat(),
"pickup[longitude]": maps.noSurgeMarker.getPosition().lng(),
"dropoff[latitude]": maps.destMarker.getPosition().lat(),
"dropoff[longitude]": maps.destMarker.getPosition().lng(),
"pickup[formatted_address]": $('#pickup').val(),
"dropoff[formatted_address]": $('#destination').val()
};
var url = 'uber://?action=setPickup';
for (var key in params) {
if (params.hasOwnProperty(key)) {
url += ('&' + key + '=' + encodeURIComponent(params[key]));
}
}
return url;
};
然后我调用以下代码打开链接:
var url = uber.createURL();
window.location.href = url;
我错过了一些明显的东西吗?同样,这适用于 iOS,但不适用于 Android。另外奇怪的是,如果我createURL
在计算机上生成 URL,使用 PushBullet 将其发送到我的 Android 设备,打开它就可以正常工作。但是,如果我通过 Chrome for Android 获取 URL,Uber 应用程序会打开并且只有product_id
正确的,而不是任何接送部分。
注意:我已经使用 jQuery 的params
函数进行验证,但效果并没有更好,这就是我使用手动for (var key in params) {...}
循环的原因。