How to target app releases in closed tracks to organizations? - google-play-console

I published a private app in closed tracks to my own organization using Play Console, explained here.
Under Pricing & distribution -> User Programs -> Managed Google Play it says:
This app is privately targeted to 1 organization.
You can also target app releases in closed tracks to organizations. Manage closed tracks or Learn more
Under Release management -> App Releases -> Manage testers I added my organization.
Still, when setting my app to force install in my Android Management Api policy for my devices, my private app won't get installed and is also not visible to my dedicated devices using that policy.
Previously, I published a private app as a production release to my organization and everything works like a charm.
So what exactly do I have to do to target my organization in a closed track release?

I realised that you just have to add the "releaseTrackId", which can be found in the URL of the Play Console page that displays the app’s track information, to my application json object inside the policy. As it says here and here
List of the app’s track IDs that a device belonging to the enterprise can access. If the list contains multiple track IDs, devices receive the latest version among all accessible tracks. If the list contains no track IDs, devices only have access to the app’s production track. More details about each track are available in AppTrackInfo.
So basically in my applications array in the particular policy I just had to add the "releaseTrackId" of my closed track app in the "accessibleTrackIds" array.
"applications": [
{
"packageName": "some.package.com.closedtrackapp",
"installType": "FORCE_INSTALLED",
"accessibleTrackIds": [
"myreleaseTrackId"
]
}
],

Try this API Custom App API. Publish your private app to your organisation and wait around 10min till the app is approved before you can install to your enrolled device.

It seems that you also need to add the track Id of the closed track to your policy:
See this link for ApplicationPolicy
{
"packageName":"<package id>",
"installType":"PREINSTALLED",
"accessibleTrackIds":[
"<track id>"
]
}
The track id is found on the play console URL (releaseTrackId parameter)

Related

How to delete a draft app from play console and publish from different account?

We created an app and uploaded the bundle from dev1 developer account.
The app is in draft stage as can be seen in the screenshot below
We created the internal testing track and send the link to 4 friends to install and provide feedback.
Later we decided we want to publish/release the app from a different developer account (dev2)
We paused the internal track , uninstalled the app and requested google support to delete the app. However support is saying that as the application has 'install statistics' they cannot delete the application at this time.
Question 1: As per https://support.google.com/googleplay/android-developer/answer/9023647 it should be possible to delete a draft. Am I misunderstanding draft status somehow?
Question 2: Is there something I can do to reset the install statistics. I could not find clear meaning of 'App must have 0 lifetime installs'. From literal meaning it appears if any one installs it even once, then it can never be deleted.
Question 3: If it is not possible to delete the app, is following workaround inline with google's policies
We leave the application as is in dev1 account (i.e. not published, internal testing track paused) .
We also unhook this version of the application from the back end server.
There after we publish the app from a different account (dev2) with new package name.

How are collections used in the Android Management API - Managed Play Store?

