How to design a container like iOS app that can grow in functions? - ios

We have a requirement where we need to build an iOS app 'A' that would have menu options for a number of functionalities and these functionalities will grow over time. So, the clients suggested that we do an iOS app 'A' that displays just the menu options and the options when clicked will each launch another iOS app (which implements that functionality) residing on the device. This would be a bad user experience considering the user will have to be moved out of 'A' for each link. At the same time, we cannot build all the features in 'A' since the size of 'A' would get too large.
Is there an elegant design solution for this kind of an application?

Launching a different app for each function seems a bit clunky at first, but on the other hand it does offer the flexibility of adding additional modules without having to rebuild and redistribute your application every time. If the modules are independent enough that a user wouldn't need to constantly switch between them, this might not be a bad solution.
You could use custom URL schemes to launch each module, and use (for example) an XML file to configure which modules are available and the URL scheme to launch each one. That way you could update the XML file remotely (have the application call a web service on startup to check for an updated configuration file). Your configuration file could be as simple as something like this:
<modules>
<module name="Module A" url="moduleA://myModuleA"/>
<module name="Module B" url="moduleB://myModuleB"/>
<module name="Module C" url="moduleC://myModuleC"/>
</modules>
and then the app could provide a button to launch each module. You can add additional tags for any other information you need about each module (e.g. an icon image or whatever).
When you add a new module, update the config file on the server and the app will find it on the next startup. Your app would have to redirect the user to the app store to download and install the new module if it's not already installed on their device.
Of course if your modules need to communicate with each other or share data, it gets more complicated. You can pass parameters between modules in the custom URL scheme, but if they need to share large amounts of data (like a database or something), then you'd need some other way to share that data.
Hope this helps.

Related

Android: one app for multiple uses via parameters in AndroidManifest

It is possible to register one (Delphi) app for multiple uses, with more than one icon in App Chooser? For instance like this:
register app to open some file types (I know how to do that)
register to open/acces to any file, but App Chooser should show icon different than main app icon, and different text, not the app name - for instance "Base 64 encode/decode file"
same thing, for text files or other documents/images compatible with operation - "Convert to pdf"
All functionality is built in the same app, but operation, and icon in the App Choser, should depend of parameter passed in intent, as EXTRA_TEXT for instance. For instance, if EXTRA_TEXT is "b64enc" the app should auto encode the file on intent EncodedPath, then save base 64 encoded file in app documents folder, notify user "conversion complete", then close itself.
For example, app can use file extension to choose what to do with the file, but this is not enough for functionality I need.
I have seen this answer
Multiple Application Files in one Android app
and it is OK as some kind of guidance, but not really an answer on this question :-)
In Windows the same application can register itself in Win context menu for multiple purposes with different icons and different context menu text, and same program can do different operations on the file, depends on parameter passed to the program.
So, it is possible in Android, maybe via AndroidManifest, or I shoud use different approach? And if I must, is it possible to have multiple activities in Delphi app for Android?
Edit: I have found this blog
https://blog.andreamagni.eu/2019/02/how-to-add-android-app-shortcuts-to-a-fmx-application/
and looks like maybe it is possible by using shortcuts

Can a Mongo Stitch app be renamed in the web UI?

I am trying Mongo Stitch to see if I can use it for some small web apps.
I created a simple application to play with some incoming web hooks and triggers, and called it MyApp. I am now expanding the application, and I have a purpose for it, so I'd like to give it a more meaningful name. However, on the Stitch Applications page, the only feature available in the app context menus is "Delete".
I expect I could do an export and an import using the console command, and editing the text files in-between, and if there is no other option, that is what I will do. However, it seems such an obvious oversight, I wonder if I have just not seen a menu option somewhere.
Currently, you cannot change it. Exporting it, changing the app name (and removing the clientAppId), and importing again should work. Essentially creating a new app.

iOS "Plugins" with sounds

Let's say a "plugin" is a collection of 5 sounds:
1.mp3 2.mp3 3.mp3 4.mp3 5.mp3
My app needs to support such plugins to switch between different sound-themes.
On Android ecosystem, I can simply create a new application that only contains those 5 mp3-files in the assets folder. It will be a plugin. Let's say its package name will be com.mysite.plugins.test
From my main application, I can list all installed apps (plugins) with package prefixes com.mysite.plugins.*. And easily access any of their assets.
I'm new to iOS world... And need something same. As far as I have researched, it's not possible... There can't be an app that contains only sounds, accessible from my main iOS app.
The only way seems to host sound-packages on my server (cloud) and download them from the main app.
However, this way requires payments for data transfer.
Am I missing some more elegant solution? Like hosting sound-packages directly on Apple servers?
Thank you!

IPhone: Best way to deliver configuration file to test application

Main Problem
I have to write test application for iOS to test very complex multi platform framework.
There are already applications for other platforms which are using common configuration file (which defines test servers, user names, log level, and so on). Configuration process is quite complex so providing a complex UI will be waste of time on mobile platforms.
This file is a xml and its file name extension is xml.
Tester will have multiple configuration files (will use only one at the time)
This files should be easily uploaded by tester
tester should be able to select configuration file
What solution I'm looking for
At bagging I was thinking about iCloud service. Problem is that in 90% of cases device is shared by multiple people (testers and developers), so I'm not convinced this is best approach, since this will provide problems with sharing an iCloud account (usually there is account per device not per tester/project).
It would be best if this files could be delivered to application by using iTunes. Anyone who will do test will have this tool to install test application, so it would be nice if he could upload those files too.
Any useful hint will be appreciated (not necessary a full solution).
As a bonus opposite direction would be also useful (fetching logs). Currently usually logs are send by an email. If it is possible to easily fetch this in same meaner as configuration file it would be great.
Ok looks like it is possible to do this with iTunes.
When inspecting list of installed app for device in iTunes at the bottom there is a section "File Sharing" where you can add remove files.
If you want
That your test application for iOS, test something by readying XML File
There are different XML files
There are different testers.
In this case rather than doing too much you can
Ask testers to upload the files in dropbox.
Have a textbox in your app, in which user will type the URL of XML file (which they have uploaded on dropbox)
And next to it you have test button on click of it you can download the file and test against the logic.
Once the test is over you can grab the result by email or ask them to upload on Dropbox (manually or using api).
Ok I've finally found something like that. This perfectly solves my problem.
Files will be uploaded and downloaded by iTunes.
Another helpful link.

Config file to change values within an app

I'm having a problem meeting a requirement for an Java app I'm developing. My client must be able to deploy the app to multiple BES servers without the need to resign the code (or have any interaction with the developers). Currently the web address of one of their BES servers is hard coded into the app but they require the ability to change this value at will prior to deployment. (it can be assumed they will administrate any BES server the app is deployed from)
I've tried attaching a text file to the project which is read by the app but this is packaged along with the app, meaning it can't be manually edited (as far as I'm aware), I've also tried having a custom property in the JAD file but this needs resigned after any change.
Am I doing any of these approaches wrong or is there a better solution I'm missing?
Also, is it possible to deploy a simple text file to a BlackBerry via the BES to a specific file location? If so I could have my app read this file which would solve the problem?
Thanks,
Implement custom attachment handler in your application.
And send email with an attached xml-config file to BlackBerry device.
User opens the received message and selects the custom menu item provided by attachment handler.
And you can parse this xml config and act accordingly.
An easier way is to use a user defined ItPolicy to provide the configuration information you need.

Resources