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
This commit is contained in:
parent
33f133ac25
commit
85388b8d23
|
@ -67,9 +67,9 @@
|
||||||
= [[FIRDynamicLinks dynamicLinks]
|
= [[FIRDynamicLinks dynamicLinks]
|
||||||
handleUniversalLink:userActivity.webpageURL
|
handleUniversalLink:userActivity.webpageURL
|
||||||
completion:^(FIRDynamicLink * _Nullable dynamicLink, NSError * _Nullable error) {
|
completion:^(FIRDynamicLink * _Nullable dynamicLink, NSError * _Nullable error) {
|
||||||
NSURL *dynamicLinkURL = dynamicLink.url;
|
NSURL *firebaseUrl = [FIRUtilities extractURL:dynamicLink];
|
||||||
if (dynamicLinkURL) {
|
if (firebaseUrl != nil) {
|
||||||
userActivity.webpageURL = dynamicLinkURL;
|
userActivity.webpageURL = firebaseUrl;
|
||||||
[[JitsiMeet sharedInstance] application:application
|
[[JitsiMeet sharedInstance] application:application
|
||||||
continueUserActivity:userActivity
|
continueUserActivity:userActivity
|
||||||
restorationHandler:restorationHandler];
|
restorationHandler:restorationHandler];
|
||||||
|
@ -91,19 +91,20 @@
|
||||||
openURL:(NSURL *)url
|
openURL:(NSURL *)url
|
||||||
options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {
|
options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {
|
||||||
|
|
||||||
|
// This shows up during a reload in development, skip it.
|
||||||
|
// https://github.com/firebase/firebase-ios-sdk/issues/233
|
||||||
|
if ([[url absoluteString] containsString:@"google/link/?dismiss=1&is_weak_match=1"]) {
|
||||||
|
return NO;
|
||||||
|
}
|
||||||
|
|
||||||
NSURL *openUrl = url;
|
NSURL *openUrl = url;
|
||||||
|
|
||||||
if ([FIRUtilities appContainsRealServiceInfoPlist]) {
|
if ([FIRUtilities appContainsRealServiceInfoPlist]) {
|
||||||
// Process Firebase Dynamic Links
|
// Process Firebase Dynamic Links
|
||||||
FIRDynamicLink *dynamicLink = [[FIRDynamicLinks dynamicLinks] dynamicLinkFromCustomSchemeURL:url];
|
FIRDynamicLink *dynamicLink = [[FIRDynamicLinks dynamicLinks] dynamicLinkFromCustomSchemeURL:url];
|
||||||
if (dynamicLink != nil) {
|
NSURL *firebaseUrl = [FIRUtilities extractURL:dynamicLink];
|
||||||
NSURL *dynamicLinkURL = dynamicLink.url;
|
if (firebaseUrl != nil) {
|
||||||
if (dynamicLinkURL != nil
|
openUrl = firebaseUrl;
|
||||||
&& (dynamicLink.matchType == FIRDLMatchTypeUnique
|
|
||||||
|| dynamicLink.matchType == FIRDLMatchTypeDefault)) {
|
|
||||||
// Strong match, process it.
|
|
||||||
openUrl = dynamicLinkURL;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -16,8 +16,12 @@
|
||||||
|
|
||||||
#import <Foundation/Foundation.h>
|
#import <Foundation/Foundation.h>
|
||||||
|
|
||||||
|
@import Firebase;
|
||||||
|
|
||||||
|
|
||||||
@interface FIRUtilities : NSObject
|
@interface FIRUtilities : NSObject
|
||||||
|
|
||||||
+ (BOOL)appContainsRealServiceInfoPlist;
|
+ (BOOL)appContainsRealServiceInfoPlist;
|
||||||
|
+ (NSURL *_Nullable)extractURL: (FIRDynamicLink* _Nullable)dynamicLink;
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
|
@ -61,4 +61,19 @@ NSString *const kGoogleAppIDPlistKey = @"GOOGLE_APP_ID";
|
||||||
return YES;
|
return YES;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
+ (NSURL *)extractURL: (FIRDynamicLink*)dynamicLink {
|
||||||
|
NSURL *url = nil;
|
||||||
|
if (dynamicLink != nil) {
|
||||||
|
NSURL *dynamicLinkURL = dynamicLink.url;
|
||||||
|
if (dynamicLinkURL != nil
|
||||||
|
&& (dynamicLink.matchType == FIRDLMatchTypeUnique
|
||||||
|
|| dynamicLink.matchType == FIRDLMatchTypeDefault)) {
|
||||||
|
// Strong match, process it.
|
||||||
|
url = dynamicLinkURL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return url;
|
||||||
|
}
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
Loading…
Reference in New Issue