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.
Related
I've got an app which shows user's contacts inside device and allows him to make a call.
I want to show my user the last calls he has made. I was using READ_CALL_LOG permission (and was reading call log) until Google restricted access to it, then I switched to ContactsProvider to retrieve contacts and sort them by LAST_TIME_CONTACTED but now Google says this column is deprecated and effectively it will have 0 value for new versions of Android OS (see https://developer.android.com/guide/topics/providers/contacts-provider#ObsoleteData)
My app is not a default dialer (only default dialers apps are allowed to access call log) so I was wondering how I can achieve what I want in Google Policy compliant way.
I tought about storing the last contacts selected inside my own database (I know it won't be a full call log, as I will only have access to calls made from my app but that's fine for me), but don't know whether it's compliant with G Policy. I wrote an email to Google, however the person who replied said he can't help me with my question and I have to create new version of my app and ask them for review.
Does anyone know if my idea about saving contacts in my own database is compliant with G policy (please provide links from official sites). From my link (which I've provided above) I can only see that Google says
If your apps are accessing or updating these fields or APIs, use
alternative methods. For example, you can fulfill certain use cases by
using private content providers or other data stored within your app
or backend systems.
However it doesn't convince me to whether my idea is compliant
Thanks for help!
I believe you may store and use any user actions that had happened within your app.
The purpose of the policy (as stated here: https://support.google.com/googleplay/android-developer/answer/9047303?hl=en) is to prevent apps from getting access to the call-log in order to make use of it for purposes other then what users' expect, that's why the emphasis on critical core functionality of the app.
In my experience, different Google reviewers tend to review the same app very differently, and while one may reject a certain use-case based on this policy, another might approve it.
I would suggest phrasing the screen you want to create in a way that will help the reviewer understand that this data was not acquired from the call-log but some app specific actions, so for example instead of title "Call Log" which might confuse some reviewers with the risk of rejecting this update, you should title it "Recent app actions" or something like that.
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.
I have implemented google location search like OlaCabs app but it is not as fast in searching as OlaCabs do.Reason behind it is I need to hit a rest api (Google Place api) to find locations as per text search. I noticed that in olacab app there is some text showing "powered by Google"(Look screen below).So I just want to know:
1.Is there any api provided by google for android rather than rest api ?
2.If OlaCaps using some paid google search API then what is it and form where can I buy it?
You seem to be looking for Google Places Autocomplete API
Most of Google APIs are free till some courtesy limit (different for each API) and paid afterwards. Courtesy limits are higher if you have given your credit card info. Still if you are beyond free limit, you should consider paying for them.
You are in search of Google places autocomplete.
I figured Google has the Place Autocomplete service using which I can allow the user to type in a city name which’ll fetch all the cities containing that string from Google’s servers that can be presented in an AutoCompleteTextView.
Link :
*http://codetheory.in/google-place-api-autocomplete-service-in-android-application/
Hope it will* help you.
We thought out a concept for a mobile app that allows:
To create bar/restaurant/event profiles (we want to define them ourselves);
Access these profiles via Nearby Places (possible to link?);
Check In, via the profile
See how many people are checked in into the place, male/female according to the user profile.
Is this achievable via the Foursquare API?
If not, can it be done in another way?
I also don't understand very well why I read everywhere that finding or checking in into places via GeoLocation is patented, but at the same time it seems freely available and everyone seems to use it (?).
I would be eternally grateful!
This is possible with the foursquare API, but you will only have access to the information of users who check in with your app, and your custom profiles will not appear in Foursquare's venue search results.
With such an app, you will need to take care to maintain user's expectations of privacy. Your app must have a privacy policy that explicitly explains how their information will be used, and what information about them will be made public. See the Foursquare app policies for more information.
I ask this question expecting the answer to be 'not possible', as I have attempted to research this already and found no fruit! I thought that I would give the community a chance to weigh in however.
I have a working in-app billing system, but what I want is to be able to provide a little extra bit of infomation with the billing request. Something that would show up in my market place stats.
My users have the option of buying several different levels of product (sort of a Base, Premium and Gold-Star sort of thing). When they purchase the product they provide me with a string that represents the specific thing they want the product about (such as the house number and postcode if the product was about a house).
What I want is to be able to see that extra bit of information in my market place reports, so when I see someone who has requested a refund I can see on what exact item they purchased the product. I have looked at the DEVELOPER_PAYLOAD but I don't think that it will do what I want.
If I can't find a solution this way then I will end up performing a service call and storing the data myself, but I thought I would ask you guys first!
Sorry for being vague about my app and the products it returns but I don't want to expose my app yet (plus it holds no bearing on the question!).
EDIT
Now that I have added a bounty I would like to limit the answers. As I mentioned in my original question my backup plan will me a service call to my system registering the google reference and "data packet" for the purchase.
What I am most interested in is a way to do this where my information would end up in the my market place reports. For instance, if you were to offer a physical item with your in app purchase, how would a user record shipping instructions/etc. There is a place for this in the market reports, so surely there is a way to add the data?
You can certainly use DEVELOPER_PAYLOAD for this. However, Google doesn't process it in anyway and it won't show up in reports (not sure if they store it at all). So what you need to do is send transaction info (the JSON string you receive) to your own sever, parse it and store/process/whatever the developerPayload. You can combine this with signature verification and transaction reporting if you want to. One thing to beware of is that the size is limited to 512 bytes. If you send a request with a longer string, the whole transaction will fail, and the error message is not friendly at all ('IAB-DPTL' or some such).
Of course if you need more that this, you can simply build your own webservice and send whatever data you want. If it includes personal info, etc. make sure you let people know about it and/or they can turn it off.
In order to see this in the report, assuming you have a limited set of "dynamic" data, you would probably have to create a different set of in-app items per each "item" in your game.
Then, of course, you let the game handle which list the user sees according to the "dynamic" data.
That's the only way you would see it in the reports without your own web service handling it.
For those that may find this question via Google!
It seems that the easy answer to my question is NO. You can not add extra information to your market stats with regards to in app purchases.
As I mentioned in my question (and some answers said) the work around would be to upload the transaction string to your server and then compare it to market stats yourself (using the export function from the market perhaps).
I now intend to write a system to extract market stats (likely from the csv download feature) and match it up to the strings from the IAPs. If I ever get around to writing it I will share it with the community.