I see that on PlayStore I can publish a private app to my customers if they has a OrganizationId.
I don't understand the role of "Play Custom App Publishing API","Android Management API
".
Is possible to develop a private enterprise store based on playstore ? I'm confused.. The world of private app for enterprise is soo few documented
There are 3 types of app distribution available using the Google APIs:
Public Google hosted apps - The app is available through the Play Store and not restricted to a specific enterprise. This type is supported by the Android Management API using an application policy.
Private Google hosted apps - The app is a private app (restricted to a single enterprise) but hosted by Google. This means your app will be uploaded privately to the Play Store and it will be available only to devices enrolled within your enterprise. This type is supported by the Android Management API using a managed iFrame for uploading APK files and an application policy to deploy the apps. Deployment is the same as with public apps where you use the package name of the app.
Private Self-Hosted apps - This type is fairly complex, but it does not require you to upload an APK to the Google Play store. Instead, you generate JSON meta data definitions of your APK and you only publish this meta data at Google. When you'd like to install an app, Google are actually using that meta-data to fetch APK files from your enterprise server.
Options 1 and 2 work for both work profile and device owner enrollments, while Option 3 works only for device owner enrollments. Furthermore, it seems it is only limited to the now closed EMM API.
The Play Custom App Publishing API is actually a way to manually create or update private APK uploads. So instead of using the Android Management API iFrame, you can use the publishing API to create your own in-house UI.
Depending on what you exactly mean, you may be able to build your own private store using the private apps functionality and the Play Custom App Publishing API to build your own UI for publishing apps. Be advised that there is a package name restriction imposed by the Play Store. There can be no 2 apps sharing the same package name uploaded to the Play Store. It does not matter if these are private apps, visible only for one enterprise. This rule applies globally for the whole Play Store.
Private Google hosted apps aren't restricted to a single enterprise. It can also be distributed to other organizations. Each company, or "enterprise", that allows employees to use their phones for work or gives devices to employees, manages those devices and decides which apps are available. If you don't want your app to be available to download from Play by consumer, but only by business that you've worked with, you might consider making your app "private" to just those companies that you work with. Each company will need to give you their "Organization ID" or "Enterprise ID" to make your app visible to that company.
Private self-hosted apps are actually called Externally hosted private apps. You can check this link for more information about externally hosted private apps.
For your use case, would it also work to use in-app purchases to enable app sales?
Related
I am able to build a small EMM project using new android management APIs. My use case is dedicated users device management, where we manage both hardware and the apps for our clients. All the app updates part I have been reading is using public apps or the private apps where the client will update on their device. But In our case we want up load a private app and provide updates programmatically. I have tested public app from google play store and it works fine with device policy controller. How do I access my private apps ? Also most of the documentation you see is for device admin Management related where google used to host the EMM . I am looking for the latest Android Management API solution where there is no console and we have to build one.
Update:
I am able to private publish to managed google console using this link
https://support.google.com/googleplay/work/answer/9146439
But when I apply (DPC)device policy controller to install this app .it is not happening. I tested with one of our own public apps using DPC and it installs and uninstalls instantly . Any one knows where am I going wrong ?
Any help is appreciated ....
Make sure that your private app is distributed to your enterprise. You can check this link to know more about distributing your private app to an enterprise. You can also use check this ApplicationPolicy which can push apps as part of the enterprise policy.
Is it possible to use AMAPI to publish self-hosted/private app's to a device that is either using work profile or is fully managed without using the play store?
I am confused because what the answer i'm seeing in the following post doesn't jive with Google's documentation.
How can I silently push an apk and get it installed by android device policy using android management api?
User "Fred" in the above link says this operation is not possible however, the documentation at this website lists it as "Optional"
https://developers.google.com/android/work/requirements?api=clouddpx#313-self-hosted-private-app-management
Second question, using AMAPI requires the Android Device Policy on a device, can we use a custom DPC in conjunction with ADP to publish our private apps given that they are hosted via an EMM?
Unfortunately no!
The options you have is to use the play store/ private play store if you are using Android Management API.
Or integrate iFrame of Play Store - https://developers.google.com/android/management/apps
Self hosted APKs are again installed via Play store but it's hosted on your cloud.
As of now there is no way to install Apps without using play store!
I am working of app support COSU app android. The app is working fine for me but I am not understand how user will update our app, because COSU app user can't access any other application even google play store. So now the question is that how user will update our application without google play access.
I have one solutin download app from our server, but in this case user will lose save data like the data we are storing in SharedPreference. Please guide me if you have any other solution for that. Thank in advence
According to Google's docs on COSU (Google Play app management), it is possible to "install, update, and uninstall apps using the Play EMM API". Under "Google-hosted private app management" it describes the ability to host private apps through Play that your users can install/update:
Simplifies the Google-hosted private app publishing and update
workflows available to all admins through managed Google Play, by
enabling admins to update Google-hosted private apps through the EMM console instead of through the Google Play console.
Enterprise admin can upload new versions of apps that are already published privately to the enterprise using the Google Play Developer Publishing API.
If you don't want to use Play for this functionality you can read the "Self-hosted private app management" section.
You can also look at "Managed Google Play" to publish private apps for your users: https://support.google.com/googleplay/work/topic/6145152
After you register for a Google Play Developer account and set up the correct administrator privileges to upload and publish the app to managed Google Play, you can use the Enterprise Mobility Management (EMM) console to distribute the app to users.
Going the EMM route will let you update apps with the same functionality as regular Google Play apps where updates don't cause users to lose data. Unfortunately Google's documentation isn't detailed or centralized for this feature. Going through Google will also require that all of your devices are signed in to Google account in order to install apps or receive updates that you deploy though the EMM console.
Another option is to use a mobile device management (MDM) solution. If you have Samsung devices you can look into Samsung Knox which has a much simpler method for distributing your app: https://www.samsungknox.com/en/article/manage-apps
Another MDM option for single use apps is Mason (https://bymason.com/). Mason lets you upload your app, select any or all of your devices, and then deploy your APK to your users. When updating your app, all you have to do is increment your app version and the update functionality will be the same as a regular Google Play update. Your users also don't have to be signed in to a Google account.
If this sounds useful to you feel free to reach out to me trevor # bymason.com
DISCLAIMER: I work at Mason
I'm developing a hybrid app that requires an enterprise deployment that means it just needs to be deployed to some specific users in company and not public at all.
Something like it will depend on device id or something unique to make app run on user's device.
Can AppStore or Google Play implement this?
Thanks
On iOS, Apps can be deployed using an Enterprise in house profile.
(https://help.apple.com/deployment/ios/#/apd29c0f45f1)
Enterprise Apps have no limitation regarding the device ID installing the app, but are usually used in combination with a MDM controller, which enforce this part of the security.
Maybe the Google Play Private Channel is what you are looking for:
https://support.google.com/a/answer/2494992?hl=en
The Google Play Private Channel is a feature of the Google Play Store which lets you distribute Android apps internally to users in your Google Apps domain.
Hosting internal apps on the Private Channel allows you to control which users or user groups can download the apps.
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