How can I do script and custom API versioning of azure mobile services node backend? - azure-mobile-services

We are using azure mobile services node backend for our android and iOS clients. Initially we started with one android and one iOS app and we released one version of android app to play store.
As time passes we have implemented some new features and added few breaking changes which may cause crash to existing users.
Now we want to support both the client versions with the single existing azure mobile service.We don't want to give force update to existing app users. We want to do something like versioning of our scripts and custom apis.
We searched a lot for the option to do versioning of azure mobile scripts and custom Apis. But we did not get anything relevant.
Can somebody guide me to the right direction? Is it possible to do versioning in azure mobile services node backend?

We don't have a recommended way for doing API versioning for Mobile Services, though it's something we've thought more about recently.
One means of doing this is keeping each version of your API under a specific route, i.e. \api\1.0.6\myAPI. In this way, your API version ships with each client. You can use shared code behind the API to avoid any too much rework.
There's no built-in versioning for the tables endpoints--you'd have to use a service like Azure API Management, or have two mobile service backends to handle the two client versions.

Related

How many (separate) Keycloak clients for different platform versions of app?

I have an application which is built using Flutter and hence has 4 versions for each major platform/OS (Android, iOS, macOS and Windows) which are distributed via the respective app stores. The functionality of all these app versions is (almost) the same - i.e. only some minor differences in how certain features are implemented, but their overall functionality is the same.
When adding Keycloak as an IDP, I was asking myself the following question. The answer might be obvious, but I couldn't really find an explicit one yet so far:
Do I need to (or is it advisable) to create a separate client in Keycloak (more precisely the respective realm) for each of the app's platform versions (i.e. 4 different clients - one for the Android, iOS, macOS and Windows version) or can/should I use the same Keycloak client for all of them? Are there any advantages or disadvantages to one or the other approach?
Besides these 4 versions of the app, I have a REST API which handles access to the users' resources in the database. I assume that at least this API should have its own (confidential) client?
Given that all the app's platform versions have the same functionality, I do not really need to distinguish between certain access permissions etc. Even further, one major feature of the app is that it provides the same functionality on all different platforms.
One aspect I was thinking about is that if I had separate clients, then also the user's sessions for each app version/operating system would be managed via separate clients in Keycloak. But if I had just one client, then one user could have multiple sessions for different versions of the app within the same client. Would this cause any issues? (However, even if I had separate clients for each operating system, I could potentially still face this issue if a user is for instance using the iOS app on their iPhone and iPad - both of which would then be using my "iOS client" in Keycloak).

Flutter: Deploy multiple apps at once

We have 13 apps that are exactly the same in source code, one difference is app name.
Currently, whenever we have an update to deploy we have to manually do it to every developer account. Is there a way to combine all apps into one source code and deploy it to each account?
If the deploying to multiple accounts is a must, then you can also considering automating this by using the API which both the platforms, Android and IOS have and there are options like fastlane available which make the process fairly easy
If you can switch to a single developer account, then flavours could be an easy way out
Flutter Flavours is exactly for this purpose. A flavour is analogous to say ice cream, well the base content is same but you would like to have a different flavour always right? The best part is you can do something for both Android as well as IOS
You can read about Flutter Flavours here

Is possible to combine rest-api and angular profiles on Grails?

