firebase-ios-sdk: Deferred dynamic link doesn't work with FirebaseDeepLinkPasteboardRetrievalEnabled set to FALSE

[REQUIRED] Step 1: Describe your environment

  • Xcode version: Version 13.4.1 (13F100)
  • Firebase SDK version: 9.0.0
  • Installation method: Zip file
  • Firebase Component: DynamicLinks
  • Target platform(s): iOS

[REQUIRED] Step 2: Describe the problem

Steps to reproduce:

  1. Open a dynamic link on safari
  2. As you don’t have the app installed yet you see the preview page
  3. Click on the “open” button which direct you to the store
  4. Install the Xcode build which disable PasteboardRetriaval with FirebaseDeepLinkPasteboardRetrievalEnabled: 0 in Info.plist

Notice that you don’t have pasteboard notice. Notice the request to https://firebasedynamiclinks.googleapi.com/v1 using a proxy tool.

  1. In the body of the request, we can see that no uniqueMatchLinkToCheck is provided (nothing retrieved from the pasteboard)
  2. Here is the response:
{
	"matchMessage": "No pre-install link matched for this device.",
	"requestIpVersion": "IP_V4"
}

Relevant Code:

The code is working perfectly well in case I keep the FirebaseDeepLinkPasteboardRetrievalEnabled set to true (access to pasteboard, linked matched an provided to the app).

While browsing Firebase Dynamic Link code, I notice this comment in the code: https://github.com/firebase/firebase-ios-sdk/blob/97aff9edf50601bd9ab39ea29c8b1e6e020efe80/FirebaseDynamicLinks/Sources/FIRDLDefaultRetrievalProcessV2.m#L142

Which would suggest that another request should be made using fingerprinting when there is no uniq match (which I believe is the case here). Does fingerprinting method still work on iOS 15 (was it relying on the IDFA which is not available at first app launch since iOS 14 ?)

Also, I’m trying to find the list of attributes Firebase uses for fingerprinting (request from my DPO to make sure we can rely on this matching method).

About this issue

  • Original URL
  • State: closed
  • Created 2 years ago
  • Reactions: 2
  • Comments: 36 (15 by maintainers)

Most upvoted comments

We have also come across this issue. We tested two devices side by side with the same privacy settings, works on one all the time while the match fails all the time on the other.

Then we realised that the device that was failing had the iCloud Private Relay activated. After turning it off and opening the dynamic link again, the match worked on a fresh install.

Hi, as per our testing and referring to this integration schemas for iOS, it appears that dynamic links over app install will not work without:

  • the preview page enabled (will not work if disabled, efr=1)
  • the clipboard retrieval enabled (will not work if disabled: FirebaseDeepLinkPasteboardRetrievalEnabled=0)

Firebase team, please can you confirm that understanding?

If this is not correct, please can you clarify what is the mechanism in place to pass the deep link over to the application?

I reproduce the issue with my production app and the project I created specifically for the QuickStart (on which I can invite you if you’d like).

On my end it’s the same behavior.

It might be something I’m doing wrong but I don’t see what… 😕

Here you go: dynamiclinks.zip

With the test link: https://testdfdl.page.link/ib87

(note that I used fake value for AppStore ID and Team ID to not share sensitive information about my app. I could in private message if needed. But I’m able to reproduce also with this MCVE, so it should be good).