/* * Copyright @ 2018-present 8x8, Inc. * Copyright @ 2017-2018 Atlassian Pty Ltd * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #import "AppDelegate.h" #import "FIRUtilities.h" #import "Types.h" #import "ViewController.h" @import Crashlytics; @import Fabric; @import Firebase; @import JitsiMeet; @implementation AppDelegate - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { JitsiMeet *jitsiMeet = [JitsiMeet sharedInstance]; jitsiMeet.conferenceActivityType = JitsiMeetConferenceActivityType; jitsiMeet.customUrlScheme = @"org.jitsi.meet"; jitsiMeet.universalLinkDomains = @[@"meet.jit.si", @"alpha.jitsi.net", @"beta.meet.jit.si"]; jitsiMeet.defaultConferenceOptions = [JitsiMeetConferenceOptions fromBuilder:^(JitsiMeetConferenceOptionsBuilder *builder) { builder.serverURL = [NSURL URLWithString:@"https://meet.jit.si"]; builder.welcomePageEnabled = YES; // Apple rejected our app because they claim requiring a // Dropbox account for recording is not acceptable. #if DEBUG [builder setFeatureFlag:@"ios.recording.enabled" withBoolean:YES]; #endif }]; // Initialize Crashlytics and Firebase if a valid GoogleService-Info.plist file was provided. if ([FIRUtilities appContainsRealServiceInfoPlist] && ![jitsiMeet isCrashReportingDisabled]) { NSLog(@"Enabling Crashlytics and Firebase"); [FIRApp configure]; [Fabric with:@[[Crashlytics class]]]; } [jitsiMeet application:application didFinishLaunchingWithOptions:launchOptions]; return YES; } - (void) applicationWillTerminate:(UIApplication *)application { NSLog(@"Application will terminate!"); // Try to leave the current meeting graceefully. ViewController *rootController = (ViewController *)self.window.rootViewController; [rootController terminate]; } #pragma mark Linking delegate methods - (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray> *restorableObjects))restorationHandler { if ([FIRUtilities appContainsRealServiceInfoPlist]) { // 1. Attempt to handle Universal Links through Firebase in order to support // its Dynamic Links (which we utilize for the purposes of deferred deep // linking). BOOL handled = [[FIRDynamicLinks dynamicLinks] handleUniversalLink:userActivity.webpageURL completion:^(FIRDynamicLink * _Nullable dynamicLink, NSError * _Nullable error) { NSURL *firebaseUrl = [FIRUtilities extractURL:dynamicLink]; if (firebaseUrl != nil) { userActivity.webpageURL = firebaseUrl; [[JitsiMeet sharedInstance] application:application continueUserActivity:userActivity restorationHandler:restorationHandler]; } }]; if (handled) { return handled; } } // 2. Default to plain old, non-Firebase-assisted Universal Links. return [[JitsiMeet sharedInstance] application:application continueUserActivity:userActivity restorationHandler:restorationHandler]; } - (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary *)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; if ([FIRUtilities appContainsRealServiceInfoPlist]) { // Process Firebase Dynamic Links FIRDynamicLink *dynamicLink = [[FIRDynamicLinks dynamicLinks] dynamicLinkFromCustomSchemeURL:url]; NSURL *firebaseUrl = [FIRUtilities extractURL:dynamicLink]; if (firebaseUrl != nil) { openUrl = firebaseUrl; } } return [[JitsiMeet sharedInstance] application:app openURL:openUrl options:options]; } @end