dpa99c / phonegap-launch-navigator

Phonegap/Cordova plugin which launches native route navigation apps for Android, iOS and Windows
369 stars 131 forks source link

99 Taxi Support #183

Closed emyymk closed 6 years ago

emyymk commented 6 years ago

Please add support for 99 Taxi app in iOS and Android platforms.

The link details can be found at: https://api.corp.99taxis.com/docs

dpa99c commented 6 years ago

The link you have provided is to a web-based corporate API, not a mobile app URI scheme.

I did a quick Google search and could not find any results for URL schemes for the 99 Taxi iOS or Android apps.

I have opened an issue on their corporate API github repo asking if such a scheme exists.

If they respond "no" or do not respond and you are unable to provide details of the mobile app URL schemes, then this issue will be closed.

dpa99c commented 6 years ago

I received the following app URL scheme from 99 Taxi developers via a Google doc:

All parameters are mandatory

taxis99://call?pickup_latitude=-23.543869&pickup_longitude=-46.642264&pickup_title=Republica&dropoff_latitude=-23.600010&dropoff_longitude=-46.720348&dropoff_title=Morumbi&deep_link_product_id=316&client_id=MAP_***
Parameter Description
client_id Identification of partner Should follow this pattern:MAP_
Where
is the client name, accorded with 99 Team
pickup_latitude Pickup Latitude
pickup_longitude Pickup Longitude
pickup_title Pickup title (Summarized) - Will appear on App Ex: Estádio Morumbi
dropoff_latitude Dropoff latitude
dropoff_longitude Dropoff longitude
dropoff_title Dropoff title (Summarized) - Will appear on App Ex: Estádio Morumbi
deep_link_product_id 99 Category that's selected for the user (see table below)
Deep link product id Category
316 POP
326 TOP
327 TAXIS
emyymk commented 6 years ago

What happens

Doesn't open 99 Táxis App (Android - Samsung Galaxy S8)

Observation

Same code is used to open others apps (Uber, Waze, Moovit, Cabify, GMaps)

Versions

Plugin 4.2.0 Cordova Version: 7.1.0 Cordova Plataform Android Version: 6.4.0

Logs taken while reproducing problem

04-04 20:33:01.875 667 667 I ApplicationPackageManager: load=com.taxis99, bg=144-144, dr=144-144, forDefault=true 04-04 20:33:01.878 667 667 I ApplicationPackageManager: load=com.taxis99-contain, bg=184-184, dr=144-144 04-04 20:34:16.407 19247 19344 D omegasdk: post url:https://omgup.99taxis.mobi/api/stat/android success! Taken:404ms, return:{"ret":0,"message":""} 04-04 20:35:16.209 19247 19303 D TcpOptimizer: [com.taxis99] Full closed: sid=67, tcpi_state=8 04-04 20:37:02.634 3931 3931 I ApplicationPackageManager: load=com.taxis99, bg=144-144, dr=144-144, forDefault=true 04-04 20:37:02.636 3931 3931 I ApplicationPackageManager: load=com.taxis99-contain, bg=184-184, dr=144-144 04-04 20:37:04.527 2129 2363 E LaunchNavigator: start location is a required parameter for 99 Taxi and must be specified 04-04 20:37:42.386 2129 2363 E LaunchNavigator: start location is a required parameter for 99 Taxi and must be specified

dpa99c commented 6 years ago

99 Taxis is the only supported Android app where start location is a required input parameter. All other supported Android apps make start location optional.

Therefore, in order for this plugin to automatically provide start location to 99 Taxis (if it's not already specified), the native Android implementation needs to be significantly enhanced to check/request runtime permission to use location, add the necessary permission entries to the AndroidManifest.xml, check/request high accuracy location is enabled (no point in requesting a low-accuracy city-level position if you want a pickup at your exact current address), and finally request a high accuracy position to determine the user's current location.

Currently, I don't see it being worth my effort to do all of the above just for the case of 99 Taxis, however I'm willing to accept a PR request which implements the necessary native Android features.

Otherwise/until then, you'll need to manually specify the start location for 99 Taxis. If the current user location is required, you can use cordova-plugin-geolocation to find this.

I will update the App-specifics section for 99 Taxis to make it explicitly clear that start location is currently a required parameter.

emyymk commented 6 years ago

Thank you, dpa99c. I included the required input parameter and it is working now. I hope 99 Taxis team make start location optional some day.

junio-goulart commented 1 year ago

Hi, guys. I'm having trouble implementing 99 taxi in my app. Could someone help me? Where do I get the client_id? Do I have to pass the client_id and the deep_link_product_id in the "extras" property inside LaunchNavigatorOptions?

I managed to get here: image