Multiple iOS apps in a single Firebase Project - ios

I created a Project using Google Firebase. In this project I added 6 iOS apps that I want to track and manage under a single Firebase Project. The apps are sports related and I wanted to have all of them share the same project for monitoring and management and possibly sharing data with each other. Initially the apps will use Firebase Authentication, Crashlytics, FireStore and push notifications. Over time more of the Firebase services will be added (i.e. A/B Testing, Remove Config, etc.). One the summer I will be adding 6 Android apps. These have been in development over the last 6 months and all the Firebase features appear to be working fine.
Are there issues or downside to setting up multiple iOS apps under a single project? When I setup the apps under the Firebase console it did not restrict me to a single iOS app per Firebase project nor did it give me any warning. My cause of concern is the Firecast from Google titled “Getting Started with Firebase: https://firebase.google.com/docs/ios/setup . Project setup is discussed at the 1:25 mark talking about multiple apps in the same project and the diagram shows 4 apps in the project. An app can be an iOS, Android or Web app and one possible scenario is to create a single project with 3 apps (iOS, Android, Web) which share login and user data. At the 2:20 mark it states “… there is nothing to be gained by cramming them into the same project besides tears and heartache.” but it doesn’t specify what the “tears and heartache” issues are. I googled around and checked additional documentation and no warnings are given or information on best practices.
I did see a posting on Stack-overflow from a Google engineer regarding deep linking that was supposed to be addressed in Q1 2018 (over a year ago).firebase-dynamic-links-for-multiple-ios-apps-in-project .
The one issue we did run into is that we can’t use Facebook authentication in our app. The authentication is setup at the project level for all the apps. But Facebook requires each individual app to be registered for authentication and does not allow the user to register a group of apps. So this prevents us from using Firebase login, but this is the only issue we’ve encountered. We MAY run into a similar issue with Twitter, Yahoo, or another service if we add them as login options. For now we are just using Google sign in along with email sign up.
Any guidance here would be appreciated as we plan on shipping the apps at the start of summer. If we need to reconfigure the apps so each one is in a different Firebase Project we can do that but it’s additional work and we have not run into any issues during development and QA.

Related

Two applications in crashlytics

I am wondering how to distribute 2 apps one made with a native implementation and another with a hybrid one.
I can have the same name for them from what I can see, but I think I will have issues at the bundle id.
I want a group of testers to receive the iOS one and the others the hybrid one and I don't want them to know which is which.
(I am interested only for iOS currently, but input for android is welcomed as well)
This is achievable with a few manual dependencies. Here's what you need to do:
Onboard the native iOS/Android app on crashlytics with your Org's API key and Build Secret.
Use the same bundle id, Fabric API Key and Build secret (basically everything same) in your hybrid app.
Distribute 2 apps, 1 native and 1 hybrid, every time. All distributions will go to the same beta dashboard. It depends on you, how you keep track of which one is which (native or hybrid) since all distributions will look the same on beta dashboard.
Here comes the manual part. Each time you randomly select which testers gets native/hybrid app.
NOTE: This should work for both iOS and Android.

Third Party Sign in for IOS11 - GIDSignInButton

