URL を使用uber://?...
して Uber ネイティブ アプリにディープ リンクする Uber API を使用しています。モバイル Web サイトを構築しており、ここで説明されているURL のいずれかを構築しています。
iOS ではすべて正常に動作しますが、Android では Uber アプリが開き、パラメーターの 1 つしか取得しませんproduct_id
。そのため、URL をエンコードする方法と Android システムが URL を開く方法に問題があると思います。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 の関数を使用して既に trued を使用してparams
いますが、それはうまく機能しませんでした。そのため、手動for (var key in params) {...}
ループに行きました。