How updating dynamic framework will affect App Store build - ios

I have an app on the App Store and I have to create another app. This other app has some of the same functionalities as the first app. So I wanted to create a framework to put the common code in and use it inside the apps. Unfortunately, this framework has to change to add more features and improvements.
I saw that dynamic libraries can update the library code without any change to an app already pushed to the App Store. But this is reserved for Apple. Also, since iOS 8, we can create a dynamic framework which includes dynamic libraries. So is it possible to have the same, meaning if I update my dynamic framework, it also updates the app without having to push to the App Store again and face app review process?
If not, do you have some clues/recommendation to achieve that?

Dynamic Framework is a bit different from the understanding you have. Please read apple documents in more detail for that.
Currently only way to achieve what you expect is to push code on App Store as hidden, and based on some server API configuration update your content accordingly (Firebase Remote Config is one such good example if security is not that big a concern)

Related

Convert UINavigationController-based app to UIDocumentBrowser-based app

I've been working on a UINavigationController-based Swift iOS app for the past few months, but I'd like to switch to a UIDocumentBrowserViewController-based app (or at least be able to implement it in my existing app). Is there a way to do this without creating a whole new project/target?
Is there a way to do this without creating a whole new project/target?
Yes. Make a new document browser based app so you can see how the project is configured, and copy its special features carefully into your existing project.
Have you tried to use UIDocumentPickerViewController? If you implement this class in the section of your existing App then it should work.

Firebase dynamic links for multiple iOS apps in project

I have a firebase project with two iOS apps and two Android apps.
These apps needs to share databases and users so this design seems natural.
Regarding dynamic links, Android works like a breeze but I’m struggling with the iOS part.
Basic dynamic links setup is easy, the difficult (impossible?) part is to make dynamic link that routes toward the proper app, based on bundleID.
Firebase auto-generates the apple-app-site-association files but the paths components for all apps is always the same : ["/*"]
{"applinks":
{"apps":[],
"details":[
{"appID":"XXXXX.com.test.app1","paths":["/*"]},
{"appID":"XXXXX.com.test.app2","paths":["/*"]}]
}
}
As a consequence, the first app app1 always match and all deep links are directed towards this app.
At this point, i'm unable to open a dynamic link to app2.
The documentation is inexistant for this configuration, even if this fully functional on Android apps.
Am i missing something here ?
Firebase Dynamic Links has limited support for multiple iOS Apps in the same project. We are planning to improve this support, but no ETA on the dates, likely Q1 2018.
Here is one of the most typical example of Firebase Dynamic Links setup for several iOS App in one project: https://photos.app.goo.gl/apple-app-site-association
You still should be able to open app2, if app1 is not installed on iOS device.
I believe you can change order of the Apps in apple-app-site-association by deleting app1 and re-adding app1 to the project.
We do receive more requests on allowing to re-order priority of the App in apple-app-site-association file. For example, developers have free and paid App, so they actually want for dynamic link to work in both Apps.
As a workaround, you may be able to use customURL scheme to re-open correct app2, if app1 was opened when this was not desired. This would be not the best user experience.
Let me know if you have more questions, feel free to open Firebase support ticket to share private information.
As Oleksiy Ivanov has already pointed out, this boils down to the problem, that Firebase Dynamic Links doesn't support using the same URL prefix for multiple iOS apps/targets contained in the same Firebase project.
There are multiple workarounds though:
Using multiple (sub)domains
Use a custom domain
Using multiple Firebase projects
On Android it works out of the box, because you are in charge of matching paths with particular apps within the Manifest file. On iOS it doesn't work, because Firebase is in charge of such matches within the hosted apple-app-site-association file (as you've already pointed out in your question).
For further information, I've written an extensive answer here.

Uploading multiple builds of same iOS Application

I want to upload two build of same app with little UI changes on app store with different account. Can I upload the builds?
I have an app with multiple client so I want to upload builds for each client with their own account. I have modified the UI for each clients.
Yes, you can. What I do in similar situations is that I use one project for that (as you already have). And then I crate a copy of a target, so that I can customise it (custom logo, custom icon, ...).
To apply customisation in code I take advantage of "Custom Build Configurations". Here on SO I've described how I do this (as of writing it's the third answer to the question) custom Build Configurations
Sure you can, just make sure that the bundle identifier is different.
No issues in doing that. Just take care of the following things which must be different:
Logo
Bundle Identifier (as suggested by Fabio)
package ids of in app purchase items, if any
App preview images/videos
If you are using iAds for showing ads in your app, make sure you do not use the same provider account.

How to pass objects/data between my iOS applications

I have an existing iOS application on the app store, and I am building a new companion app to work with this existing app.
I need to pass objects/data from this new app to my existing app when a certain action is taken. The behaviour I'm looking for is very similar to AirDrop but the data is passed to another app on the same device.
The objects I want to pass locally between apps are simply NSObject's.
As per your comment you wants to share NSObjects between your iOS apps. The best approach would be "Custom URL Schemes". But in this approach you may need to add or re write some parts in your old iOS App as well.
checkout this SO Answer for more info on implementing custom url scheme and history of sharing data between ios apps.
Apple documentation for sharing data is also available.
If your app supports greater than iOS 8 you can also use the new feature called "App Group Functionality"

Bundled iOS app using two IPAs

I am exploring into the possibility of creating a bundled app out of TWO of my apps (app1.ipa & app2.ipa). Is it possible to create a shell app (bundle.ipa) which would load app1 or app2 using their respective ipa’s (app1.ipa or app2.ipa) based on user selection? Or Do I have to merge the source codes and assets on both apps to create a bundled app? Basically, is it possible to load an ipa with-in an ipa?
No. It's not possible to create apps with more then one binary.
Instead of trying to have more than one .ipa - which I'm pretty sure isn't possible - creating a class by which the app can introspect whether or not the person has paid for the app. So if they have, the feature is available, and if not... its not available.
Use Facebook's SDK integration as a reference of how this works: before an app can retrieve items from the user's Facebook, the app must make sure that the user has signed in with Facebook.
I wish I knew of a more precise example, but honestly, this should give you the gist of it all.

Resources