Parcourir la source

ios: handle some corner cases with Firebase Dynamic Links

- handle some weird bug
(https://github.com/firebase/firebase-ios-sdk/issues/233)
- use a common function to extract the URL off a dynamic link
j8
Saúl Ibarra Corretgé il y a 6 ans
Parent
révision
85388b8d23
3 fichiers modifiés avec 31 ajouts et 11 suppressions
  1. 12
    11
      ios/app/src/AppDelegate.m
  2. 4
    0
      ios/app/src/FIRUtilities.h
  3. 15
    0
      ios/app/src/FIRUtilities.m

+ 12
- 11
ios/app/src/AppDelegate.m Voir le fichier

@@ -67,9 +67,9 @@
67 67
           = [[FIRDynamicLinks dynamicLinks]
68 68
                 handleUniversalLink:userActivity.webpageURL
69 69
                          completion:^(FIRDynamicLink * _Nullable dynamicLink, NSError * _Nullable error) {
70
-           NSURL *dynamicLinkURL = dynamicLink.url;
71
-           if (dynamicLinkURL) {
72
-             userActivity.webpageURL = dynamicLinkURL;
70
+           NSURL *firebaseUrl = [FIRUtilities extractURL:dynamicLink];
71
+           if (firebaseUrl != nil) {
72
+             userActivity.webpageURL = firebaseUrl;
73 73
              [[JitsiMeet sharedInstance] application:application
74 74
                                 continueUserActivity:userActivity
75 75
                                   restorationHandler:restorationHandler];
@@ -91,19 +91,20 @@
91 91
             openURL:(NSURL *)url
92 92
             options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {
93 93
 
94
+    // This shows up during a reload in development, skip it.
95
+    // https://github.com/firebase/firebase-ios-sdk/issues/233
96
+    if ([[url absoluteString] containsString:@"google/link/?dismiss=1&is_weak_match=1"]) {
97
+        return NO;
98
+    }
99
+
94 100
     NSURL *openUrl = url;
95 101
 
96 102
     if ([FIRUtilities appContainsRealServiceInfoPlist]) {
97 103
         // Process Firebase Dynamic Links
98 104
         FIRDynamicLink *dynamicLink = [[FIRDynamicLinks dynamicLinks] dynamicLinkFromCustomSchemeURL:url];
99
-        if (dynamicLink != nil) {
100
-            NSURL *dynamicLinkURL = dynamicLink.url;
101
-            if (dynamicLinkURL != nil
102
-                    && (dynamicLink.matchType == FIRDLMatchTypeUnique
103
-                        || dynamicLink.matchType == FIRDLMatchTypeDefault)) {
104
-                // Strong match, process it.
105
-                openUrl = dynamicLinkURL;
106
-            }
105
+        NSURL *firebaseUrl = [FIRUtilities extractURL:dynamicLink];
106
+        if (firebaseUrl != nil) {
107
+            openUrl = firebaseUrl;
107 108
         }
108 109
     }
109 110
 

+ 4
- 0
ios/app/src/FIRUtilities.h Voir le fichier

@@ -16,8 +16,12 @@
16 16
 
17 17
 #import <Foundation/Foundation.h>
18 18
 
19
+@import Firebase;
20
+
21
+
19 22
 @interface FIRUtilities : NSObject
20 23
 
21 24
 + (BOOL)appContainsRealServiceInfoPlist;
25
++ (NSURL *_Nullable)extractURL: (FIRDynamicLink* _Nullable)dynamicLink;
22 26
 
23 27
 @end

+ 15
- 0
ios/app/src/FIRUtilities.m Voir le fichier

@@ -61,4 +61,19 @@ NSString *const kGoogleAppIDPlistKey = @"GOOGLE_APP_ID";
61 61
   return YES;
62 62
 }
63 63
 
64
++ (NSURL *)extractURL: (FIRDynamicLink*)dynamicLink {
65
+  NSURL *url = nil;
66
+  if (dynamicLink != nil) {
67
+    NSURL *dynamicLinkURL = dynamicLink.url;
68
+    if (dynamicLinkURL != nil
69
+        && (dynamicLink.matchType == FIRDLMatchTypeUnique
70
+            || dynamicLink.matchType == FIRDLMatchTypeDefault)) {
71
+          // Strong match, process it.
72
+          url = dynamicLinkURL;
73
+        }
74
+  }
75
+
76
+  return url;
77
+}
78
+
64 79
 @end

Chargement…
Annuler
Enregistrer