firebase / firebase-ios-sdk

Firebase SDK for Apple App Development
https://firebase.google.com
Apache License 2.0
5.47k stars 1.43k forks source link

The `utmParametersDictionary` is empty for dynamic links created from a universal link #10341

Closed KyleXie closed 1 year ago

KyleXie commented 1 year ago

Description

For a dynamic link created from a custom url, everything works fine:

DynamicLinks.dynamicLinks().dynamicLink(fromCustomSchemeURL: url)

But for the same dynamic link which created from a universal link, the utmParametersDictionary is always empty:

DynamicLinks.dynamicLinks().dynamicLink(fromUniversalLink: url)

Reproducing the issue

let url  = "https://xxx.page.link/?link=xxx&utm_campaign=landing+page&utm_source=facebook"
let dynamicLink = DynamicLinks.dynamicLinks().dynamicLink(fromUniversalLink: url)

print(dynamicLink.utmParametersDictionary)

Firebase SDK Version

10.0.0

Xcode Version

14.0

Installation Method

Swift Package Manager

Firebase Product(s)

DynamicLinks

Targeted Platforms

iOS

Relevant Log Output

No response

If using Swift Package Manager, the project's Package.resolved

Expand Package.resolved snippet
```json { "pins" : [ { "identity" : "abseil-cpp-swiftpm", "kind" : "remoteSourceControl", "location" : "https://github.com/firebase/abseil-cpp-SwiftPM.git", "state" : { "revision" : "d302de612e3d57c6f4afaf087da18fba8eac72a7", "version" : "0.20220203.1" } }, { "identity" : "amplify-ios", "kind" : "remoteSourceControl", "location" : "https://github.com/aws-amplify/amplify-ios", "state" : { "revision" : "2855a92c961d1b548ede7ffb7470109ec329a0b8", "version" : "1.26.1" } }, { "identity" : "aws-appsync-realtime-client-ios", "kind" : "remoteSourceControl", "location" : "https://github.com/aws-amplify/aws-appsync-realtime-client-ios.git", "state" : { "revision" : "28f61d7ca362699941cc8844d34d082f1eb49602", "version" : "1.10.0" } }, { "identity" : "aws-mobile-appsync-sdk-ios", "kind" : "remoteSourceControl", "location" : "https://github.com/awslabs/aws-mobile-appsync-sdk-ios.git", "state" : { "revision" : "4cf6c7d05e00f63f6b6fe866444781c91019082a", "version" : "3.6.1" } }, { "identity" : "aws-sdk-ios-spm", "kind" : "remoteSourceControl", "location" : "https://github.com/aws-amplify/aws-sdk-ios-spm", "state" : { "revision" : "33ecff5497a9f3e582aeab51265617c64427f902", "version" : "2.27.12" } }, { "identity" : "boringssl-swiftpm", "kind" : "remoteSourceControl", "location" : "https://github.com/firebase/boringssl-SwiftPM.git", "state" : { "revision" : "79db6516894a932d0ddaff3b05b9da1e4f6c4069", "version" : "0.9.0" } }, { "identity" : "firebase-ios-sdk", "kind" : "remoteSourceControl", "location" : "https://github.com/firebase/firebase-ios-sdk", "state" : { "revision" : "5c4893c55f9d6114e2bb7c691d7ffd81208ac713", "version" : "10.0.0" } }, { "identity" : "flex", "kind" : "remoteSourceControl", "location" : "https://github.com/FLEXTool/FLEX.git", "state" : { "branch" : "master", "revision" : "f994346919475b59e7ce2689905aa8b0c31aa132" } }, { "identity" : "googleappmeasurement", "kind" : "remoteSourceControl", "location" : "https://github.com/google/GoogleAppMeasurement.git", "state" : { "revision" : "e3dd02f390cae79a7073b46dfb0cb6b60c48401b", "version" : "10.0.0" } }, { "identity" : "googledatatransport", "kind" : "remoteSourceControl", "location" : "https://github.com/google/GoogleDataTransport.git", "state" : { "revision" : "5056b15c5acbb90cd214fe4d6138bdf5a740e5a8", "version" : "9.2.0" } }, { "identity" : "googleutilities", "kind" : "remoteSourceControl", "location" : "https://github.com/google/GoogleUtilities.git", "state" : { "revision" : "68ea347bdb1a69e2d2ae2e25cd085b6ef92f64cb", "version" : "7.9.0" } }, { "identity" : "grpc-ios", "kind" : "remoteSourceControl", "location" : "https://github.com/grpc/grpc-ios.git", "state" : { "revision" : "2af4f6e9c2b18beae228f50b1198c641be859d2b", "version" : "1.44.2-grpc" } }, { "identity" : "gtm-session-fetcher", "kind" : "remoteSourceControl", "location" : "https://github.com/google/gtm-session-fetcher.git", "state" : { "revision" : "d4289da23e978f37c344ea6a386e5546e2466294", "version" : "2.1.0" } }, { "identity" : "iqkeyboardmanager", "kind" : "remoteSourceControl", "location" : "https://github.com/hackiftekhar/IQKeyboardManager.git", "state" : { "branch" : "master", "revision" : "0405da3cf8c646c6bdd4c2736d7dfba6cc218287" } }, { "identity" : "jwtdecode.swift", "kind" : "remoteSourceControl", "location" : "https://github.com/auth0/JWTDecode.swift.git", "state" : { "revision" : "3cd207fb9e943b6168a117baa3936c823204c2dc", "version" : "2.6.3" } }, { "identity" : "keychainaccess", "kind" : "remoteSourceControl", "location" : "https://github.com/kishikawakatsumi/KeychainAccess.git", "state" : { "revision" : "84e546727d66f1adc5439debad16270d0fdd04e7", "version" : "4.2.2" } }, { "identity" : "leveldb", "kind" : "remoteSourceControl", "location" : "https://github.com/firebase/leveldb.git", "state" : { "revision" : "0706abcc6b0bd9cedfbb015ba840e4a780b5159b", "version" : "1.22.2" } }, { "identity" : "nanopb", "kind" : "remoteSourceControl", "location" : "https://github.com/firebase/nanopb.git", "state" : { "revision" : "819d0a2173aff699fb8c364b6fb906f7cdb1a692", "version" : "2.30909.0" } }, { "identity" : "promises", "kind" : "remoteSourceControl", "location" : "https://github.com/google/promises.git", "state" : { "revision" : "46c1e6b5ac09d8f82c991061c659f67e573d425d", "version" : "2.1.0" } }, { "identity" : "reachability.swift", "kind" : "remoteSourceControl", "location" : "https://github.com/ashleymills/Reachability.swift.git", "state" : { "revision" : "c01bbdf2d633cf049ae1ed1a68a2020a8bda32e2", "version" : "5.1.0" } }, { "identity" : "realtime-notifications-ios", "kind" : "remoteSourceControl", "location" : "https://github.com/ZUJUGP/realtime-notifications-ios.git", "state" : { "revision" : "55101a4e27a2aab546ef5c49c2dc6356297f65e7" } }, { "identity" : "sdwebimage", "kind" : "remoteSourceControl", "location" : "https://github.com/SDWebImage/SDWebImage.git", "state" : { "revision" : "2e63d0061da449ad0ed130768d05dceb1496de44", "version" : "5.12.5" } }, { "identity" : "sqlite.swift", "kind" : "remoteSourceControl", "location" : "https://github.com/stephencelis/SQLite.swift.git", "state" : { "revision" : "5f5ad81ac0d0a0f3e56e39e646e8423c617df523", "version" : "0.13.2" } }, { "identity" : "starscream", "kind" : "remoteSourceControl", "location" : "https://github.com/daltoniam/Starscream", "state" : { "revision" : "df8d82047f6654d8e4b655d1b1525c64e1059d21", "version" : "4.0.4" } }, { "identity" : "swift-protobuf", "kind" : "remoteSourceControl", "location" : "https://github.com/apple/swift-protobuf.git", "state" : { "revision" : "e1499bc69b9040b29184f7f2996f7bab467c1639", "version" : "1.19.0" } }, { "identity" : "swifterswift", "kind" : "remoteSourceControl", "location" : "https://github.com/SwifterSwift/SwifterSwift", "state" : { "revision" : "dc813f3aa92f904a009fe543b99d5649dce7c134", "version" : "5.2.0" } }, { "identity" : "tinyconstraints", "kind" : "remoteSourceControl", "location" : "https://github.com/roberthein/TinyConstraints.git", "state" : { "revision" : "3262e5c591d4ab6272255df2087a01bbebd138dc", "version" : "4.0.2" } } ], "version" : 2 } ```

