diff --git a/android/app/build.gradle b/android/app/build.gradle index b460ecb7e2..1c749682db 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -83,10 +83,8 @@ dependencies { // Firebase // - Crashlytics - // - Dynamic Links implementation 'com.google.firebase:firebase-analytics:21.3.0' implementation 'com.google.firebase:firebase-crashlytics:18.4.3' - implementation 'com.google.firebase:firebase-dynamic-links:21.1.0' } implementation project(':sdk') diff --git a/android/app/src/main/java/org/jitsi/meet/GoogleServicesHelper.java b/android/app/src/main/java/org/jitsi/meet/GoogleServicesHelper.java index db73aa3ca2..4f80ce161f 100644 --- a/android/app/src/main/java/org/jitsi/meet/GoogleServicesHelper.java +++ b/android/app/src/main/java/org/jitsi/meet/GoogleServicesHelper.java @@ -4,7 +4,6 @@ import android.net.Uri; import android.util.Log; import com.google.firebase.crashlytics.FirebaseCrashlytics; -import com.google.firebase.dynamiclinks.FirebaseDynamicLinks; import org.jitsi.meet.sdk.JitsiMeet; import org.jitsi.meet.sdk.JitsiMeetActivity; @@ -22,18 +21,6 @@ final class GoogleServicesHelper { Log.d(activity.getClass().getSimpleName(), "Initializing Google Services"); FirebaseCrashlytics.getInstance().setCrashlyticsCollectionEnabled(!JitsiMeet.isCrashReportingDisabled(activity)); - FirebaseDynamicLinks.getInstance().getDynamicLink(activity.getIntent()) - .addOnSuccessListener(activity, pendingDynamicLinkData -> { - Uri dynamicLink = null; - - if (pendingDynamicLinkData != null) { - dynamicLink = pendingDynamicLinkData.getLink(); - } - - if (dynamicLink != null) { - activity.join(dynamicLink.toString()); - } - }); } } } diff --git a/config.js b/config.js index 318e61f1f9..bd7bbd2390 100644 --- a/config.js +++ b/config.js @@ -1269,9 +1269,6 @@ var config = { // disableDeepLinking: false, // The deeplinking config. - // For information about the properties of - // deeplinking.[ios/android].dynamicLink check: - // https://firebase.google.com/docs/dynamic-links/create-manually // deeplinking: { // // // The desktop deeplinking config, disabled by default. @@ -1300,13 +1297,6 @@ var config = { // appScheme: 'org.jitsi.meet', // // Custom URL for downloading ios mobile app. // downloadLink: 'https://itunes.apple.com/us/app/jitsi-meet/id1165103905', - // dynamicLink: { - // apn: 'org.jitsi.meet', - // appCode: 'w2atb', - // customDomain: undefined, - // ibi: 'com.atlassian.JitsiMeet.ios', - // isi: '1165103905' - // } // }, // // The android deeplinking config. @@ -1319,13 +1309,6 @@ var config = { // // Android app package name. // appPackage: 'org.jitsi.meet', // fDroidUrl: 'https://f-droid.org/en/packages/org.jitsi.meet/', - // dynamicLink: { - // apn: 'org.jitsi.meet', - // appCode: 'w2atb', - // customDomain: undefined, - // ibi: 'com.atlassian.JitsiMeet.ios', - // isi: '1165103905' - // } // } // }, diff --git a/interface_config.js b/interface_config.js index 07fa56d928..1e774b35aa 100644 --- a/interface_config.js +++ b/interface_config.js @@ -192,17 +192,6 @@ var interfaceConfig = { // NATIVE_APP_NAME: 'Jitsi Meet', - /** - * Specify Firebase dynamic link properties for the mobile apps. - */ - // MOBILE_DYNAMIC_LINK: { - // APN: 'org.jitsi.meet', - // APP_CODE: 'w2atb', - // CUSTOM_DOMAIN: undefined, - // IBI: 'com.atlassian.JitsiMeet.ios', - // ISI: '1165103905' - // }, - /** * Hide the logo on the deep linking pages. */ diff --git a/ios/Podfile b/ios/Podfile index 4c350da549..3c6478d2e3 100644 --- a/ios/Podfile +++ b/ios/Podfile @@ -19,7 +19,6 @@ target 'JitsiMeet' do pod 'Firebase/Analytics', '~> 8.0' pod 'Firebase/Crashlytics', '~> 8.0' - pod 'Firebase/DynamicLinks', '~> 8.0' end target 'JitsiMeetSDK' do diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 78c74d7358..0882ce5d3b 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -27,9 +27,6 @@ PODS: - Firebase/Crashlytics (8.15.0): - Firebase/CoreOnly - FirebaseCrashlytics (~> 8.15.0) - - Firebase/DynamicLinks (8.15.0): - - Firebase/CoreOnly - - FirebaseDynamicLinks (~> 8.15.0) - FirebaseAnalytics (8.15.0): - FirebaseAnalytics/AdIdSupport (= 8.15.0) - FirebaseCore (~> 8.0) @@ -64,8 +61,6 @@ PODS: - GoogleUtilities/Environment (~> 7.7) - nanopb (~> 2.30908.0) - PromisesObjC (< 3.0, >= 1.2) - - FirebaseDynamicLinks (8.15.0): - - FirebaseCore (~> 8.0) - FirebaseInstallations (8.15.0): - FirebaseCore (~> 8.0) - GoogleUtilities/Environment (~> 7.7) @@ -1798,7 +1793,6 @@ DEPENDENCIES: - FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`) - Firebase/Analytics (~> 8.0) - Firebase/Crashlytics (~> 8.0) - - Firebase/DynamicLinks (~> 8.0) - fmt (from `../node_modules/react-native/third-party-podspecs/fmt.podspec`) - "giphy-react-native-sdk (from `../node_modules/@giphy/react-native-sdk`)" - glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`) @@ -1898,7 +1892,6 @@ SPEC REPOS: - FirebaseCore - FirebaseCoreDiagnostics - FirebaseCrashlytics - - FirebaseDynamicLinks - FirebaseInstallations - Giphy - GoogleAppMeasurement @@ -2108,7 +2101,6 @@ SPEC CHECKSUMS: FirebaseCore: 5743c5785c074a794d35f2fff7ecc254a91e08b1 FirebaseCoreDiagnostics: 92e07a649aeb66352b319d43bdd2ee3942af84cb FirebaseCrashlytics: feb07e4e9187be3c23c6a846cce4824e5ce2dd0b - FirebaseDynamicLinks: 1dc816ef789c5adac6fede0b46d11478175c70e4 FirebaseInstallations: 40bd9054049b2eae9a2c38ef1c3dd213df3605cd fmt: 4c2741a687cc09f0634a2e2c72a838b99f1ff120 Giphy: 83628960ed04e1c3428ff1b4fb2b027f65e82f50 @@ -2209,6 +2201,6 @@ SPEC CHECKSUMS: SocketRocket: abac6f5de4d4d62d24e11868d7a2f427e0ef940d Yoga: 1dd9dabb9df8fe08f12cd522eae04a2da0e252eb -PODFILE CHECKSUM: 4f6abcf3cec0d9e8e1d5f5d81a35d99adde9ae45 +PODFILE CHECKSUM: 8ff981f2324fa4b013b6690257898dcd2be9d3c3 COCOAPODS: 1.16.2 diff --git a/ios/app/src/AppDelegate.swift b/ios/app/src/AppDelegate.swift index daa801d81f..ebaa4df641 100644 --- a/ios/app/src/AppDelegate.swift +++ b/ios/app/src/AppDelegate.swift @@ -54,19 +54,6 @@ class AppDelegate: UIResponder, UIApplicationDelegate { // MARK: Linking delegate methods func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool { - if self.appContainsRealServiceInfoPlist() { - let handled = DynamicLinks.dynamicLinks().handleUniversalLink(userActivity.webpageURL!) { dynamicLink, error in - if let firebaseUrl = self.extractURL(from: dynamicLink) { - userActivity.webpageURL = firebaseUrl - JitsiMeet.sharedInstance().application(application, continue: userActivity, restorationHandler: restorationHandler) - } - } - - if handled { - return handled - } - } - return JitsiMeet.sharedInstance().application(application, continue: userActivity, restorationHandler: restorationHandler) } @@ -75,16 +62,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate { return false } - var openUrl = url - - if self.appContainsRealServiceInfoPlist() { - if let dynamicLink = DynamicLinks.dynamicLinks().dynamicLink(fromCustomSchemeURL: url), - let firebaseUrl = self.extractURL(from: dynamicLink) { - openUrl = firebaseUrl - } - } - - return JitsiMeet.sharedInstance().application(app, open: openUrl, options: options) + return JitsiMeet.sharedInstance().application(app, open: url, options: options) } func application(_ application: UIApplication, supportedInterfaceOrientationsFor window: UIWindow?) -> UIInterfaceOrientationMask { @@ -97,13 +75,4 @@ extension AppDelegate { func appContainsRealServiceInfoPlist() -> Bool { return InfoPlistUtil.containsRealServiceInfoPlist(in: Bundle.main) } - - func extractURL(from dynamicLink: DynamicLink?) -> URL? { - guard let dynamicLink = dynamicLink, - let dynamicLinkURL = dynamicLink.url, - dynamicLink.matchType == .unique || dynamicLink.matchType == .default else { - return nil - } - return dynamicLinkURL - } } diff --git a/react/features/base/config/configType.ts b/react/features/base/config/configType.ts index bc746d2004..445bd67613 100644 --- a/react/features/base/config/configType.ts +++ b/react/features/base/config/configType.ts @@ -86,15 +86,6 @@ export type Sounds = 'ASKED_TO_UNMUTE_SOUND' | 'RECORDING_ON_SOUND' | 'TALK_WHILE_MUTED_SOUND'; - -export interface IMobileDynamicLink { - apn: string; - appCode: string; - customDomain?: string; - ibi: string; - isi: string; -} - export interface IDeeplinkingPlatformConfig { appName: string; appScheme: string; @@ -103,7 +94,6 @@ export interface IDeeplinkingPlatformConfig { export interface IDeeplinkingMobileConfig extends IDeeplinkingPlatformConfig { appPackage?: string; downloadLink: string; - dynamicLink?: IMobileDynamicLink; fDroidUrl?: string; } diff --git a/react/features/base/config/functions.web.ts b/react/features/base/config/functions.web.ts index b9446c343b..86fb4a5f2c 100644 --- a/react/features/base/config/functions.web.ts +++ b/react/features/base/config/functions.web.ts @@ -77,12 +77,6 @@ export function _setDeeplinkingDefaults(deeplinking: IDeeplinkingConfig) { ios.appScheme = ios.appScheme || 'org.jitsi.meet'; ios.downloadLink = ios.downloadLink || 'https://itunes.apple.com/us/app/jitsi-meet/id1165103905'; - if (ios.dynamicLink) { - ios.dynamicLink.apn = ios.dynamicLink.apn || 'org.jitsi.meet'; - ios.dynamicLink.appCode = ios.dynamicLink.appCode || 'w2atb'; - ios.dynamicLink.ibi = ios.dynamicLink.ibi || 'com.atlassian.JitsiMeet.ios'; - ios.dynamicLink.isi = ios.dynamicLink.isi || '1165103905'; - } android.appName = android.appName || 'Jitsi Meet'; android.appScheme = android.appScheme || 'org.jitsi.meet'; @@ -90,10 +84,4 @@ export function _setDeeplinkingDefaults(deeplinking: IDeeplinkingConfig) { || 'https://play.google.com/store/apps/details?id=org.jitsi.meet'; android.appPackage = android.appPackage || 'org.jitsi.meet'; android.fDroidUrl = android.fDroidUrl || 'https://f-droid.org/packages/org.jitsi.meet/'; - if (android.dynamicLink) { - android.dynamicLink.apn = android.dynamicLink.apn || 'org.jitsi.meet'; - android.dynamicLink.appCode = android.dynamicLink.appCode || 'w2atb'; - android.dynamicLink.ibi = android.dynamicLink.ibi || 'com.atlassian.JitsiMeet.ios'; - android.dynamicLink.isi = android.dynamicLink.isi || '1165103905'; - } } diff --git a/react/features/base/config/reducer.ts b/react/features/base/config/reducer.ts index 9702606578..7835e1d39a 100644 --- a/react/features/base/config/reducer.ts +++ b/react/features/base/config/reducer.ts @@ -18,8 +18,7 @@ import { IConfig, IDeeplinkingConfig, IDeeplinkingDesktopConfig, - IDeeplinkingMobileConfig, - IMobileDynamicLink + IDeeplinkingMobileConfig } from './configType'; import { _cleanupConfig, _setDeeplinkingDefaults } from './functions'; @@ -321,15 +320,6 @@ function _translateInterfaceConfig(oldValue: IConfig) { }; if (typeof interfaceConfig === 'object') { - const mobileDynamicLink = interfaceConfig.MOBILE_DYNAMIC_LINK; - const dynamicLink: IMobileDynamicLink | undefined = mobileDynamicLink ? { - apn: mobileDynamicLink.APN, - appCode: mobileDynamicLink.APP_CODE, - ibi: mobileDynamicLink.IBI, - isi: mobileDynamicLink.ISI, - customDomain: mobileDynamicLink.CUSTOM_DOMAIN - } : undefined; - if (deeplinking.desktop) { deeplinking.desktop.appName = interfaceConfig.NATIVE_APP_NAME; } @@ -340,14 +330,12 @@ function _translateInterfaceConfig(oldValue: IConfig) { appScheme: interfaceConfig.APP_SCHEME, downloadLink: interfaceConfig.MOBILE_DOWNLOAD_LINK_ANDROID, appPackage: interfaceConfig.ANDROID_APP_PACKAGE, - fDroidUrl: interfaceConfig.MOBILE_DOWNLOAD_LINK_F_DROID, - dynamicLink + fDroidUrl: interfaceConfig.MOBILE_DOWNLOAD_LINK_F_DROID }; deeplinking.ios = { appName: interfaceConfig.NATIVE_APP_NAME, appScheme: interfaceConfig.APP_SCHEME, - downloadLink: interfaceConfig.MOBILE_DOWNLOAD_LINK_IOS, - dynamicLink + downloadLink: interfaceConfig.MOBILE_DOWNLOAD_LINK_IOS }; } newValue.deeplinking = deeplinking; diff --git a/react/features/deep-linking/components/DeepLinkingMobilePage.web.tsx b/react/features/deep-linking/components/DeepLinkingMobilePage.web.tsx index 529e206b4b..4b4e4c2a9d 100644 --- a/react/features/deep-linking/components/DeepLinkingMobilePage.web.tsx +++ b/react/features/deep-linking/components/DeepLinkingMobilePage.web.tsx @@ -106,29 +106,10 @@ const DeepLinkingMobilePage: React.FC = ({ t }) => { const { classes: styles } = useStyles(); const generateDownloadURL = useCallback(() => { - const { downloadLink, dynamicLink, appScheme } + const { downloadLink } = (deeplinkingCfg?.[Platform.OS as keyof typeof deeplinkingCfg] || {}) as IDeeplinkingMobileConfig; - if (downloadLink && typeof dynamicLink === 'undefined') { - return downloadLink; - } - - const { - apn, - appCode, - customDomain, - ibi, - isi - } = dynamicLink || {}; - - const domain = customDomain ?? `https://${appCode}.app.goo.gl`; - - return `${domain}/?link=${ - encodeURIComponent(window.location.href)}&apn=${ - apn}&ibi=${ - ibi}&isi=${ - isi}&ius=${ - appScheme}&efr=1`; + return downloadLink; }, [ deeplinkingCfg ]); const onDownloadApp = useCallback(() => {