You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

AppDelegate.m 5.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  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. #import "AppDelegate.h"
  18. #import "FIRUtilities.h"
  19. #import "Types.h"
  20. #import "ViewController.h"
  21. @import Firebase;
  22. @import JitsiMeet;
  23. @implementation AppDelegate
  24. - (BOOL)application:(UIApplication *)application
  25. didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  26. JitsiMeet *jitsiMeet = [JitsiMeet sharedInstance];
  27. jitsiMeet.conferenceActivityType = JitsiMeetConferenceActivityType;
  28. jitsiMeet.customUrlScheme = @"org.jitsi.meet";
  29. jitsiMeet.universalLinkDomains = @[@"meet.jit.si", @"alpha.jitsi.net", @"beta.meet.jit.si"];
  30. jitsiMeet.defaultConferenceOptions = [JitsiMeetConferenceOptions fromBuilder:^(JitsiMeetConferenceOptionsBuilder *builder) {
  31. [builder setFeatureFlag:@"resolution" withValue:@(360)];
  32. builder.serverURL = [NSURL URLWithString:@"https://meet.jit.si"];
  33. builder.welcomePageEnabled = YES;
  34. // Apple rejected our app because they claim requiring a
  35. // Dropbox account for recording is not acceptable.
  36. #if DEBUG
  37. [builder setFeatureFlag:@"ios.recording.enabled" withBoolean:YES];
  38. #endif
  39. }];
  40. // Initialize Crashlytics and Firebase if a valid GoogleService-Info.plist file was provided.
  41. if ([FIRUtilities appContainsRealServiceInfoPlist]) {
  42. NSLog(@"Enabling Firebase");
  43. [FIRApp configure];
  44. // Crashlytics defaults to disabled wirth the FirebaseCrashlyticsCollectionEnabled Info.plist key.
  45. [[FIRCrashlytics crashlytics] setCrashlyticsCollectionEnabled:![jitsiMeet isCrashReportingDisabled]];
  46. }
  47. ViewController *rootController = (ViewController *)self.window.rootViewController;
  48. [jitsiMeet showSplashScreen:rootController.view];
  49. [jitsiMeet application:application didFinishLaunchingWithOptions:launchOptions];
  50. return YES;
  51. }
  52. - (void) applicationWillTerminate:(UIApplication *)application {
  53. NSLog(@"Application will terminate!");
  54. // Try to leave the current meeting graceefully.
  55. ViewController *rootController = (ViewController *)self.window.rootViewController;
  56. [rootController terminate];
  57. }
  58. #pragma mark Linking delegate methods
  59. - (BOOL)application:(UIApplication *)application
  60. continueUserActivity:(NSUserActivity *)userActivity
  61. restorationHandler:(void (^)(NSArray<id<UIUserActivityRestoring>> *restorableObjects))restorationHandler {
  62. if ([FIRUtilities appContainsRealServiceInfoPlist]) {
  63. // 1. Attempt to handle Universal Links through Firebase in order to support
  64. // its Dynamic Links (which we utilize for the purposes of deferred deep
  65. // linking).
  66. BOOL handled
  67. = [[FIRDynamicLinks dynamicLinks]
  68. handleUniversalLink:userActivity.webpageURL
  69. completion:^(FIRDynamicLink * _Nullable dynamicLink, NSError * _Nullable error) {
  70. NSURL *firebaseUrl = [FIRUtilities extractURL:dynamicLink];
  71. if (firebaseUrl != nil) {
  72. userActivity.webpageURL = firebaseUrl;
  73. [[JitsiMeet sharedInstance] application:application
  74. continueUserActivity:userActivity
  75. restorationHandler:restorationHandler];
  76. }
  77. }];
  78. if (handled) {
  79. return handled;
  80. }
  81. }
  82. // 2. Default to plain old, non-Firebase-assisted Universal Links.
  83. return [[JitsiMeet sharedInstance] application:application
  84. continueUserActivity:userActivity
  85. restorationHandler:restorationHandler];
  86. }
  87. - (BOOL)application:(UIApplication *)app
  88. openURL:(NSURL *)url
  89. options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {
  90. // This shows up during a reload in development, skip it.
  91. // https://github.com/firebase/firebase-ios-sdk/issues/233
  92. if ([[url absoluteString] containsString:@"google/link/?dismiss=1&is_weak_match=1"]) {
  93. return NO;
  94. }
  95. NSURL *openUrl = url;
  96. if ([FIRUtilities appContainsRealServiceInfoPlist]) {
  97. // Process Firebase Dynamic Links
  98. FIRDynamicLink *dynamicLink = [[FIRDynamicLinks dynamicLinks] dynamicLinkFromCustomSchemeURL:url];
  99. NSURL *firebaseUrl = [FIRUtilities extractURL:dynamicLink];
  100. if (firebaseUrl != nil) {
  101. openUrl = firebaseUrl;
  102. }
  103. }
  104. return [[JitsiMeet sharedInstance] application:app
  105. openURL:openUrl
  106. options:options];
  107. }
  108. @end