If using CocoaPods, the project's Podfile.lock

Expand Podfile.lock snippet
```yml Replace this line with the contents of your Podfile.lock! ```
google-oss-bot commented 1 year ago

I couldn't figure out how to label this issue, so I've labeled it for a human to triage. Hang tight.

rizafran commented 1 year ago

Thanks for reaching out, @KyleXie. Could you share a sample app that reproduces the issue?

KyleXie commented 1 year ago

Hey @rizafran, thanks for your reply.

Actually, you can see from the source code, for DynamicLinks.dynamicLinks().dynamicLink(fromUniversalLink: url), the parameters are not passed when creating a FIRDynamicLink.

          FIRDynamicLink *dynamicLink = [[FIRDynamicLink alloc]
              initWithParametersDictionary:@{kFIRDLParameterDeepLinkIdentifier : urlString}];

While for DynamicLinks.dynamicLinks().dynamicLink(fromCustomSchemeURL: url), the parameters are passed:

FIRDynamicLink *dynamicLink =
          [[FIRDynamicLink alloc] initWithParametersDictionary:parameters];
rizafran commented 1 year ago

Hi @KyleXie, I was able to reproduce the issue. I've also discussed this with the engineers, and it seems that the behavior you encountered is a bug. We'll provide a response here once we get updates. Thanks for raising this issue.