Within the Android Management API - Managed Play Store, there are collections which can contain specific applications. How are these collections supposed to be used? I felt like the documentation was lacking in this area. I am trying to figure out how these collections work in comparison to putting applications into a policy. With a managed device, is it expected that these collections show up in the device's Play Store?
The Organize apps page lets IT admins organize apps into collections (also called clusters). For example, an IT admin can create an Essentials collection for frequently used apps or an Expenses collection for apps related to tracking expenses, logging travel, etc. Collections are displayed in the Play Store homepage on user's devices.
On user's devices, the Play Store app only displays apps from a collection that are available for the user (or device), which means that if an app is not included in your policy, it will not appear on the user’s device
To integrate IFrame into your console please check this (documentation)[https://developers.google.com/android/management/apps#add_the_iframe_to_your_console]
I try to explain it better:
Firstly, set your playstoremode to WHITELIST
Then, in your policy include all the apps as AVAILABLE or FORCE_INSTALLED which you selected in your cluster (collections)

Gsuite Marketplace publish process: 404 error

Looking into building some Gsuite Marketplace apps, but we have having issues at the publish time already.
Publishing an app following these steps makes the app to be accessible from the Chrome Marketplace.
(e.g. https://chrome.google.com/webstore/detail/qwertzuiopasdfghjkl/publish-accepted)
Using Chrome web store app link (e.g. https://chrome.google.com/webstore/detail/app-name/qwertzuiopasdfghjkl)
redirects to a Gsuite link (e.g. https://gsuite.google.com/marketplace/app/qwertzuiopasdfghjkl?pann=cwsdp&hl=en-US) but brings a 404 page.
Waiting seems to do the job (url works after a couple of days - approval)
Changing app type from "Private" to "Unlisted" break it completely; even waiting up to a week, the link never works again.
My questions are:
How do you switch between "Visibility options" without breaking your
app?
How do you guys deal with updating publishing apps on Gsuite
Marketplace and keep it working?
Cheers!
Every new update requires a new installation. So everytime you make changes whether feature or visibility settings, treat it as if you were uploading a new app.
If you change the visibility, it will undergo a review process as if it were a new app.
Users who have already installed your app will still be able to use it.

Cosu app development through Android Management Api or device owner locktask

i have to implement single use application for my Enterprise's devices where there is only one major android app that itself can use 2-3 other apps like call, sms and google maps, other than that user must not be able to use or access other apps and settings,
1) I have considered Corporate owned Single use through Enterprise Management Api which is more sophisticated and big, but more complete solution.
2) I have implemented and tested the sample
Lock task with an android device owner app
that looks more like being my solution, but there is a problem
How do i provision device owner for production level devices? for my test i was able to provision with adb shell commmand. i know that device must be new/Reset and unprovisioned thats not a problem.
I am seeking some suggestion here, if anybody has implemented it it could help.
Update
going with the android management Api QuickStartGuide, suggested by Fred seems like correct way.
where my policy is Multiple app from custom launcher
now i am stuck in a situation, i want to publish my launcher app or other app to play store only for my enterprise.
I have followed Upload your own app to the Google Play Store,which led me to publish private app, but i am not able to do so as i am not getting Restrict Distribution option.
I don't know how to perfectly achieve this.
for my current policy and enterprise, i have 2 active email ids,
first email_1 is the one which is connected to the initial project
and
all the google api call is done under email_1 .
and the other is email_2 the one is admin for the enterprise
and connected to managed Google Play Store.
both email_1 and email_2 has admin access to my company developer account
.
Now i need to figure out to publish app only for my enterprise, i think there is a issue with correct permission or otherwise,
need Help.
Thanks
It's easy, once you understand the missing links.
The documentation should definitely clarify these steps.
1 Setup the accounts
We created a Google Suite Account for our client and uploaded his app in the Google Play Console account created using a Google Account under their organization, and limited the app distribution to their organization.
We also added Android for Work to our organization here: https://admin.google.com/AdminHome?pli=1&fral=1#SelectServices
And added a role to our organization to manage Google Play Private Uploads:
https://admin.google.com/AdminHome#DomainSettings/notab=1&role=new-role&subtab=roles
2 Find the organization ID
This is the key part. You should find your organization ID here: https://play.google.com/work/adminsettings
3 Enroll the organization
When following the steps for the Android Management API, you need to enroll the organization ID found in your Google For Work account.
Follow the step detailed here using your enterpriseID:
enterprises/{enterpriseId}/enrollmentTokens/{enrollmentTokenId}
4 Add your app
Add your app using its PackageName in a ApplicationPolicy. Your devices will now be able to find it and install it.
You no longer need to implement a Device Policy Controller to manage Android devices, Google has recently released the Android Management API which allows you to set up a COSU device with just a few Cloud API calls.
If you have one main app and want to allow to open a few other apps, you can set the main app as a custom launcher and mark the other apps as lockTaskAllowed. You can simply do so by defining an ApplicationPolicy such as the one below (copied from Create a policy):
"applications": [
{
"packageName": "com.example.custom_launcher",
"installType": "FORCE_INSTALLED",
"lockTaskAllowed": true,
"defaultPermissionPolicy": "GRANT",
},
{
"packageName": "com.example.app1",
"installType": "FORCE_INSTALLED",
"lockTaskAllowed": true,
"defaultPermissionPolicy": "GRANT",
}
],
"persistentPreferredActivities": [
{
"receiverActivity": "com.example.custom_launcher",
"actions": [
"android.intent.action.MAIN"
],
"categories": [
"android.intent.category.HOME",
"android.intent.category.DEFAULT"
]
}
]
Google provides a good feature list here:
https://developers.google.com/android/work/requirements/features
If your devices have NFC, I would provision using NFC. You can look at the code here for your own implementation or you might be able to use the app with very few modifications.
https://github.com/googlesamples/android-NfcProvisioning
By tapping the welcome screen in the Google Setup Wizard 6 times will allow you to use QR code provisioning. It is a bit more cumbersome in my opinion and requires Android 7.0+.
Those are your only two options unless you become a Google EMM Partner or again, partner with them to support Zero Touch Enrollment on Android 8.0+ devices for your own homebaked solution.
You might want to also look at existing open source EMM/MDM implementations that already exist such as WSO2.

Approve content aggregator app itunes

Hi
I've built an IOS app that has a tab bar and extracts content from a website and displays it.
I need it to be approved in itunes but when i sent it to review they replied
"We've completed the review of your app but cannot post this version to the App Store because it is only a content aggregator and provides a limited set of features and functionality to users"
I've read about it and i noticed that there are a lot of apps just like my app that are used by news sites and they were approved.
My content must be on a remote web server due to security reasons and i have complied with the reachibility protocol that apple requires which means that i monitor if there is network available on the device and warns the user that the content can only appear on connected ipad.
Is there a way that i can add approve my app or must i become a large news site in order to make my app approved?
Add searching or filtering of the content displayed in your app. That should do the trick.

Resources