123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131 |
- /*
- * 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 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 setFeatureFlag:@"resolution" withValue:@(360)];
- 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]) {
- NSLog(@"Enabling Firebase");
- [FIRApp configure];
- // Crashlytics defaults to disabled wirth the FirebaseCrashlyticsCollectionEnabled Info.plist key.
- [[FIRCrashlytics crashlytics] setCrashlyticsCollectionEnabled:![jitsiMeet isCrashReportingDisabled]];
- }
-
- ViewController *rootController = (ViewController *)self.window.rootViewController;
- [jitsiMeet showSplashScreen:rootController.view];
-
- [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<id<UIUserActivityRestoring>> *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<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;
-
- 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
|