ios: add ability to control deep / universal linking

Since the SDK may be embedded with other apps, we need to recognize our custom
URL scheme and universal links in order to tell the user if we will process the
request or not.

Make them configurable with sane defaults.
This commit is contained in:
Saúl Ibarra Corretgé 2019-01-30 16:31:30 +01:00 committed by Saúl Ibarra Corretgé
parent 405905be82
commit f3abca6462
3 changed files with 24 additions and 3 deletions

View File

@ -37,9 +37,10 @@
[Fabric with:@[[Crashlytics class]]];
}
// Set the conference activity type defined in this application.
// This cannot be defined by the SDK.
[JitsiMeet sharedInstance].conferenceActivityType = JitsiMeetConferenceActivityType;
[JitsiMeet sharedInstance].customUrlScheme = @"org.jitsi.meet";
[JitsiMeet sharedInstance].universalLinkDomains = @[@"meet.jit.si", @"beta.meet.jit.si"];
[[JitsiMeet sharedInstance] application:application didFinishLaunchingWithOptions:launchOptions];
return YES;

View File

@ -18,9 +18,12 @@
#import <JitsiMeet/JitsiMeetView.h>
#import <JitsiMeet/JitsiMeetViewDelegate.h>
@interface JitsiMeet : NSObject
@property (copy, nonatomic, nullable) NSString *conferenceActivityType;
@property (copy, nonatomic, nullable) NSString *customUrlScheme;
@property (copy, nonatomic, nullable) NSArray<NSString *> *universalLinkDomains;
#pragma mak - This class is a singleton

View File

@ -91,6 +91,10 @@
return YES;
}
if (![_customUrlScheme isEqualToString:url.scheme]) {
return NO;
}
return [JitsiMeetView loadURLInViews:@{ @"url" : url.absoluteString }];
}
@ -118,7 +122,10 @@
if ([activityType isEqualToString:NSUserActivityTypeBrowsingWeb]) {
// App was started by opening a URL in the browser
return @{ @"url" : userActivity.webpageURL.absoluteString };
NSURL *url = userActivity.webpageURL;
if ([_universalLinkDomains containsObject:url.host]) {
return @{ @"url" : url.absoluteString };
}
} else if ([activityType isEqualToString:@"INStartAudioCallIntent"]
|| [activityType isEqualToString:@"INStartVideoCallIntent"]) {
// App was started by a CallKit Intent
@ -152,6 +159,16 @@
return nil;
}
#pragma mark - Property getter / setters
- (NSString *)customUrlScheme {
return _customUrlScheme ? _customUrlScheme : @"org.jitsi.meet";
}
- (NSArray<NSString *> *)universalLinkDomains {
return _universalLinkDomains ? _universalLinkDomains : @[@"meet.jit.si"];
}
#pragma mark - Private API methods
- (RCTBridge *)getReactBridge {