I am testing for IOS 11 updates and notice that my Firebase Auth using Google Sign in does not work
I get an error
A problem repeatedly occurred on https://accounts.google.com/signin/oauth? client_id nosignup pproval_state=???? passive=????
I can see many press reports about Apple removing part of the social media integration Apple to stop third party login on apps through social media in iOS 11
But I cannot find anything aimed at developers on what we should do about this.
Google sign in web page does not mention anything that I can see about IOS11 Google Sign-In for iOS
Nor does Firebase
Could anyone provide clarification on whether these libraries will still be relevant going forward in IOS11, or provide links where these issues have been discussed.
------ adding link to Firebase sample app -----------
Firebase sample app also fails for the Google login, I have not tested all others
https://github.com/firebase/quickstart-ios/authentication/AuthenticationExampleSwift
It is true that Apple has removed the special handling of certain 3rd party social networking sites (FB, Flickr, Twitter), but Google was never among that list. So, your error should not be related to that.
The library you are using relies on a well adopted mechanism for providing in-app out-of-context OAuth signin. Basically, the app presents a SFSafariViewController with the OAuth page, then once authorization has completed it opens a special URL which gets forwarded back to the application which then dismisses the SFSafariViewController. Google and FB I know for sure do it this way in their SDKs.
In iOS 11, Apple is providing a new mechanism to do this workflow. It is called SFAuthenticationSession. They aren't deprecating the currently supported method, and you will likely see the libraries you use migrate to this new mechanism for iOS 11 devices.
The answer to your question is that these libraries are still relevant and you should continue to investigate your error (make sure you're not getting the error on iOS 10, obviously)
Update
In response to further questioning, I fired up a sample project from the link provided. I ran into the same problem on the simulator, but when I ran it on my old iPhone 6 with iOS 11 beta 3 it worked fine. So, at the movement, this seems like a simulator bug. One theory may be simulator's reliance on the host operating system for certain libraries, so it's possible that if you were running High Sierra you might not experience this problem.
I tried fiddling with all sorts of switches in settings to get the page to load correctly to no avail. It looks like the course of action is:
File a feedback
Test on the device until the simulator is fixed (this is beta software after all)
Update #2
The simulator issue seems to be fixed in Xcode 9 beta 4. 🎉

What will happen to my iOS app (currently live on the App Store) when I upgrade Firebase?

Been programming iOS apps for a few months and my first app is live on the App Store supported by a database hosted on Firebase. I'm storing data related to gluten-free places around the world on Firebase (name, address, latitue, longitude, imgURL etc.) and these places are then displayed on a Map.
Firebase released all their new features, I wanted to upgrade to start using their new Analytics modules. Now by reading the upgrade guide I understand that there are a few things that we need to tweak in our code first.
So here is my concern (maybe dumb question but I want to be extra careful before doing stupid).
Since my app is production on the App Store, if I upgrade my Firebase project, will my users still be able to use my app properly (i.e. getting the places displayed on the map) or will it break/bug/crash until I push an update to the App Store with an updated code based on Firebase's guide.
Thanks in advance for your help guys.
Edouard
I do think that it will not affect your current app unless you change the database model in web interface, or change the authentication rules in web interface.
Firebase frameworks actually pointing to the same server, and same database model right.
The new Firebase includes lot of features and new stuffs into the system, but still they do support the old frameworks. My app is currently running on the new Firebase web interface but using very old Firebase framework, it's not in production though.
But I can tell you that you can upgrade to the new Firebase even if your app is in App Store.

Detect if user has a specific Profile installed on their device

I've come across this application today, Adblock Mobile, which installs a Profile on the users device and routes all web traffic through its secure VPN to disable/block advertisements both when surfing the web, and when using an application that implements advertisements, for example banner or interstitial ads. The majority of my applications revenue is ad based so this causes some concern for me and I'm actually surprised Apple would approve this application, as it hinders iAd from working as expected.
Is there a way to access a user's installed Profiles to check if this Profile is installed from my application?
No, it's not possible to check for existence of configuration files. Some sources:
"... if you're thinking about checking whether the profile exists and if not to install it, it's impossible (as for available documentation thus far)", October 2012, iOS - Prevent iPhone Configuration Profile from being deleted OR check to see if it's installed
Apple dev forum: How can I read the configuration profile, 2011. "Not specifically. However, iOS 7 added a bunch of enterprise integration features that might allow you to achieve the same goal via a different path.", 2013.
But you if you merely want to know whether your ads are served you can do this in another way: Simply try to load some of your ads and see if they're actually loaded and act accordingly.
This should be easy to implement. And it's all you need you only care about the fact that the ads are blocked, not in what way.
Quite a few websites do this. E.g. the Dutch tech website tweakers.net serves a message to people who block ads. And I'm sure a few iOS apps will start doing this soon as well.
Check this SO question How to detect Adblock on my website? for some ways that websites handle this.
No this is not possible due to sandbox. It would be a huge security issue if you could programmatically check or install profiles. Apple is very strict about security.
More details about the topic you can find there: iOS - Prevent iPhone Configuration Profile from being deleted OR check to see if it's installed
Retrieving data programmatically from a Configuration Profile in IOS
How Configuration Profiles Could Be Installed:
http://www.howtogeek.com/176195/why-configuration-profiles-can-be-as-dangerous-as-malware-on-iphones-and-ipads/

Multiple iOS apps using same Dropbox API key ever in production?

From the Dropbox API doc:
Use a single app key for each distinct app
If you build multiple apps, use one and exactly one key for each app
you make. This makes it much easier for us to debug issues when they
arise. That said, if you're just building the same app for different
platforms (for example, iOS and Android), you can use the same key.
It sounds like multiple-apps-single-key only makes it harder to debug. Does anyone successfully deploy multiple iOS apps with a single app key?
There are a few different scenarios mentioned in the Dropbox Platform developer guide you're quoting from, and it's a bit unclear which really applies to your question. To enumerate everything:
"multiple different apps (on the same platform)" e.g.:
MyCoolTaskApp for iOS
MyCoolTimerApp for iOS
In this case, you need to register different apps with the Dropbox API, which means using a different key in each (since they are different logical apps). Also, this way, users will see the different app names when they look at their linked apps list in their account.
"same app for different platforms" e.g.:
MyCoolTaskApp for iOS
MyCoolTaskApp for Android
In this case, you shouldn't register multiple apps with the Dropbox API, and you should use the same key in each (since it is the same logical app.)
"multiple versions of the same app (on the same platform)" e.g.:
MyCoolTaskApp for iOS Lite
MyCoolTaskApp for iOS Pro
In this case, you shouldn't register multiple apps with the Dropbox API, but due to a technical detail there would be a problem with trying to use a single app key in both, as noted under Can multiple versions of my app (e.g., free and paid) use the same app folder on iOS or Android? in the Dropbox Developer support FAQ. In this case, you should contact Dropbox Developer support for help with getting this set up correctly.
To answer your question overall though, each of these scenarios above have been successfully deployed by various developers, but you shouldn't deploy multiple different apps with the same key.

Resources