Firebase & iOS 14 > Will dynamic links tracking and campaigns continue to work? - ios

As most of you are probably aware of, iOS 14 will basically put an end to app acquisition tracking as we know it.
Here are two great articles that explore the issue in length:
The App Attribution Industry Is Dead
How To Prepare Your Mobile App and Attribution Stack for Apple’s iOS 14 Privacy and IDFA Changes
Putting aside the critical changes most people will have to make to their business models, my question has to do with Firebase's dynamic links in particular.
Since they basically rely on copying a link in the pasteboard, I already know they might now trigger a warning banner — although the Firebase team has apparently been proactive with this matter.
What I don't know at this point is whether they will continue to work or not when users disallow ad tracking.
My team and I have tried building one of our React Native apps with XCode 12 beta on a simulator running iOS 14, but haven't been able to retrieve any value from the dynamic links — whereas it currently works with iOS 13. There might be other factors at play though, so it's difficult to draw our own conclusions at this point.
My questions, provided that the users have opted out of tracking:
Will we still be able to read the dynamic link url in-app?
Will Google Analytics still receive the UTM parameters and get campaigns' results?
If the answer is no to any of these questions, what are the workarounds or third-party solutions you've found?
Your insights will be greatly appreciated!

According to Google's blog post: https://firebase.google.com/docs/ios/supporting-ios-14
If IDFA is not accessible:
No impact for link-opening functionality
When used with Google Analytics, attribution for link conversion events is unavailable.

Related

Is it possible to detect if any other certain app is Currently running or not in iOS?

