I have an app that I want to be able to distribute to clients from other organisations. I don't want this app to be publicly visible on the play store, ideally the client would receive a link from me that would allow them to download the app from the play store.
I have had a bit of a search for this, so far I can only find 'Managed groups' (https://support.google.com/a/answer/2494992?hl=en) and 'closed tests' (https://support.google.com/googleplay/android-developer/answer/3131213?hl=en). A closed test looks to be along the lines of an ideal scenario, however the client would be aware that the app is in a testing phase, and may be able to do more with the app than intended for an end user. The managed groups also seem ideal, but they seem to be limited to my organisation, and when they talk about whitelisting that seems to be more whitelisting the apps on a user's device rather than whitelisting who can download the app.
Any help would be appreciated :)
To publish a private app within a client's organization (as a 3rd
party developer): If you’re an agency developer who wants to manage
the publishing flow on behalf of your client, or if you’ve built an
app for multiple organization clients and don't want the app to show
up in the public Play store, you can use your clients’ Organization
IDs to publish these apps directly to your client's organizations.
https://support.google.com/googleplay/android-developer/answer/6145139?hl=en
Related
Google Play has something called Private Apps: https://support.google.com/googleplay/work/answer/6145139?hl=en
However, to my understanding this means that only members of my organization can install the app. It doesn't say what "organization" mean but I assume it's members of a Google Workspace or a specific email domain.
I want to achieve something similar to Apples "Unlisted apps": https://developer.apple.com/support/unlisted-app-distribution
This means the app is present on the Appstore, but it's not listed or searchable. Only if you have the link to the app you can download it, and the user will receive automatic updates.
Is there something similar on Google Play? I want to distribute and update the app via Google Play, but only to users that I share the url with.
You can publish the app on the Google Play store via the Play Console and while selecting where to launch (publish) the app, add the app/app bundle only to the closed testing option. There you can add specific email ids and only those will be able to see the app, get updates, etc. no one else.
we use internal testing on playstore to test the app internally before we move to closed and open beta. More details can be access in the below link
https://support.google.com/googleplay/android-developer/answer/9845334?hl=en
I have an app that I would only like certain people to access. I need to be able to distribute the app via Play Store because the receivers don't want to have to download from an external source. I have seen it done before that an app is distributed via URL using the beta channel, in which it was a closed beta, but anyone with a link could join the test. I know that I can use Google+ or Google Groups, but the end users will not want to join such services. We don't have G Suite, the end users are not part of the organisation.
Here's my situation:
Client requests an app for an ongoing event
Client doesn't want people from outside the event to access the app
My idea is to distribute the app via the Play Store, but only people who have a link to the app can download it
If all else fails I am considering just using a password which will be distributed to the users, but this will mean that the app can be viewed on the Play Store by people not within the event.
I hope I have provided enough information, I get if this sounds confusing so please ask for more detail if necessary.
There is no way to restrict the app to specific set of users. Best what can you do is as follows.
Restrict your app with some credentials
Upload the app in play store with some weird name and description
which rarely anybody will relate to
Restrict the country in play store
Create a short url for your play store link and distribute to your users
This is the Android version of App for limited or restricted audience
The project
I'm going to start a brand new project for one of our customers that will be deployed to our customer's suppliers to track on-field activity. I am skilled enough on Java/Android development so this question is only about deployment.
Owned vs provided devices
Our customer will either provide a Samsung Galaxy Ace 4 device to the suppliers or will allow the supplier to use their own Android 4 smartphone without warranties from us. Our customer currently has a Google for Business organization set up, but we cannot rely on that (see partial answer).
Technical (non functional) requirements
Ability to easily distribute application and updates across enterprise users.
Application should not be visible to the public
Application must be able to send crash reports so our team can inspect and investigate
The question is
Given the above "should not be visible to the public" statement, what is the most effective and efficient way to deploy an Android app targeted only for enterprise users?
I'll post a partial answer below. I'm asking others to enrich it with other possible means, including using Alpha/beta channels for which I don't have experience about
Currently, limited-audience Android applications can be deployed like this:
Publishing on Google Play as a free app for the public
Maybe adding a limitation to our country
Advantages:
Simplemost and well documented
Auto deployes updates as soon as no new permission is enforced
Collects crash reports on Dashboard
Disadvantages:
Everyone can download the app
This has the disadvantage that some organizations may not be happy as publicly available code might in some cases help exploit vulnerabilites on remote systems (but it is almost impossible if app is well-written and obfuscated)
If country limitation is enforced, imported devices won't download
Distributing the APK direct URL
Advantages:
The app remains private (enterprise users are surely not going to redistribute the app to friends as it's no use without enterprise credentials)
Disadvantages:
No crash reports unless implementing a third-party library
No auto updates unless implemented by custom code or third party library. Implementing auto updates prevents the app from being published to Google Play in the future, even on a private channel, as Play prohibits apps that auto-update themselves via third-party channels. Or, to be precise, the auto-update feature and Play publishing require, in order to exist together, maintaining two APKs
Google Play for Enterprise
As mentioned on this link, Google Play provides a private channel for app deploying for users withing a Google for Business organization. This is the perfect approach for applications that organization's users must use
Advantages:
Same as publishing for the public (simple, auto update, crash report)
Visible only to restricted audience
Disadvantages:
Every device must come with a Google account within the organization, and it will be economically unfeasible to [request the Sysadmin to] enable Google accounts for every external supplier in our target organization
Permanently in Alpha/Beta
I haven't tested this yet, as it is also very tricky. Basically, it involves using testing mode without ever going to production. With Google Play, one can deploy artifacts into Alpha (e.g. test server environment) and Beta (a trick to point to production server environment) without ever moving the app to Google Play's Production stage.
All requires setting up special moderated Google+ groups
Potential advantages:
Same as publishing to enterprise
Disadvantages:
Only telling users to subscribe to Google+ and joining a community
From your requirements, I would suggest distributing the APK via a direct URL and integrating a service such as HockeyApp (see their Android SDK for more) to manage both the crash reports and app updates.
"Ability to easily distribute application and updates across enterprise users"
Many services allow .apk files to be uploaded directly to their service for deployment. A direct download link is then generated for that build.
Crash information is collected and updates are automatically displayed if the app implements the Android SDK provided by the service.
"Application should not be visible to the public"
Services such as HockeyApp do not publicise direct download links publicly. This link can therefore be distributed as required.
"Application must be able to send crash reports so our team can inspect and investigate"
Full stack-trace and device information is sent along with crash reports and can be viewed online by technicians.
From my experience there are a few pros and cons:
Pros:
App distribution is super easy, as simple as visiting a website.
Bug reports are comparable to those received through Google Play
Cons:
Crash report's aren't sent automatically and updates aren't automatic
By default, updates and crashes appear as system dialogs prompting users to either send the crash report/update the app or cancel. Ideally, no user interaction should be required to perform the desired actions. I am sure it is possible but have not found relevant documentation for it.
Cost. These services aren't free.
Would require the removal of the service SDK from the app if uploaded to Play Store
I've created an application which only purpose is to download the real full-featured application from a server of mine, ask the user to accept the permissions and install it.
I know that there are some regulations for the Apple App store about this kind of "downloader" applications, so i was wondering if there is any sort of policy or term of use that might be violated if i decide to upload this app to the Google Play store.
Thanks
Check out: https://play.google.com/about/developer-content-policy.html
I believe what you are doing is ok, but would most likely be frowned upon by Google, as they want people to use the Play Store.
Quote from the article:
Malicious scripts and password phishing scams are also prohibited on
Google Play, as are apps that cause users to unknowingly download or
install apps from sources outside of Google Play.
As long as your are informing the user of the download, and not trying to make money, you're good.
Would an app that requires users to purchase a non-digital product/service to get a login to the app be allowed on the Appstore (iPhone and Android)? If not what would be the correct method for distribution of private app?
There are plenty of apps in the app store that require something external. Nest app, for example, is probably pretty useless without a Nest thermostat. I think the app should just need to behave nicely if you don't have the external thing, the ticket in your case.
At least for Android (Google Play) there should be no problem if you don't force your users in app to purchase something outside of Google Wallet (e.g. in app purchases with PayPal etc., but I guess for buying tickets it's okay - if it is not done inside the app).
Here are their terms for more details: Google Play Terms
An other way would be more open markets like Bazaar (Android) or host it on your own server.
For private apps you can distribute your app under an Enterprise developer account. see here. but you have to pay more ($299/year)