Data persistence with the Google Places Web Service on Android - android

I have run into a Problem.
Basically, google web services allows a maximum amount of 1000 requests per day unless you verify your credit card (which I as a student, don't have).
I am building an android application which will help you find food near you and give you tips and whatnot. But heres the problem. I have reached the daily cap multiple times just due to testing the app & debugging it... And that is a serious issue...
I know how SQLite databases & so on work, and how to use them, but is that the way one would go when using google places web services? Is that even allowed?
Here is the basic process of what is happening:
Open App & Get the users location
Search and Mark nearby food sources (restaurants & whatnot)
This is done via getting a HTTP request with "Place Search"
Place search itself deliveres little information, not enough, so I get a "Detail Search" for every place it finds.
All the results (Max. 60) are marked on the map and saved in a DataHolder class storing all the DataModel classes.
this works fine and as intended, also if I close and restart the app, it will "work". But it will redownload all the data and the details. As you can imagine, this busts my 1000 request limit pretty damm fast.
So is there a common practice/structure on how developers persist this "Google API" data? I feel the way im doing it very inefficient both for me and the user...
Thanks.

If you are developing a web based application that only needs to search for places, and does not submit new places, you should use the Places Library of the Google Maps Javascript API rather than the Google Places API Web Service. The Places library assigns a quota to each end user rather than to each key. This means that your available quota increases with your user base rather than being capped at a fixed amount.
You can use Places API for Javascript https://developers.google.com/maps/documentation/javascript/places
It has all features of server version. You could try to use it with invisible WebView, or better with Rhino.

Related

Google Nearby Notifications Analytics

I have been working on nearby notifications. deployed n number of beacons in our work area. i have been trying to track the user analytics. I am able to track the click analytics of the url. I want to track the impressions for beacon campaigns.
I had done some research on finding analytics of notification reach in users device.there is no straightforward way to track the analytics.we have been getting log entries on PWS accessing the campaign url.but the access frequency is not accurate.
is there any to find the accurate user impression from the pws access logs or is there any other way to find the impressions.?
I know this is a bit old but I'll share what I have come to believe. While testing using bit.ly addresses in the nearby url I get exactly 2 hits. Not sure why 2 but it appears that google parses the url provided and caches the result. If it's a redirect it will follow it and cache the resulting page thus eliminating the ability to track hits via middle redirect page. If you use EURL (Physical web) then it never goes to Google first and you can track the hits via redirector like bit.ly. There are advantages and disadvantages to both EURL and EUID. I am quite certain google records each time a device requests the attachment data for a nearby but for some reason they chose not to give it to us. I am not pleased that google does not expose that data to the owner.
To be frank: No... you can't get accurate impressions.
Reason:
Google cache that beacon's URL + Message on their end for approx 3-5 minute even for different devices.
As Google Nearby is in Beta phase, there are many bugs and important concept that are missed. And Impression count is one of them.

I am trying to pull an active user's location at any given time

I would like to find an API that allows me to pull a client's current location. I know Google Places and FourSquare have API's available. Basically, I want it to run at all times, as I am eventually going to create a dating app that allows you to see who is at a current bar/restaurant/social setting at any given time.
The fetch for the current location will obviously have to be running at all times, and there are considerations of using too many client resources. With that being said, what are some of my options?
Yes, you can use the Google Places API for this: PlaceDetectionApi.getCurrentPlace(). See https://developers.google.com/places/android-api/current-place (and the Getting Started guide).

Clarity on data storage from Google places API

I have been going through the Google Places API and to make optimum use of the API in my app, I need clarity on their Terms of Service regarding Google places API.
My application shows nearby restaurants to a user.
In my database, I have manually collected all the restaurant information such as name, photos, reviews, opening time etc. Please note that this collection has been done manually and not with the Google API.
Now, since Google allows to cache id of places, I have manually mapped their id to my restaurants.So, my database has five fields. id, name, photos, reviews and opening time. Again to reiterate, only the id's are from google, all other data has been manually collected by me.
The reason for doing this is that I want to serve a mix of both info for nearby restaurants. I would always hit Google places API at run time, and along with the information from their api, I would also serve my custom data.
I want to know if this is ok. Google's terms of usage are not very clear, so it would be great if someone can clarify this.
Thanks.
This is A-OK! Supporting your use case is actually why we updated the rules recently to make place IDs exempt from the caching restriction. Just be sure that when you do call Places API to display the place information, you're including the appropriate logo and attribution requirements.

Using the android Google Maps API v2 as a viewer of offline tiles: is it possible?

The Google map component (com.google.android.gms.maps.GoogleMap) allows one to render custom tiles (OpenStreetMap or other). These tiles can be on the device and available offline which is what I am doing by extending TileProvider. Doing this in conjunction with a:
mMap.setMapType(GoogleMap.MAP_TYPE_NONE);
I am not pulling any data from Google map servers and the component can reasonably be expected to work without an internet connection.
(I emphasize here that I am not trying to cache Google's data; I am working with offline tiles independently of Google's map servers.)
I thought everything was fine until I realized that the map component won't work if, when it is executed for the first time, the device is offline. In such cases I get a message:
failed to load map. could not contact google servers
I imagine the reason behind this is Google's API keys which require my app to authenticate in order for the component to be allowed to execute.
Can anyone confirm this is correct? What I would really like to be sure of is that provided that the component is executed once online, it will run ok afterwards. I must make sure that there are no time-out issues which would require the component to re-authenticate later on and which would basically make my app useless. That would require that I move on to some other component (such as OS Android).
Any light on this would be greatly appreciated. Even being pointed to the channel through which I could hope to get a reply from the google developers would be useful.
Thanks
As of 3.0.27 of Google Play Services APK it is fixed and the server is required to be contacted just once. You will see error in the logcat every time, but it will work.
More info here:
http://code.google.com/p/gmaps-api-issues/issues/detail?id=4817
and here:
http://code.google.com/p/gmaps-api-issues/issues/detail?id=5017

How to obtain information about downloads, total installation, and active installation from my published android applications programmatically?

I have a few questions regarding android market(Google play). How can I list my published application by accessing from my google account? What I have done so far is using my application package name as a query string to search my application and display all information which I used android market api to do it. Is there another better way to display all my published or installed applications by accessing from my google accounts?
My second question is about detecting number of downloading and installations of my published application. I have found only google analytics so far(for free) which I need to embedded some codes to monitoring my application. Is it possible for me to access those information from android market publish page . I have found that publish page contains information that I need.
Edited: For second question, I would like to obtain statistical information without adding any new code to my application. Is it possible to provide only google account to grant the permission to get those information?
My application is published. If I am using google analytics to monitoring my application do I need to start my counting from zero?
Sorry for my English and my little knowledge about this.
Thanks in advance..
Edited: .. I have found an application, called "analytics" that is what exactly I want to do. But I still cannot figure it out how it works..
The only place you will find this kind of information is on your Developer page. That said, if I were wanting to do what you are, I would put up an app on App Engine that either parsed my Dev page on request, or on a schedule. I mention App Engine as personal preference here, you could obviously use anywhere you can host scripts on.
You can then do what you like with the data you have collected, and your app can request this from your site. Assuming you have no qualms with publicising these numbers, you wouldn't need to scare users by authenticating, and would just need a plain html request.
Edit:
In your language of choice, you would need to request your developer page (the one that lists apps and their install count) and would also need to authenticate as yourself to get it. It's for this reason I would use your own hosting if you can. I can't be more specific than this, as I don't know what language you're most likely to be using. It should be trivial to find out how to do an html request and step through the page in whatever language it is though. App Engine pages are written in Java or Python and deployed to the server, while other obvious options are PHP or Perl. On my own server I would most likely use Perl as it's ideal for ripping up html with regexps.

Categories

Resources