Important: Please read the Qt Code of Conduct -

Android & iOS app auto update

  • Hi all,

    I have client-server application. Server is Qt based, and also Android, iOS, Windows clients are Qt based.
    I need to implement auto-update solutions on clients part. It is not guaranteed that all my servers have the same version, so I can't relly on GooglePlay and AppStore to update my clients app. Basic scenario is like this: clients app starts, it connects to the server and if server version is different than client version application must upgrade/downgrade itself.
    I read about some auto-update frameworks but usually they are for Desktop solutions.
    Windows desktop part is more or less known, so I want to ask about Android,iOS,WinRT
    I think about something like this:
    I have web repository with binaries and libraries for each application versions. When client app needs to update it starts additional process, if possible closes the original process, downloads what it needs, overwrites the old binaries/libraries and displays message to the user that he/she needs to start app again.
    Clients apps don't switch from server to server, so it will be rare case usually after server upgrade, or new client app installation.
    Question is: will this work for Android and iOS and possibly WinRT ?
    I have Qt Indie Mobile license so apk for Android is dynamically linked, I'm not sure about iOS.
    Will I be able to overwrite Qt libs if I had to change Qt version ?
    As I said it is client-server application so I can't see how could I solve my problem with AppStore/GooglePlay

    Best Regards

  • Lifetime Qt Champion

    Hi and welcome to devnet,

    No you can't do that. Your application must pass the validation phase in order to be deployed to your users.

    What is usually done is that your server provides a versioned API and your client application connects to the highest available.

  • Hi.

    Hmm, what I have in mind is perfectly possible on Windows and Linux, right?
    but I can't overwrite existing binary file on mobile platforms?

    It seems to me that clients applications will have to have versioned API. Only after client update its application, option for server update will be presented to him. Server is dedicated for small office/home use, in other words each server is dedicated to small number of users.
    Anyway, if only I could deploy client application along with server (that is embeded system and has web server) it would be simpler, but as far as I know it isn't possible with iOS, only by AppStore.

    Best Regards

  • Lifetime Qt Champion

    Even on OS X yes.

    No, you can't on mobile platform. There are strict rules there.

    Well, like I said, your server should provide access to old version of the APIs. Have a deprecation period and then remove support for old version.

    What is your target audience ?

  • Well, software is for home automation it works with a few hardware platforms. Server is my system installed on CubieBoard and I'm selling this and client applications are for free. So my target audience are adult people.

  • Lifetime Qt Champion

    How are you planning to update your server application ?

Log in to reply