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.
Related
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?
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 want to publish my app to a limited set of users (Not country and carrier specific). I searched on the internet and found this. However this has lead to confusion, at the start the document says that we can create a private channel to distribute apps throughout an organization.
A Google Apps for Business, Education, or Government domain can have a Private Channel on the Google Play Store. The Google Apps domain administrators can allow domain users to register with the Android Developer Console to publish Android applications to the Private Channel. The publisher account owner who registered with the Android Developer Console must be a Google Apps user in the same domain, such as internal IT staff, and not external developers.
But at the end the document says:
Can I publish an app to a specific group of users?
No. But you can publish an app targeting a specific country or specific device models.
If anyone has a better insight on this, please enlighten me. I want to publish an app internal to my organization what are the possible ways?
I think its better to do like following:-
Alpha- and beta-testing
If you are planning to go alpha- and beta-testing route, it’s best to start with a small group of alpha testers (perhaps employees of your company, or a few fellow developers) and then move on to a larger group of beta testers.
Follow this link:-
https://support.google.com/googleplay/android-developer/answer/3131213?hl=en
Its just simple you have to create an community of the employees with their google account.and simple add this community as a beta tester.so everyone get the mail regarding the link to download an app and acceptance of permissionbecome an tester.
My understanding of the document you quote is that the app developer must be inside the domain serviced by the Private Channel. An external developer (one who is outside the domain) cannot publish to that specific domain.
Thinking it through, we have to ask "how could Google control publishing to a specific domain?" As soon as we ask that we can see all sorts of security and control issues. We could imagine a malicious developer publishing a trojan app that is targeted at a particular business they wanted to damage.
So there are the two paths: a private Channel publishing to a given domain, and the Alpha / Beta path recommended by Born To Win.
In iOS, we have provisional profiles to setup device UDIDs. So, our app will install on devices only which UDIDs are added to provisional profile at development stage. We generally added only customer device. So only customer can install the app. The build will not install any other device.
Is there any feature like above in Android?
NOTE: I knew we have feature in Google Play. But, I need this feature while development.
You can filter which users (not devices) can install your app.
In order to do that, use Google Play Developer Console to publish beta application APK - it can be installed only once user joins specific Google+ community or Google group.
So you have to create such a group or community and make it private - this will allow you to filter out which users can join.
After those users join, you will send them test URL and app will be installed on their devices.
Have a look at this Google Play Help article for more details.
The Play Store's method of doing this is via the new beta-testing feature. You add your testers to a Google+ community, and they get access to your application via the Play Store.
If you don't want to use the Play Store, you can implement a restriction within the app itself to accomplish this. The Identifying App Installations Android Blog post has some great information on how to uniquely identify devices. You can use one of these methods to check the device's identifier against a list of "approved" devices in your Activity's onStart(), and simply call finish() if the user is not "approved."
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)