Python
Why In Arrivo will be faster
03/25/2014 07:53 PM Archiviato in:Information
Waiting for the release by Apple of the new version, I would like to talk a bit about the technologies that allows it to be much faster than the previous versions.
The first one, already introduced in the 7.0 version, takes advantage of the new apis provided by Agenzia Roma Servizi per la Mobilità to offer waiting time and transit routes without the need to download and scrape complex html pages as done previously both by In Arrivo and the competing apps. In order to do it a set of Python scripts have been developed according to the suggestions by the provider to offer services to the legacy PHP scripts exporting the information to the apps.
The latter breakthrough was due to the introduction on the part of Apple of a new MKDirection library. This allows to find path directly from inside the app without the need of contacting the Google services by means of remote scripts. This allows a much quicker feedback and freedom for possible limitations on the part of Google.
Finally this result was attained by means of a twist. Basically Apple has silently introduced CALayers in its views and executes a callback to layoutSublayersOfLayer on specific views like the stops. Strangely this call happens even when executing the code on a iOS 6.1 device while the function in the MKAnnotationView is missing with the result the app crashes. The solution was to conditionally provide that in the case of iOS 6.1 does nothing but at least does not crash the app.
Unfortunately the previous technology is not available for iOS 6.1 and no backward compatibility is foreseen. Consequently paths no longer appear on older devices without anyway impairing in any way the correct working of the app.
New Apis
The first one, already introduced in the 7.0 version, takes advantage of the new apis provided by Agenzia Roma Servizi per la Mobilità to offer waiting time and transit routes without the need to download and scrape complex html pages as done previously both by In Arrivo and the competing apps. In order to do it a set of Python scripts have been developed according to the suggestions by the provider to offer services to the legacy PHP scripts exporting the information to the apps.
Apple turn-by-turn
The latter breakthrough was due to the introduction on the part of Apple of a new MKDirection library. This allows to find path directly from inside the app without the need of contacting the Google services by means of remote scripts. This allows a much quicker feedback and freedom for possible limitations on the part of Google.
IOS 6.1 support
Finally this result was attained by means of a twist. Basically Apple has silently introduced CALayers in its views and executes a callback to layoutSublayersOfLayer on specific views like the stops. Strangely this call happens even when executing the code on a iOS 6.1 device while the function in the MKAnnotationView is missing with the result the app crashes. The solution was to conditionally provide that in the case of iOS 6.1 does nothing but at least does not crash the app.
Unfortunately the previous technology is not available for iOS 6.1 and no backward compatibility is foreseen. Consequently paths no longer appear on older devices without anyway impairing in any way the correct working of the app.
Comments