"Fossies" - the Fresh Open Source Software Archive

Member "jitsi-meet-7547/ios/app/src/AppDelegate.m" (25 Sep 2023, 5388 Bytes) of package /linux/misc/jitsi-meet-7547.tar.gz:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) Matlab source code syntax highlighting (style: standard) with prefixed line numbers. Alternatively you can here view or download the uninterpreted source code file.

    1 /*
    2  * Copyright @ 2018-present 8x8, Inc.
    3  * Copyright @ 2017-2018 Atlassian Pty Ltd
    4  *
    5  * Licensed under the Apache License, Version 2.0 (the "License");
    6  * you may not use this file except in compliance with the License.
    7  * You may obtain a copy of the License at
    8  *
    9  *     http://www.apache.org/licenses/LICENSE-2.0
   10  *
   11  * Unless required by applicable law or agreed to in writing, software
   12  * distributed under the License is distributed on an "AS IS" BASIS,
   13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   14  * See the License for the specific language governing permissions and
   15  * limitations under the License.
   16  */
   17 
   18 #import "AppDelegate.h"
   19 #import "FIRUtilities.h"
   20 #import "Types.h"
   21 #import "ViewController.h"
   22 
   23 @import Firebase;
   24 @import JitsiMeetSDK;
   25 
   26 @implementation AppDelegate
   27 
   28 -             (BOOL)application:(UIApplication *)application
   29   didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
   30     JitsiMeet *jitsiMeet = [JitsiMeet sharedInstance];
   31 
   32     jitsiMeet.conferenceActivityType = JitsiMeetConferenceActivityType;
   33     jitsiMeet.customUrlScheme = @"org.jitsi.meet";
   34     jitsiMeet.universalLinkDomains = @[@"meet.jit.si", @"alpha.jitsi.net", @"beta.meet.jit.si"];
   35 
   36     jitsiMeet.defaultConferenceOptions = [JitsiMeetConferenceOptions fromBuilder:^(JitsiMeetConferenceOptionsBuilder *builder) {
   37         [builder setFeatureFlag:@"welcomepage.enabled" withBoolean:YES];
   38         [builder setFeatureFlag:@"resolution" withValue:@(360)];
   39         [builder setFeatureFlag:@"ios.screensharing.enabled" withBoolean:YES];
   40         [builder setFeatureFlag:@"ios.recording.enabled" withBoolean:YES];
   41         builder.serverURL = [NSURL URLWithString:@"https://meet.jit.si"];
   42     }];
   43 
   44   [jitsiMeet application:application didFinishLaunchingWithOptions:launchOptions];
   45 
   46     // Initialize Crashlytics and Firebase if a valid GoogleService-Info.plist file was provided.
   47   if ([FIRUtilities appContainsRealServiceInfoPlist]) {
   48         NSLog(@"Enabling Firebase");
   49         [FIRApp configure];
   50         // Crashlytics defaults to disabled with the FirebaseCrashlyticsCollectionEnabled Info.plist key.
   51         [[FIRCrashlytics crashlytics] setCrashlyticsCollectionEnabled:![jitsiMeet isCrashReportingDisabled]];
   52     }
   53 
   54     ViewController *rootController = (ViewController *)self.window.rootViewController;
   55     [jitsiMeet showSplashScreen:rootController.view];
   56 
   57     return YES;
   58 }
   59 
   60 - (void) applicationWillTerminate:(UIApplication *)application {
   61     NSLog(@"Application will terminate!");
   62     // Try to leave the current meeting graceefully.
   63     ViewController *rootController = (ViewController *)self.window.rootViewController;
   64     [rootController terminate];
   65 }
   66 
   67 #pragma mark Linking delegate methods
   68 
   69 -    (BOOL)application:(UIApplication *)application
   70   continueUserActivity:(NSUserActivity *)userActivity
   71     restorationHandler:(void (^)(NSArray<id<UIUserActivityRestoring>> *restorableObjects))restorationHandler {
   72 
   73     if ([FIRUtilities appContainsRealServiceInfoPlist]) {
   74         // 1. Attempt to handle Universal Links through Firebase in order to support
   75         //    its Dynamic Links (which we utilize for the purposes of deferred deep
   76         //    linking).
   77         BOOL handled
   78           = [[FIRDynamicLinks dynamicLinks]
   79                 handleUniversalLink:userActivity.webpageURL
   80                          completion:^(FIRDynamicLink * _Nullable dynamicLink, NSError * _Nullable error) {
   81            NSURL *firebaseUrl = [FIRUtilities extractURL:dynamicLink];
   82            if (firebaseUrl != nil) {
   83              userActivity.webpageURL = firebaseUrl;
   84              [[JitsiMeet sharedInstance] application:application
   85                                 continueUserActivity:userActivity
   86                                   restorationHandler:restorationHandler];
   87            }
   88         }];
   89 
   90         if (handled) {
   91           return handled;
   92         }
   93     }
   94 
   95     // 2. Default to plain old, non-Firebase-assisted Universal Links.
   96     return [[JitsiMeet sharedInstance] application:application
   97                               continueUserActivity:userActivity
   98                                 restorationHandler:restorationHandler];
   99 }
  100 
  101 - (BOOL)application:(UIApplication *)app
  102             openURL:(NSURL *)url
  103             options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {
  104 
  105     // This shows up during a reload in development, skip it.
  106     // https://github.com/firebase/firebase-ios-sdk/issues/233
  107     if ([[url absoluteString] containsString:@"google/link/?dismiss=1&is_weak_match=1"]) {
  108         return NO;
  109     }
  110 
  111     NSURL *openUrl = url;
  112 
  113     if ([FIRUtilities appContainsRealServiceInfoPlist]) {
  114         // Process Firebase Dynamic Links
  115         FIRDynamicLink *dynamicLink = [[FIRDynamicLinks dynamicLinks] dynamicLinkFromCustomSchemeURL:url];
  116         NSURL *firebaseUrl = [FIRUtilities extractURL:dynamicLink];
  117         if (firebaseUrl != nil) {
  118             openUrl = firebaseUrl;
  119         }
  120     }
  121 
  122     return [[JitsiMeet sharedInstance] application:app
  123                                            openURL:openUrl
  124                                            options:options];
  125 }
  126 
  127 - (UIInterfaceOrientationMask)application:(UIApplication *)application
  128   supportedInterfaceOrientationsForWindow:(UIWindow *)window {
  129     return [[JitsiMeet sharedInstance] application:application 
  130            supportedInterfaceOrientationsForWindow:window];
  131 }
  132 
  133 @end