Let say If I want to check if the facebook or any other application is currently running on device ?
The answer is simply "No", this is absolutely not possible in iOS.
(Note that you can easily "open" another app - it's just like opening a web link - but you can not "check if it is already open".)
Simply your answer is NO
The reason behind this, in case of iOS, every app is running like on own sandbox. So there is no connection between one sandbox to another.
Update 2:
Decided to use Code-Level Support.
Included with your paid membership are two Technical Support Incidents
(TSIs) for code-level support from Apple support engineers.
Reply from Apple:
Automatic Assessment Configuration limits what features of the system
are available while in a testing environment. It locks the device to a
single app. It does not provide oversight, such as identifying which
apps are running.
Classroom is an app targeting K-12 classrooms. It provides teacher
oversight of student activities during lessons, including viewing
student screens.
https://www.apple.com/education/k12/teaching-tools/
https://support.apple.com/guide/classroom/welcome/ipados
I'm not aware of any functionality associated with either of these
that provides for notification of apps running in the background.
While I cannot say how any given app is implementing apparent
functionality, I'm pretty confident in saying that the app you mention
earlier is not using either Automatic Assessment Configuration or
integrating with Classroom.
You may want to contact the developer of the app in question.
Of course, it's also possible your colleague misunderstood and the app
is not in fact doing any such reporting.
I would also encourage you to file feedback requesting such a feature.
Please submit your suggestion via Feedback Assistant
https://feedbackassistant.apple.com. For more information on
Feedback Assistant, please visit
https://developer.apple.com/bug-reporting/.
While you were initially charged a technical support incident for this
request, we have assigned a replacement incident back to your Apple
Developer Program account.
Perhaps my colleague mistook Android version of the app for iOS.
Update:
After reading some more about this it could be related to Automatic Assessment Configuration and AEAssessmentSession.
This allows an app to:
Enter single-app mode and prevent students from accessing specific
system features while taking an exam.
and
A session provides protections by preventing access to desktop
elements like:
...
Other apps, except those that you selectively allow
https://developer.apple.com/documentation/automaticassessmentconfiguration
https://developer.apple.com/documentation/bundleresources/entitlements/com_apple_developer_automatic-assessment-configuration
https://developer.apple.com/documentation/automaticassessmentconfiguration/aeassessmentsession
Sample code here:
https://developer.apple.com/documentation/automaticassessmentconfiguration/build_an_educational_assessment_app
Original:
I agree with #AnkurLahiry and #Fattie that it should not be possible due to sandbox environment. According to Apple Developer Forums it is not possible either:
https://developer.apple.com/forums/thread/48374
However a colleague took his hunting degree and they used an app for examination. This app could detect other apps running in the background. For example one person had Teams app running and the examinators could then tell that he had that exact app running on his phone. Not just installed but running in the background.
https://apps.apple.com/se/app/teoriprov-f%C3%B6r-j%C3%A4garexamen/id1548547811
He took the test 2022-04-29 and was using the app version 1.0.8.
I'm not an iOS developer but I have done some experiments with disabling or bypassing SSL Pinning/Certificate Pinning on Android. In this case developers often used checks in the native layer as well as the Java layer to make it difficult to bypass. My guess is that they use low-level access to detect if a process is running or not.
https://security.stackexchange.com/questions/149325/disable-or-bypass-ssl-pinning-certificate-pinning-on-android-6-0-1
https://developer.apple.com/documentation/objectivec
Unfortunately I don't have more information than that. Next step could be contacting them and see if they are willing to share how they did it.
You could also read up on examination apps and classroom:
https://apps.apple.com/us/app/classroom/id1085319084
For Android you can check it like this:
https://stackoverflow.com/a/22503513/3850405

What are the default Apple URL schemes for the default apple apps?

I am trying to track down these URLs because I would like to integrate them with the Shortcuts (previously workflow) app. My end game is to make queries that will perform certain functions that I can call from a google home device. In simpler terms, I want to make google home more "Apple friendly."
I have not found anything that is too current out there on the URL schemes. I saw that sending a SMS message was triggered with sms://<PhoneNumber> , but I am not sure how up to date that information is.
I plan on adding features to search Apple Music (by triggering a workflow). I am also planning on adding text message features.
I am also looking into making an app for google home, but I still am in the learning stage with that. Any advice on making google home more Apple friendly would be greatly appreciated.
This is a constantly changing list given the number of features being added or third-party apps. Here's a list that does a good job of staying up-to-date: https://ios.gadgethacks.com/news/always-updated-list-ios-app-url-scheme-names-0184033/

FirebaseAnalytics: logging events to multiple projects

I need to send FirebaseAnalytics events to two separate accounts. I've tried working with pure GAI but it is not showing in Firebase console.
How could I do that?
here it is covered for Android, while on the Firebase console, it is exactly the same:
however, it might be better (unless the goal is to tell apart debug & release builds),
to tell apart by the CAMPAIGN and/or CAMPAIGN_DETAILS.
as the Firebase documentation for Reliable Analytics states:
If runtime configuration is required, please note the following caveats:
If you're using AdMob and request ads at startup as recommended, you may miss some Analytics data to related to mobile ads when not using the resource based configuration approach.
Only ever supply a single Google app ID in each distributed variant of your app. For example, if you ship version 1 of your app with a certain GOOGLE_APP_ID in the configuration then upload version 2 with a different ID, it may cause analytics data to be dropped.
On iOS, do not add GoogleService-Info.plist to your project if you are supplying different configuration at run time, as this can result in an apparent change of GOOGLE_APP_ID and result in lost Analytics.
also see Manage project members ...in order to grant access to another Google account.
telling apart by campaigns makes sense, because alike that one can have several campaigns, while being able to compare their performance - which one otherwise could not, at least not that directly.
You need to first configure two different apps in your project. Then you can log separately to each one of them.
More info here: https://firebase.google.com/docs/configure/#support_multiple_environments_in_your_ios_application
Answering my own question.
Judging by the documentation and heavy personal research: there is no legal (or without the black magic) way to split analytics data into two separate Firebase projects.
Quote:
Note: On Android and iOS, Analytics are only logged for the default app
And switching default app on the fly didn't work.
Therefore, our team has decided to acquire google analytics account as a second analytics channel which solves our needs.
Hope it will help someone.
P.S. If you need to split debug data from release data watch Martin's answer.

Where to find complete list of iOS app permissions?

Where to find complete list of iOS app permissions?
For android you may find a complete list of normal and dangerous permissions, which apps could use: https://developer.android.com/guide/topics/permissions/requesting.html
Of course I know the "dangerous" permissions of iOS, they are displayed in settings>privacy. But Im also interested in the normal settings which can not be influenced by user.
I think for developers there should be a list like that for android. Or ist the system working completely another way? So where could I learn about this?
Why am I asking? For my degree Im researching whether users now which data is collected in smart mobile devices. Therefore I need a reference.
This may be useful:
https://www.apple.com/business/docs/iOS_Security_Guide.pdf
Relevant post:
Complete list of iOS app permissions
The info.plist is where you can add keys for permissions when writing your iOS app. Here's the documentation for that:
https://developer.apple.com/library/content/documentation/General/Reference/InfoPlistKeyReference/Introduction/Introduction.html

How to work with Firebase App Indexing for IOS Apps

i am in the process of making my app with firebase i am pretty much done with that except Firebase App Indexing. I am very exited with this feature because it could help me to increase my app get more traffic from the web but the problem is i really can't able to see how to implement this. According to Firebase Docs i just need to register my app with this pice of code
[[FIRAppIndexing sharedInstance] registerApp:your Apple ID from iTunes Connect];
I have done that but what should i do after that?
1.My app is firebase app that means i don't have any website to host my content except firebase realtime database. Does my content is available for crawlers? if not how can i make available to them?
2.If i can able to show my content in the google search results i don't wanna show all the content and i wanna show just some of my content for example i have a social app for sharing General Knowledge questions, i wanna show just the question like "What is the highest mountain" in the search results and if the user want to see the answer it should take them to my app how can i do that?
3.As per docs i came to know that i need to create univiersal links for my app content to direct users from google search but how shold i do that ? Lets say should i crate universal links when the user create question?? if so how can i do that ??
Thank you very much for the help.
This is not currently possible on iOS using Firebase App Indexing. The situation is slightly different on Android, but that is not applicable to your question.
On iOS, Firebase App Indexing is simply highlighting pages on your website in Google search results that have corresponding content inside your app. This is achieved by piggybacking on Apple's Universal Links standard, and there is no proactive 'crawling' going on inside your app. This means unless you have a corresponding web page for your app with 1:1 content parity, you can't really benefit from Firebase App Indexing on iOS as it comes out-of-the-box.
The best workaround is to generate little 'placeholder pages' for every piece of content in your app, which the sole purpose of opening your app (if it is installed) or redirecting to the App Store (if it is not installed). Ideally you'll need some sort of deferred deep linking system so that users still see the correct content after downloading. Fun fact: this is essentially how HotelTonight operates their entire business model. Unfortunately Firebase's implementation is not mature enough to support this full flow, and Google hasn't quite figured out how to rank app-only content properly yet in search results so you will probably need to pro-actively submit your placeholder pages to them.
Shameless plug: at Branch, we provide all of the above as a free service. You can read more about it here and take a look at the set up docs here.

Resources