Apple first introduced the Visit API with iOS 8. Initial feedback was less than positive and there were many complaints about false departure and arrival events. Visit API would even send these events when stopped at a traffic signal. In iOS 9 things improved, now we are not getting as many false positives. The average time it takes to detect an arrival or departure event is around 5 minutes with the exception being on first usage where it can take up to 15 minutes to recognize the event, though with subsequent usage, reduces to 5 minutes when using the Visit API. Ensuring battery usage remains low, whilst providing accurate detection is a top priority and we were able to measure battery usage on a scale of 0 to 1 percent. Another plus of the Visit API is that even if your app gets suspended in the background, iOS will wake up your app to deliver the arrival and departure events, which we think is very cool.
predict.io is much more than Visit API. It not only does what Visit API does, but also provides many other important functions. predict.io is a wrapper which shields the complexities of determining the arrival and departure of a trip but also the behaviors, features and properties which distinctively define a trip.
predict.io is quicker than Visit API in determining departure event. It usually takes about 2 minutes to confirm if the departure has happened, which is quite some improvement on Visit API’s time. In the worst case, it takes around 8 minutes to confirm if an arrival happened or not. By contrast, in the best case, this takes 1-2 minutes. predict.io can also, with very high accuracy, predict the transportation mode. At the moment, we are only predicting between car and non-car, but in the future, we plan to include other transport modes also like bicycle, train, tram, etc. predict.io can also tell you when a person is searching for a parking spot. This functionality in its current form is good but we are working on it to make it even better. One major difference between predict.io and Visit API is that the former can only detect vehicular trips whereas the later can also detect trips made on foot.
The last point, from the development perspective, is that it is very counter-intuitive to get the departure and arrival events from the Visit API. It exposes just one callback and in that callback you then have to process some data to know if the event is an arrival or departure. With predict.io, this is not the case. Our SDK has a clearly defined interface for events so any developer can easily integrate their custom logic making the SDK developer friendly and intuitive, especially for use cases having trip scenarios.
predict.io is a wonderful tool to bring meaning to the trips people make. The most amazing thing about our SDK is how efficiently it does all of this complex analysis and provides the results in a manner which is extremely easy to use and understand. Since the introduction of Visit API, Apple is working on improving it and it would be beneficial for us if we include it into predict.io since it provides some OS level benefits which only native APIs can provide. The chief among them is extremely low battery usage and OS level interrupts to wake up the app on departure and arrival events.