diff --git a/.claude/agents/EXTERNAL-INTEGRATIONS.md b/.claude/agents/EXTERNAL-INTEGRATIONS.md
index ba13f26e16..99e437f945 100644
--- a/.claude/agents/EXTERNAL-INTEGRATIONS.md
+++ b/.claude/agents/EXTERNAL-INTEGRATIONS.md
@@ -27,24 +27,13 @@ DSTransaction *transaction = [wallet transactionForAmounts:amounts
```
### Firebase Services
-**Dependencies**: `Firebase/DynamicLinks`, `FirebaseStorage`
+**Dependencies**: `Firebase/CoreOnly`, `FirebaseStorage`
**Configuration**: `GoogleService-Info.plist`
-**Dynamic Links Integration:**
-```swift
-// Handle incoming dynamic links
-func application(_ app: UIApplication,
- open url: URL,
- options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
-
- if let dynamicLink = DynamicLinks.dynamicLinks().dynamicLink(fromCustomSchemeURL: url) {
- handleDynamicLink(dynamicLink)
- return true
- }
-
- return false
-}
-```
+Firebase Dynamic Links was removed (the service was shut down by Google in
+August 2025 and nothing in the app used it). Invitation universal links are
+routed directly in `AppDelegate continueUserActivity:` via
+`DWInvitationLinkNormalizer`.
**Storage Integration:**
- Profile image storage for DashPay
diff --git a/DashPay/dashpay-info.plist b/DashPay/dashpay-info.plist
index ca87955939..50c478699a 100644
--- a/DashPay/dashpay-info.plist
+++ b/DashPay/dashpay-info.plist
@@ -110,12 +110,6 @@
CFBundleVersion
$(CURRENT_PROJECT_VERSION)
- FirebaseDeepLinkPasteboardRetrievalEnabled
-
- FirebaseDynamicLinksCustomDomains
-
- https://invitations.dashpay.io/link
-
ITSAppUsesNonExemptEncryption
LSApplicationQueriesSchemes
diff --git a/DashWallet.xcodeproj/project.pbxproj b/DashWallet.xcodeproj/project.pbxproj
index 7e7016a4b4..b7707cb090 100644
--- a/DashWallet.xcodeproj/project.pbxproj
+++ b/DashWallet.xcodeproj/project.pbxproj
@@ -11803,7 +11803,6 @@
"-l\"DWAlertController\"",
"-l\"FirebaseCore\"",
"-l\"FirebaseCoreDiagnostics\"",
- "-l\"FirebaseDynamicLinks\"",
"-l\"FirebaseStorage\"",
"-l\"GTMSessionFetcher\"",
"-l\"GoogleDataTransport\"",
@@ -11933,7 +11932,6 @@
"-l\"DWAlertController\"",
"-l\"FirebaseCore\"",
"-l\"FirebaseCoreDiagnostics\"",
- "-l\"FirebaseDynamicLinks\"",
"-l\"FirebaseStorage\"",
"-l\"GTMSessionFetcher\"",
"-l\"GoogleDataTransport\"",
@@ -12272,7 +12270,6 @@
"-l\"DWAlertController\"",
"-l\"FirebaseCore\"",
"-l\"FirebaseCoreDiagnostics\"",
- "-l\"FirebaseDynamicLinks\"",
"-l\"FirebaseStorage\"",
"-l\"GTMSessionFetcher\"",
"-l\"GoogleDataTransport\"",
@@ -12391,7 +12388,6 @@
"-l\"DWAlertController\"",
"-l\"FirebaseCore\"",
"-l\"FirebaseCoreDiagnostics\"",
- "-l\"FirebaseDynamicLinks\"",
"-l\"FirebaseStorage\"",
"-l\"GTMSessionFetcher\"",
"-l\"GoogleDataTransport\"",
@@ -12521,7 +12517,6 @@
"-l\"DWAlertController\"",
"-l\"FirebaseCore\"",
"-l\"FirebaseCoreDiagnostics\"",
- "-l\"FirebaseDynamicLinks\"",
"-l\"FirebaseStorage\"",
"-l\"GTMSessionFetcher\"",
"-l\"GoogleDataTransport\"",
@@ -12650,7 +12645,6 @@
"-l\"DWAlertController\"",
"-l\"FirebaseCore\"",
"-l\"FirebaseCoreDiagnostics\"",
- "-l\"FirebaseDynamicLinks\"",
"-l\"FirebaseStorage\"",
"-l\"GTMSessionFetcher\"",
"-l\"GoogleDataTransport\"",
@@ -12841,7 +12835,6 @@
"-l\"DWAlertController\"",
"-l\"FirebaseCore\"",
"-l\"FirebaseCoreDiagnostics\"",
- "-l\"FirebaseDynamicLinks\"",
"-l\"FirebaseStorage\"",
"-l\"GTMSessionFetcher\"",
"-l\"GoogleDataTransport\"",
@@ -13138,7 +13131,6 @@
"-l\"DWAlertController\"",
"-l\"FirebaseCore\"",
"-l\"FirebaseCoreDiagnostics\"",
- "-l\"FirebaseDynamicLinks\"",
"-l\"FirebaseStorage\"",
"-l\"GTMSessionFetcher\"",
"-l\"GoogleDataTransport\"",
diff --git a/DashWallet/AppDelegate.m b/DashWallet/AppDelegate.m
index b0616620c8..b912345efc 100644
--- a/DashWallet/AppDelegate.m
+++ b/DashWallet/AppDelegate.m
@@ -270,10 +270,6 @@ - (BOOL)application:(UIApplication *)application
return NO;
}
- if ([DWURLParser shouldIgnoreURL:url]) {
- return NO;
- }
-
if (![DWURLParser canHandleURL:url]) {
UIAlertController * alert = [UIAlertController
alertControllerWithTitle:NSLocalizedString(@"Not a Dash URL", nil)
diff --git a/DashWallet/Sources/Models/URL Handling/DWURLParser.h b/DashWallet/Sources/Models/URL Handling/DWURLParser.h
index 56c7ea69f7..8333de8786 100644
--- a/DashWallet/Sources/Models/URL Handling/DWURLParser.h
+++ b/DashWallet/Sources/Models/URL Handling/DWURLParser.h
@@ -23,7 +23,6 @@ NS_ASSUME_NONNULL_BEGIN
@interface DWURLParser : NSObject
-+ (BOOL)shouldIgnoreURL:(NSURL *)url;
+ (BOOL)allowsURLHandling;
+ (BOOL)canHandleURL:(NSURL *)url;
diff --git a/DashWallet/Sources/Models/URL Handling/DWURLParser.m b/DashWallet/Sources/Models/URL Handling/DWURLParser.m
index ced61005f0..81cf9bccfc 100644
--- a/DashWallet/Sources/Models/URL Handling/DWURLParser.m
+++ b/DashWallet/Sources/Models/URL Handling/DWURLParser.m
@@ -23,19 +23,6 @@
@implementation DWURLParser
-+ (BOOL)shouldIgnoreURL:(NSURL *)url {
- if ([url.host isEqualToString:@"google"]) {
- NSURLComponents *components = [NSURLComponents componentsWithURL:url resolvingAgainstBaseURL:NO];
- for (NSURLQueryItem *item in components.queryItems) {
- if ([item.name isEqual:@"match_message"]) {
- return [item.value isEqualToString:@"No pre-install link matched for this device."];
- }
- }
- }
-
- return NO;
-}
-
+ (BOOL)allowsURLHandling {
// Don't allow URL handling without a wallet
return DWWalletEnvironment.hasWallet;
diff --git a/Podfile b/Podfile
index 7caeca8fe8..0526952149 100644
--- a/Podfile
+++ b/Podfile
@@ -11,7 +11,11 @@ target 'dashwallet' do
pod 'SQLiteMigrationManager.swift', '0.8.3'
pod 'CloudInAppMessaging', '0.1.0'
pod 'FirebaseStorage', '8.15.0'
- pod 'Firebase/DynamicLinks'
+ # CoreOnly provides the `Firebase` umbrella module (Firebase.h + its module
+ # map) that `@import Firebase` / `import Firebase` resolve against. It used to
+ # arrive implicitly as a dependency of Firebase/DynamicLinks; that subspec was
+ # removed, so depend on it directly.
+ pod 'Firebase/CoreOnly', '8.15.0'
pod 'SSZipArchive'
pod 'KVO-MVVM', '0.5.6'
pod 'UIViewController-KeyboardAdditions', '1.2.1'
@@ -38,7 +42,11 @@ target 'dashpay' do
pod 'SQLiteMigrationManager.swift', '0.8.3'
pod 'CloudInAppMessaging', '0.1.0'
pod 'FirebaseStorage', '8.15.0'
- pod 'Firebase/DynamicLinks'
+ # CoreOnly provides the `Firebase` umbrella module (Firebase.h + its module
+ # map) that `@import Firebase` / `import Firebase` resolve against. It used to
+ # arrive implicitly as a dependency of Firebase/DynamicLinks; that subspec was
+ # removed, so depend on it directly.
+ pod 'Firebase/CoreOnly', '8.15.0'
pod 'SSZipArchive'
pod 'KVO-MVVM', '0.5.6'
pod 'UIViewController-KeyboardAdditions', '1.2.1'
diff --git a/Podfile.lock b/Podfile.lock
index d3d7c600a5..5709e1f563 100644
--- a/Podfile.lock
+++ b/Podfile.lock
@@ -11,9 +11,6 @@ PODS:
- DWAlertController (0.2.1)
- Firebase/CoreOnly (8.15.0):
- FirebaseCore (= 8.15.0)
- - Firebase/DynamicLinks (8.15.0):
- - Firebase/CoreOnly
- - FirebaseDynamicLinks (~> 8.15.0)
- FirebaseCore (8.15.0):
- FirebaseCoreDiagnostics (~> 8.0)
- GoogleUtilities/Environment (~> 7.7)
@@ -23,8 +20,6 @@ PODS:
- GoogleUtilities/Environment (~> 7.7)
- GoogleUtilities/Logger (~> 7.7)
- nanopb (~> 2.30908.0)
- - FirebaseDynamicLinks (8.15.0):
- - FirebaseCore (~> 8.0)
- FirebaseStorage (8.15.0):
- FirebaseCore (~> 8.0)
- GTMSessionFetcher/Core (~> 1.5)
@@ -85,7 +80,7 @@ DEPENDENCIES:
- CocoaLumberjack (= 3.7.2)
- DSDynamicOptions (= 0.1.2)
- DWAlertController (= 0.2.1)
- - Firebase/DynamicLinks
+ - Firebase/CoreOnly (= 8.15.0)
- FirebaseStorage (= 8.15.0)
- KVO-MVVM (= 0.5.6)
- MBProgressHUD (= 1.1.0)
@@ -113,7 +108,6 @@ SPEC REPOS:
- Firebase
- FirebaseCore
- FirebaseCoreDiagnostics
- - FirebaseDynamicLinks
- FirebaseStorage
- GoogleDataTransport
- GoogleUtilities
@@ -157,7 +151,6 @@ SPEC CHECKSUMS:
Firebase: 5f8193dff4b5b7c5d5ef72ae54bb76c08e2b841d
FirebaseCore: 5743c5785c074a794d35f2fff7ecc254a91e08b1
FirebaseCoreDiagnostics: 92e07a649aeb66352b319d43bdd2ee3942af84cb
- FirebaseDynamicLinks: 1dc816ef789c5adac6fede0b46d11478175c70e4
FirebaseStorage: 8019af461599b2c3bc61c6a5dbdfa3d2de66a4d9
GoogleDataTransport: 6c09b596d841063d76d4288cc2d2f42cc36e1e2a
GoogleUtilities: ea963c370a38a8069cc5f7ba4ca849a60b6d7d15
@@ -180,6 +173,6 @@ SPEC CHECKSUMS:
TOCropViewController: edfd4f25713d56905ad1e0b9f5be3fbe0f59c863
UIViewController-KeyboardAdditions: a691dc7e63a49854d341455a778ee8497dfc4662
-PODFILE CHECKSUM: 84531d88878e65f6868b95dff3cc1ce6aa4b22d8
+PODFILE CHECKSUM: ff8162523641779b8eeee0429cf75257fb69713b
COCOAPODS: 1.15.2