Microsoft teams app: How to maintain versioning of backend services - microsoft-teams

We have developed a app for Microsoft teams and our first version was published on the app store. We are now working on the next version. However we are not sure how we have to submit the new version for team store review without impacting the existing users. For instance, some of our bot commands will behave differently in the new version. If we have only one backend instance running, when we submit it to store team for review we will impact the experience of existing production users as well.
Ideally we would follow a blue-green approach to release new features to selected customers, but in this case we are not really sure how and where to differentiate requests coming (mainly through bot communication, since we can add a app version header in web communication) from multiple versions of the app. We thought of creating new set of resources (app registration, bot channel registration etc) on Azure portal but I guess that would be treated as a new app and not a version update.
Any ideas or pointers on how to achieve this would be of great help.

This is a good point, I don't think there's anything out of the box to deal with this. What you've suggested might indeed be the best way:
create new app registration & bot channel registration, with temporary name (e.g. MyBot2)
update manifest to use new bot, and submit for store approval with this manifest
once approved, and app is live (you can schedule a go-live time when you submit the app), rename both bots (original to MyBotV1 or something, and MyBot2 to MyBot)
In any case, I'd work with the app submission team around this, they're very helpful and engaged.

Related

How to work with Xamarin.Forms cross-platform subscription when using in-app billing?

I am developing Xamarin.Forms application which will be used for Android and iOS. It will have access to full functionality with a paid subscription.
I researched about subscriptions policy for Play Market and App Store and they require to use their in-app billing if an application gives access to some of its functionality only with a subscription.
But if, for example, user buys the subscription in Android app and then wants to use iOS app - what is the best way to handle this? Since subscriptions are created separately on Play Market and App Store side they need to be somehow synced?
That's probably a problem that was solved a ton of times, but I can't find how to do it
This is explicitly allowed on the platforms, e.g., here's an excerpt from Apple's App Review Guidelines:
3.1.3(b) Multiplatform Services: Apps that operate across multiple platforms may allow users to access content, subscriptions, or
features they have acquired in your app on other platforms or your web
site, including consumable items in multi-platform games, provided
those items are also available as in-app purchases within the app.
As to how to do this: Basically you have to have user authentication and a backend that ties a subscription status to a user ID. Also, the backend needs to keep the subscription status up to date by refreshing the subscriptions with the stores (Apple App Store, Google Play Store).
(If you weren't using Xamarin, I'd recommend using RevenueCat for this (disclaimer: I work there), but we don't have a Xamarin SDK so I don't think
that that's a possibility)

Proactively Install / Push Apps in Teams for Multiple Users

I have a query regarding, How to Proactively Install / Push Apps in Teams for Multiple Users ?.
We have added our Bot Application as part of Teams App Catalogue, and I followed below document regarding Manage App Setup Policies in Microsoft Teams to install apps:
https://learn.microsoft.com/en-US/microsoftteams/teams-app-setup-policies?WT.mc_id=TeamsAdminCenterCSH#install-apps
Though above link clearly states that it automatically installs apps for users, but when we follow above link it only adds application as part of Teams App Catalogue.
So just wanted to know that does installation here mean, only adding in App List and not installing as such on user machine ?.
The other method we can follow is to create a custom script and use Graph API queries as described in below link:
https://learn.microsoft.com/en-us/microsoftteams/platform/graph-api/proactive-bots-and-messages/graph-proactive-bots-and-messages#proactive-app-installation-in-teams
So wanted to know as per Microsoft, what is the recommended way of Pushing Bot App to multiple users on MS Teams. Can this be handled with Teams Admin Center ?.
Any help or guidance on the approach to achieve proactive app installation in Teams would be great.
Thanks In Advance!!!..
Both of these approaches should work fine. App Setup Policies is the easiest though as you don't need to write any code, but be aware that it can take a while for the policy to apply (I think up to a day or even two). There's a way to force it to update, I think if the user signs out of Teams entirely and signs back in.
I tried with Teams Admin Center and tested 2 scenarios:
1.) For User Already Logged In
2.) For New User Logging the First Time
The policies take time to be applied / be effective for users (not immediate). In my testing, I logged in after ~2 hours for New User and waited ~2 days for already logged in User. We have to test the same for your respective environment. Also these are not Standard Timelines, and we have Test in our environment accordingly.

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.

Webhook when new domain installed my app

I'm working on GSuite application and wondered how my backend can be notified when new domain admin installs my app?
You can use the license notification api to retrieve a list of current installs. https://developers.google.com/apps-marketplace/v2/reference/licenseNotification/list
After installation the user will probably start or setup your app. You could add your own webhook notification when the user goes through this First Run Experience. (This is what we did)
There is another thing you might be able to pull off: As far as i know, an event is fired to Google Analytics on install. Maybe you can add an alert/webhook in Google Analytics.
However, i was having some problems with the events to show up in GA in the first place.

Is it appropriate to publish a provisioning app to Google apps marketplace?

I've got an application that does user provisioning for Google apps (specialty provisioning).
I got to thinking, instead of going into the developer console for each customer currently using the application that it may make sense to publish the app in the market place.
Is this appropriate to do? Also, there are limits on each api key on how many requests can be done. Would a new api key get generated for each customer installing from the marketplace? Is there anything else I need to be concerned on this?
I didn't fully understand your questions so i'll try to answer the best I can.
Yes, it would be easier for your customers, especially new customers, to find your app in Marketplace. From there they can install it easier.
Not sure what you meant by "instead of going into the developer console for each customer currently using the application". Do you create a new console project for each customer?
Are you using the Provisioning API? This API is being deprecated and it will stop working by April 20, 2015. Instead you should use the Directory API.
What do you mean with "API Key"? Is it Project ID? When users install the app, the app will use the same Project ID.
You should keep in mind that there are quotas for using Google services that will go against that Project ID.

Resources