How to split functionality into separate apps iOS? - ios

I am working on an app that serves two different types of user. Both users have some common functionalities.
One group is the general public, who uses the app to navigate basic events or request for new events.
The second group is who can provide services to the general public (can be paid or unpaid). They primarily access the profiles created by general users. They can add details, e.g. notes about conversations with them.
Now we want to divide both the users because the app is getting quite large and at any time user can be part of one group only.
How can I create separate apps?
Using different targets for each group is it a better solution? I tried this but it is not helping us to reduce app size.
Creating separate project will make maintaining challenge because both uses have some common functionalities.

Related

Best practice for country-specific app submission

After referring already discussed references -
https://developer.apple.com/internationalization/
https://www.raywenderlich.com/64401/internationalization-tutorial-for-ios-2014
https://developer.apple.com/library/content/documentation/LanguagesUtilities/Conceptual/iTunesConnect_Guide/Chapters/AppStoreTerritories.html#//apple_ref/doc/uid/TP40011225-CH18-SW1
https://developer.apple.com/library/content/documentation/MacOSX/Conceptual/BPInternational/Introduction/Introduction.html
https://forums.developer.apple.com/community/app-frameworks/localization
Multilingual app in App Store; use two versions - or use apple localisation? (special case)
I understand below possibilities, but no solution! -
Have one universal/generic app, and add internationalization and localization as per user language and manage features accordingly.
(This is based on language of user, not country or store so would not serve my purpose)
Have different apps with almost same features but having country specific changes (due to some country protocols/requirements), and release each for specific countries/store only.
(Possible solution, but will it carry a risk of app store spamming
with similar apps even if those are in different store? and certain
risk is to maintain separate code base)
What could be the best way to serve different countries with their slightly different requirement in the main app?
I would recommend to have one application and in which based first you fetch the location of user and based on that location you can load the assets or code based upon the country.

How to manage one repository of Xcode iOS app for multiple companies with slighly different requirments?

I have a mobile app developed for number of different companies on AppStroe. Each company is using different endpoint to server/icon/logo. I have managed to add this in custom plist file and according to companies endpoint, I switched to different build setting.
Now these companies are going to different ways of authentication. One is using another app to authenticate and one is using server calls. Also for one company I am receiving datas one from server call and other one from local files.
I have to handle different login behaviour for different projects. It is mostly display/disable some extra views. I don't want to have two repositories or branches. Because almost %85 of functionalities are same. I want to add functionalities same time to both and some times to only one of them and run my tests and all.
I am looking for some way way to manage this app to maintain most functionalities and keep it only one app. How can I do that? Any suggestion?
This is a very old problem. Basically you have two options: build time and run-time; from your description it may be that you need a both (I would not trust configuration to drive my authentication code).
Build time means using conditional compile (e.g. Which conditional compile to use to switch between Mac and iPhone specific code?) and a different build profile for each customer. I assume that Xcode Targets (see How to manage the code of multiple, very similar Xcode projects) allows you to define different build profiles.
Run-time checks maps to Feature Toggling.
I suggest not using version control to manage nuances of the same application because it quickly becomes a merge nightmare, even with Git.

White labelling Enterprise iOS application

I had developed 3 applications for my client. Now he wants to distribute it to other organizations (doing same business). Other firms will have minor data and image set changes, other functionalities are same. What is the best approach for distributing this 3 application with the other firms?
1) One solution I think is to upload this 3 application to each firms apple enterprise account.
Prons:
UI and functionality can be changed for each apps depends on business
changes.
Will have different server and APIs. So data security can be increased.
Cons:
Need to maintain different source codes.
As firms number increases applications also increases, which can be a form of spamming appStore
with similar applications.
2) Another solution is to upload this 3 application to one account and is distributed among other firms. Need to check any legal issue in doing this. By this server will maintain different database for different Companies and user registered with this company will link to the corresponding database. All other calculation and logic will be handled by the server. iOS application switches image set w.r.t company.
Can I do this by any other approach or which one is the best one. The main idea is to give a contract to another firm by creating a set of users having an extendable validity date and this is maintained by my client.
Thanks in advance and any thought on this is appreciable.
The best solution to this is Volume Purchase Program for Business
provided by Apple. It provides you with a functionality called Custom B2B apps for iOS. You can read the details in this document.

Best BAAS for sharing private database records between users?

In essence, I'm building a private journaling app for iOS using Swift that will have a social feature. When creating a new entry, the user can choose to share the entry with specified friends from a friends list. The friend will receive a notification of the new entry, and it will be added to their own journal. The friend can later choose to accept or deny addition of the entry from their personal journal after review. Users won't be able to see each other's journals, they will only be able to share(add) entries to their friend's journals.
While I'd prefer to use iCloud, CloudKit won't allow me to share the entry records between users if I store them in a private database, and the information will be too sensitive to plop into the public database. CKRecordZones would be helpful, but they are only available for organizing a private database, so they will do me no good with sharing entries.
Can the privatized entry sharing I want be accomplished through Parse or perhaps another service I'm unaware of? Or will I have to build a custom backend to accomplish this?
Any advice would be greatly appreciated!!!
I think below links can solve your problem:
iOS 8 data sharing between users
How to share Core Data between multiple users?
ios share data between users
Read all 3 questions and right answers of them.
CloudKit would be the easiest when you are ok with limiting it to Apple devices only. If you wan tot make a quick start with that, then try out EVCloudKitDao
Until now the logical choice for this kind of apps was Parse. It's easy to implement and has a lot of features.
Amazon just released a new AWS Mobile Hub that looks very promising. It integrates with all AWS services, is very powerful and now also easy to use.
You could also use Microsoft Azure Mobile Service. It looks like it has similar features as AWS.
Of course there are more less known environments that also might work in your case but I think it would be wiser to stay with one of the above 4 well known choices.
Which of these you should pick is more or less a personal choice. They can all do what you want. If it's the best use for you depends on your use case.

same iOS app with different personalization?

I'd like to program an app which essentially has the same functionality, but with different personalization at the icon level. For instance, the app essentially would have information and communication functionality for a particular business, but I'd like to have the icon/name in front reflect the specific business name. So in other words, the app would let you do things like browse merchandise and place orders, but for two different clients one would say "Home Depot" and the other would be "Loews" in the icon/name.
In the end, I'm customizing the "storefront" to the client, but the backend is pretty much the same in terms of functionality.
Is there any way to do this programatically? I suppose I could submit different apps to Apple, but given that the code would be essentially the same, wouldn't it get rejected for similar functionality?

Resources