We have developed an Android application and pushing the new installations & updates through MDM (Mobile Device Management, Soti Mobi control). The update sent, silently upgrades the application without user's confirmation. Due to this, if application is in use by the users, is automatically stopped, upgraded & started from the beginning and thus users loose their important changes which they were suppose to send to server.
Is it possible in the mobi control to configure an update with a prompt to the user (similar to what it comes when we manually upgrade to the newer versions' APK)?
OR
Can I override any life cycle method which would be invoked on upgrade event, and if users' changes available I would like to abort the update?
Android MDM protocol (called Device Admin) doesn't have API to install/uninstall/upgrade applications.
So, pushing an upgrade isn't build-in Android feature, but rather a feature of Soti Mobicontrol application. I think, it make sense to contact them with this question.
Related
I have a new project at hand where I need to make two android applications
1)Main Controller application (be installed in one device say its name be X)
2)Sub Child application (be installed in devices that need to be controlled by X )
So I want to get an idea/picture about how one android device like (2) can be managed fully(i.e. blocking applications or making them accessible for some interval / block calls / track location of user ) from another device like (1). So far I searched Google ,asked my seniors about the same but none was able to help me out.Found many scattered info (like need enterprise app to do this i.e use android management API or Device admin ) but not being able to get any clear idea about the work flow.
Thus now this the last place I can think of for helping me out with this work flow.
Reference
Update: Based on what #Fred said i.e. to use android management API (also based on the answers that he posted here) could we somehow have own custom web server and manage the interactions that EMM console does with all the child apps through our own API's(the same API's which we would call from the parent app.) ???
In other words instead of controlling form the EMM console, I would like to control those child application from another parent android application.
By FCM or Socket programming you can easily communicate with other app. Suppose 2nd app receive a call then 2nd app call a api of server about the information, then server knock 1st app by fcm or socket, then 1st app make a decision and submit the decision to server by API, And finally server submit the decision to 2nd app by FCM or socket.
You can check out the Flyve MDM which is an open source mobile device management solution including both agent app and web panel for management.
I'm working on an application that uses Airwatch to enter the device into a single purpose device when only one app is opened for a user (not by Knox sealed mode) and also uses Knox SDK to manage device settings, etc.
I'd like to block system notifications when the app is in a kiosk mode (or it more preferably to block any notifications like a low-battery in any mode, not only a kiosk).
How can I do it using Knox SDK or can I do it using Airwatch?
As from official Airwatch response: there no such functionality in Airwatch and an appropriate feature request has been created in the internal tracker.
Unfortunately, there are no any estimations because of internal feature prioritization should be done.
We have developed an Android application and pushing the new installations & updates through MDM (Mobile Device Management, Soti Mobi control). The update sent, silently upgrades the application without user's confirmation. Due to this, if application is in use by the users, is automatically stopped, upgraded & started from the beginning and thus users loose their important changes which they were suppose to send to server.
Is it possible in the mobi control to configure an update with a prompt to the user (similar to what it comes when we manually upgrade to the newer versions' APK)?
OR
Can I override any life cycle method which would be invoked on upgrade event, and if users' changes available I would like to abort the update?
Android MDM protocol (called Device Admin) doesn't have API to install/uninstall/upgrade applications.
So, pushing an upgrade isn't build-in Android feature, but rather a feature of Soti Mobicontrol application. I think, it make sense to contact them with this question.
Can any one help me out how to do MDM Integration in Android from client and server prespective?
I want to do an enterprise application which having lock and wipe functionality. I have no any clue of workflow of MDM in Android.
Thanks.
Android Device Admin API will do both things what you want to do (lock/wipe device and even more). An example is given and also you can find this complete source code in your Android SDK directory.
Now as client server perspective:
You have to implement your task (lock and wipe) in your android application (in client, i.e. known as agent). Now your application should be capable to communicate with your server or vice-verse.
I am 100% agree with adamk as he said "Remote controlling your application remains exclusively your responsibility - the Android framework does not provide (or enforce) any solution for that."
And Android gives your this feature too, as adamk said to use C2DM, he was right but now C2DM is deprecated, and GCM has been introduced, “a service that helps developers send data from servers to their Android applications on Android devices.” The service can send a message of up to 4 kb to an application on an Android device, most often to tell the application to retrieve a larger set of data. GCM will now handle all queueing and delivery for messages to Android applications.
You should read how to use GCM, and you can find sample code too. Download GCM Android Library from SDK Manager
and check android-sdk/extras/google/GCM directory
After establishing successful communication between your agent and server, evaluate msg in agent sent by server and perform desire action (lock/ wipe). This is again up to you how you define your message payload and how you handle those payloads in agent application.
Here is an article about Android MDM.
Happy Coding :)
You can use DeviceAdmin to gain privileges for managing the Lock preferences and performing device wipe (among other stuff).
(The user must add your app as a device administrator beforehand)
Remote controlling your application remains exclusively your responsibility - the Android framework does not provide (or enforce) any solution for that.
You may want to consider using Google's C2DM API, which is a convenient push mechanism.
As mentioned in the above answer, DeviceAdmin API can help. If you are using an Android device, you might know about the Android Device Manager (the web-based version) which allows you to manage your device. Basically, you can track, locate, lock, and wipe your device, some of the basic features of an MDM solution. So, in coding (though I am not a coding expert), you need to get access to the Device Manager (I guess, using some listener codes, or notification access).
Apart from this, MDM allows creating policies and groups of users (which would be a part of the coding in the app itself), then pushing the command over the internet (or OTA) to the connected device.
MDM also allows managing Apps and Data on the device, for which, you need the app to get access to the internal as well as external device storage.
Hope this helps. Good luck creating your MDM software
I want to use the Facebook API for getting stream updates to my mobile application running on Android or iOS. I did some research and I can see that I can use the Facebook API calls (graph API or FQL) straight from the mobile device (not necessarily go through an intermediate server).
But, I want to get Facebook updates in the background, even if the application is not running.
So, since I am new to mobile development, my questions are:
If the application is not running (not explicitly opened by the user) can I get updates to the application using the application's code, or should I use an intermediate server that would send the notifications to the application?
Should I have a server in the middle to send notifications when the application is not active.
I simply need to understand if I need to develop a server accessing Facebook besides the mobile application if I want to receive notifications when the mobile app is not active.
A server is not necessarily required.
The most basic implementation of this could retrieve an access_token from facebook sdk adding the offline_access option to your permissions request.
Then you can use an android alarmmanager to "wake up" your app periodically. The broadcast receiver can perform whatever updates you want to make from the facebook api and it doesn't necessarily ever have to show anything to the user.
For Android use a background service, these are specifically designed to run in the background even after a user closes your app.
http://developer.android.com/reference/android/app/Service.html