From a79d12bdb392fefbcf38e4838c11bd3a16df0d62 Mon Sep 17 00:00:00 2001 From: Christophe Deschamps Date: Fri, 15 Sep 2023 11:03:28 +0200 Subject: [PATCH] Local Push Notification - Network extension --- Classes/LinphoneAppDelegate.m | 2 - Classes/LinphoneCoreSettingsStore.m | 9 + Classes/LinphoneManager.m | 13 + .../LinphoneUI/Base.lproj/StatusBarView.xib | 12 +- Classes/LinphoneUI/StatusBarView.h | 1 + Classes/LinphoneUI/StatusBarView.m | 10 + Classes/SettingsView.m | 6 + Classes/Swift/LocalPushManager.swift | 123 +++ LocalPushProvider/Info.plist | 13 + .../LocalPushProvider.entitlements | 14 + LocalPushProvider/LocalPushProvider.swift | 132 ++++ Podfile | 9 + README.md | 13 + Settings/InAppSettings.bundle/Network.plist | 24 + linphone.entitlements | 4 + linphone.xcodeproj/project.pbxproj | 737 +++++++++++++++++- msgNotification/Utils.swift | 47 +- .../NotificationService.swift | 35 +- 18 files changed, 1126 insertions(+), 78 deletions(-) create mode 100644 Classes/Swift/LocalPushManager.swift create mode 100644 LocalPushProvider/Info.plist create mode 100644 LocalPushProvider/LocalPushProvider.entitlements create mode 100644 LocalPushProvider/LocalPushProvider.swift diff --git a/Classes/LinphoneAppDelegate.m b/Classes/LinphoneAppDelegate.m index 84deddd6d..973921b52 100644 --- a/Classes/LinphoneAppDelegate.m +++ b/Classes/LinphoneAppDelegate.m @@ -121,7 +121,6 @@ - (void)applicationDidBecomeActive:(UIApplication *)application { LOGI(@"%@", NSStringFromSelector(_cmd)); - if (!startedInBackground || PhoneMainView.instance.currentView == nil) { startedInBackground = TRUE; // initialize UI @@ -294,7 +293,6 @@ #ifdef USE_CRASHLYTICS [FIRApp configure]; #endif - if ([VFSUtil vfsEnabledWithGroupName:kLinphoneMsgNotificationAppGroupId]) { if (TARGET_IPHONE_SIMULATOR) { diff --git a/Classes/LinphoneCoreSettingsStore.m b/Classes/LinphoneCoreSettingsStore.m index 3b98818d6..0a72b8fd3 100644 --- a/Classes/LinphoneCoreSettingsStore.m +++ b/Classes/LinphoneCoreSettingsStore.m @@ -505,6 +505,8 @@ [self setInteger:linphone_core_get_download_bandwidth(LC) forKey:@"download_bandwidth_preference"]; [self setBool:linphone_core_adaptive_rate_control_enabled(LC) forKey:@"adaptive_rate_control_preference"]; [self setObject:[lm lpConfigStringForKey:@"dns_server_ip"] forKey:@"dns_server_preference"]; + [self setCString:[lm lpConfigStringForKey:@"ssids" inSection:@"local_push"].UTF8String forKey:@"local_push_ssids"]; + } // tunnel section @@ -1060,6 +1062,13 @@ [lm setDnsServer]; } + [lm lpConfigSetString:[self stringForKey:@"local_push_ssids"] forKey:@"ssids" inSection:@"local_push"]; + if (@available(iOS 15.0, *)) { + [LocalPushManager.shared configureLocalPushWithCCoreConfig:lm.configDb]; + } else { + LOGW(@"Local push notifications not available for this ios version (iOS 15 minimum)"); + } + // tunnel section if (linphone_core_tunnel_available()) { diff --git a/Classes/LinphoneManager.m b/Classes/LinphoneManager.m index 78de9b8b2..da964e5f6 100644 --- a/Classes/LinphoneManager.m +++ b/Classes/LinphoneManager.m @@ -686,6 +686,11 @@ static void linphone_iphone_global_state_changed(LinphoneCore *lc, LinphoneGloba if (state == LinphoneGlobalOn) { // reload friends [self.fastAddressBook fetchContactsInBackGroundThread]; + if (@available(iOS 15.0, *)) { + [LocalPushManager.shared configureLocalPushWithCCoreConfig:linphone_core_get_config(LC)]; + } else { + LOGW(@"Local push notifications not available for this ios version (iOS 15 minimum)"); + } } } @@ -715,6 +720,14 @@ static void linphone_iphone_configuring_status_changed(LinphoneCore *lc, Linphon object:self userInfo:dict]; }); + + if (status == LinphoneConfiguringSuccessful) { + if (@available(iOS 15.0, *)) { + [LocalPushManager.shared configureLocalPushWithCCoreConfig:linphone_core_get_config(LC)]; + } else { + LOGW(@"Local push notifications not available for this ios version (iOS 15 minimum)"); + } + } } #pragma mark - Registration State Functions diff --git a/Classes/LinphoneUI/Base.lproj/StatusBarView.xib b/Classes/LinphoneUI/Base.lproj/StatusBarView.xib index ead83cd58..b7103801b 100644 --- a/Classes/LinphoneUI/Base.lproj/StatusBarView.xib +++ b/Classes/LinphoneUI/Base.lproj/StatusBarView.xib @@ -1,9 +1,9 @@ - + - + @@ -12,6 +12,7 @@ + @@ -94,6 +95,13 @@ +