I'm working with a potentially large number of Android applications and I need to know what my limitations are in the Google developer console for organizational purposes. Specifically, I'd like to know if there is a daily limit for creating new projects, an account limit for total projects, a daily limit for keys per project (or even per key type or per account), or an account limit for total API keys.
For reference, I plan to use a single Android application key (for maps and such) and a single Server application key (for GCM) per Android app I publish. This is mostly for the sake of determining whether I should maintain all of my keys in a single project, or keep a pair of keys per project and potentially have dozens to hundreds (or even thousands) of API projects. I would prefer having individual API projects for each, but I am concerned about possible per-account maximums.
Related
Context
We have an app (for both iOS and Android) that we would like to style differently for different customers. What I mean by this is that the functionality, features, navigation, layout etc. of the app will remain exactly the same but what will change is - fonts, icons, colours, button shapes,font sizes etc. which would be specific to the customer's brand. We also want to have a different store listing per brand and the app may be called with a different name per brand like XXX App
Probable Solutions
We have considered the following solutions
Have completely separate code bases for the app / customer - Advantage would be ease of publishing but super high maintenance costs would be the biggest disadvantage
Have single code base but do some sort of themeing solution / customer - In this case, not sure how the publishing process would work in terms of the bundle ids, store listing etc.
Have single code base with packages or libraries. Create different shell apps for different customers and import the core packages or libraries
Have a single app which is listed as our company's app, and each brand can use that - which is the prescribed solution on the stores, but it doesn't seem very commercially viable as a brand paying money would want their brand to be reflected in the app and their respective listing on the store
Using some homegrown bash script mechanism to configure things at build time?
something other mechanism...?
Questions
I would like to know
What would be the acceptable (by App store and Play store policies) mechanism to publish such an app for different customers.
In case of one store listing per customer, could the applicationID (android) or bundleID (ios) be same for all the listings on the stores? or would they have to be different?
In case of one store listing per customer, for iOS would the app require different SKU for each listing?
In case of one store listing per customer, for iOS would the app require different SKU for each listing?
Thanks
According to App Store review guidelines, you MUST publish the app with the apple id of your customers because it has the name and brand of them. Or, you could publish by yourself with a legal written statement that says that you can use their brand to publish the app.
The guideline 5.2 talks about this with more details.
https://developer.apple.com/app-store/review/guidelines/
For google play the thing is the same, but the implementation came more recently. I personally dont tried to submit an app for a customer after google published this new rules, but I did it once (2 months ago) and no problems so far.
You can look at this rules in more details here:
https://play.google.com/about/ip-impersonation/ip/
Now, talking about the bundle id and app id, they must be different. For the name of the app this wouldnt be a problem, but for the app id and bundle they must be different.
For your solutions, all work fine. But in my experience a very maintained app that relies on config files to customize the interface for each client is more prone to work. I know that each client will ask for custom modifications, but for that you can use branches for each one and maintain always updated to the master branch.
I used to add many projects under a Firebase account but this time when I wanted to create a project under Firebase console then it says that You are three projects away. I already had two projects under the console. Is the limit now reduced to 5 apps per account?
I found this info on the firebase faq site
https://firebase.google.com/support/faq/
"How many Firebase apps can I have in a project?
A project is a container for apps across iOS, Android and web. While there is no restriction on number of apps within a project, adding an app can create one or more underlying OAuth 2.0 client IDs. There is a limit of around 30 client IDs that can be created within a single project.
You should ensure that all apps within a project are platform variants of the same application from an end user perspective. For example, if you develop a white label application, each independently labelled app should have its own Firebase project."
In this link, you can find out more about the limitations of Google Project (API Console Project, Google Cloud Project, and Firebase Project). And you will also be able to request quota upgrades when you reach the limit.
Here's an extract:
"If you attempt to exceed your project limit, the console will prompt you to fill out a request form. This happens when you try to create a project but you have already reached your quota. The form will require you to specify the number of additional projects you need, along with their corresponding email accounts, billing accounts, and intended uses."
The limit on the number of projects is not a fixed number. It varies based on your account's standing.
Keep in mind that both Google Cloud projects and Firebase projects count towards the same total number of projects, so be sure to also check console.cloud.google.com for projects.
My goal is to distribute different release versions of the same app to different enterprise customers (based on business licensing). i.e. Different customers have paid for version X or Y of our one app, and we need to be able to install those different versions of the app at different customers, if they buy new devices, for example.
SO posts like this and this are actually about graphics resource delivery or file size.
This post is close, but essentially deals with different app resources for the same app version, rather than different app versions for different people.
There are delivery options such as sending an APK via email or hosting the APK on a company website, but these require customers to enable trusting unknown sources, which cheapens the experience.
The Google delivery options include:
Google Play Public apps
Private apps via Google Play (here and here), including their Enterprise Mobility Management (EMM)
This option also describes publishing internal apps for another organization
Option 1 would require a different package name per version, and wouldn't allow for upgrades.
Option 2 Seems to suggest that you can only deploy to users in your G-Suite
Option 3 Seems to require that the target customer uses G-suite for their mobile management, and then making any bug fixes to a particular released version would require updating each target customer's private enterprise app.
None of these options is attractive. Is there another option that I've missed?
I have a need to have multiple versions of the same Android application running in production. Different customers use different version, based on their profile. For business reasons (which I cannot disclose), it is mandatory not to include any changes in for example user group X's application while the application must be developed in general though for different user groups. The application version used by group X should only be updated to fix critical bugs. The user groups are not based into geographical location or device, but are divided into groups by business needs (can be thought as different customers).
I'm aware that that multiple instances of the same app can be uploaded to Google Play, given that the package and name of the app is changed. But how do Google Play policies react to this?
I'm also aware that the application could be distributed from another source, via HTTP for example. Then the users must enable installing apps from untrusted sources. We also have an iOS application and as far as I know this is not doable on iOS.
What is the best practice to distribute multiple versions of the same application?
Google Play doesn't support this, you need to either release multiple apps (where user chooses the correct app to download) or implement this behavior inside your app ("Hmm... this is the lowest group, so use this old class instead of this new one")
EDIT: Theoretically, you could use closed beta and alpha channels for this, so that all users get the base version, people you add to testers list for beta will get beta version and testers for alpha will get alpha - that means you could do up to three groups. But managing it would be a hell
I have several apps tracked on Google Analytics, around 50 apps split into 2 accounts.
I get all the datas I need for each app (tracking specific events for instance), but it seems like there is no way to elaborate a report to consolidate them in one single report.
Is there a way to elaborate this report that I didn't find ?
Is there any common tracking code I could ask our developers team to set within each app, to be able to get all the datas in one view on google analytics ?
Thanks !
There is no way from within the interface to generate reports that span multiple properties or accounts.
However you can use either the API via a 'proper' programming language or pull data from multiple properties and accounts into a google spreadsheet using Google Apps script.
Google provides a ready made spreadsheet, which alas has several shortcomings compared to a homebuild solution, namely that it does not auto-update and does support trigger to update data automatically.
Once you have imported your data (which will go into several worksheets) you can use all the usual spreadsheet functions to combine data (and do statistics, produce graphs etc).