gpt4 book ai didi

android - 从 Chrome 到 native 应用程序的深度链接

转载 作者:太空宇宙 更新时间:2023-11-03 12:52:40 25 4
gpt4 key购买 nike

我正在使用 Uber API,它使用 uber://?... URL 深度链接到 Uber native 应用程序。我正在构建一个移动网站,并且正在构建这些 URL 之一 as described here ;

在 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 设备,打开它时效果很好。但是,如果我通过 Android 版 Chrome 获取 URL,Uber 应用程序将打开,并且只有 product_id 正确,而不是任何上车或下车部分。

注意:我已经使用了 jQuery 的 params 函数,但效果并不好,这就是为什么我去看手册 for (var key in params) {... } 循环。

最佳答案

好吧,我发现这不是编码问题,而是 Chrome 如何向应用启动 intent。这是 Pushbullet 的一个 Intent ,这个很好用:

I/ActivityManager(  942): START u0 
{act=android.intent.action.VIEW
dat=uber://?
client_id=REDACTED&
action=setPickup&
product_id=a1111c8c-c720-46c3-8534-2fcdd730040d&
pickup[latitude]=37.780654&
pickup[longitude]=-122.405599&
dropoff[latitude]=37.7970558&
dropoff[longitude]=-122.43199099999998
flg=0x10000000 cmp=com.ubercab/.client.feature.launch.LauncherActivity} from pid 19023

这是来自 Chrome 的一个 intent,这个 intent 启动了 Uber 应用程序,但应用程序没有解析任何数据(它只是打开,就像我点击了启动器图标一样):

I/ActivityManager(  942): START u0 
{act=android.intent.action.VIEW
cat=[android.intent.category.BROWSABLE]
dat=uber://?
client_id=REDACTED&
action=setPickup&
product_id=a1111c8c-c720-46c3-8534-2fcdd730040d&
pickup[latitude]=37.780654&
pickup[longitude]=-122.405599&
dropoff[latitude]=37.7970558&
dropoff[longitude]=-122.43199099999998
flg=0x10000000 cmp=com.ubercab/.client.feature.launch.LauncherActivity (has extras)} from pid 26446

您可以看到,唯一的区别是添加了 cat=[android.intent.category.BROWSABLE],这是从 Android 版 Chrome (reference) 启动的 Intent 所必需的。

总的来说,我认为这是 Uber 必须解决的问题。现在看来,如果我想让它正常工作,我必须将我的网站打包到 Android 应用程序中的 WebView 中。

关于android - 从 Chrome 到 native 应用程序的深度链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27699158/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com