I'm going to start a new project that has two front ends, a mobile APP and a Web Application.
I was thinking about creating a "rest-api" grails application and consume this "api" from the mobile apps.
But, for the WebApp, is it possible to create a new "angular" Grails app that uses as model the previously generated "rest-api" Grails application and ovoids me to "re-implement the wheel (model)"?
Any articles/documentation how that could be accomplish?
Thanks in advance.
JD Evora
You can use the domain you already have in the new rest api, nothing changes. You may want to add the #Resource annotations.
If there is another app that uses this same domain, I would put in a plugin(as #Joshua suggested), we currently do it for clients which have both admin/cms and final user applications.
In our company,we are currently developing 3 projects with an idea I believe will fit well to your needs, or may help someone else who is starting a similar project
We organized the apps this way:
We've created a grails app with rest-api profile
We've created a grunt/bower/npm project(you could use yoo angular generator, but It had more than we needed)
We've created an android and and ios apps
Advantages we've seen:
The angular application calls the same methods as the mobile apps, there is only one controller, one service, one grails app
The web apps is pure JS and CSS and runs smoothly in the serve(npm
install serve)
You can deploy the web app in any CDN like Amazon Cloud Front and be able to handle a big demand, and you can deploy it quickly
Just in case you don't know, but with grunt and bower you can replace assets pipeline automation.
Hope it helps you!

Google Drive vs Google Doc for iOS?

I have an iOS app that uses the Google Docs List API to access and download spreadsheet data. I've done a basic test with upgrading my Google Docs account to Google Drive, and everything still seems to be working okay.
Based on the answer for this question Google Document List API and Google Drive SDK it looks like things will continue to work for awhile.
Are there any steps that mobile devs should be taking now to move to the new API? My main concern is that most of the developer docs so far are related to web apps and not mobile apps so requirements like registering for the chrome web store don't seem to fit. For example:
"Warning: Apps will not have any API access to files unless the app has been installed in Chrome Web Store. To test an app during development, you must first create a listing and install it."
Any guidance or suggestions would be appreciated.
Check this answer for the rationale behind the Chrome Web Store installation: https://stackoverflow.com/a/10476737/186674
Also, we are considering removing the installation requirement for the development and testing phase, we should have some updates soon.
iOS apps using the Documents List API should now update to using the Google Drive API and the newer Google APIs Client Library for Objective-C.
The new API and library are quite a bit easier to use and more efficient than are the older GData alternatives.

Lotus Native Application on iPhone

How can i make a lotus application an iPhone native apps?
For e.g: eLeave.
The submit or approve action button in the form was created using lotusscript. So how can it work in iOS ? I have no idea how can i extend my lotus application to an iPhone Native Apps. Someone had suggested to use either SOAP or REST via HTTP to communicate between iOS and domino. But i don't even know what can i do with SOAP in my apps.
Pls help.
The suggestions along the lines of SOAP or other HTTP-based access to the data are correct. Since you can't just port a Notes app to the iPhone (for a variety of reasons) or use the Notes Java API classes (since the iPhone doesn't have Java), some form of HTTP access is your best bet. Either traditional Domino web access via forms or XPages are most likely the best way to go, since then you can write your UI in Designer. If you don't want to or can't do that for whatever reason, you're on the hook for writing the UI for your iOS app separately and then connecting to Domino via Web Services or REST functionality.
SOAP Web Services are probably what you want. They have the advantage of being supported directly in Designer - you can create a Web Service Provider in LotusScript or Java in much the same way you would write an Agent or Script Library. You would have to write methods to access and update the data you want, but it would also mean you have full control over what happens. You could re-implement your form-submission code as a web service call that takes the changed data as parameters and then does whatever manipulation you want and creates/saves the document.
It does depend on the version of Lotus/Domino you are running. This could be a start XPages Mobile Controls I am not sure about the "native"here. This is XPages, web based.
Based on your comment, I know of one native application TSAzr. This application uses XPages as web-services on the domino server. A bit more info can be found here dominoGuru
Your follow-up suggests that a mobile-optimised web application will not cut it, and that you want a native application. This means writing a new iOS application, end of story. There are different ways to go about this of course—e.g. you could build a web app and then wrapper it using something like Appcelerator Titanium, or PhoneGap—but ultimately, you need to write something.
As #Jesse Gallagher has already stated, Notes applications can't be ported directly to an iOS device. Apart from anything else, a Lotus Notes client application is a proprietary data store (NSF) sitting within a C and C++-based client built and compiled for the relevant underlying platform (Win or OS X). There is no direct analogue for iOS other than re-coding your app (of course, you could re-use the existing Lotusscript business logic via web service calls, as detailed in earlier answers).