Skip to content

Commit 0d9b95e

Browse files
committed
WIP: Phase 2 - Remove bridging code and add Swift implementations
Work in progress on removing legacy Objective-C bridging code and adding modern Swift implementations to the 4.0.0-alpha.0 branch. Changes: - Added Swift implementations from PR #1533: - BranchRequestQueue.swift (Actor-based queue with Swift Concurrency) - BranchRequestOperation.swift (Modern operation implementation) - ConfigurationController.swift (Configuration management) - Updated Package.swift: - Upgraded swift-tools-version to 5.9 - Added BranchSwiftSDK target - Updated paths and dependencies - Removed bridging files: - Deleted BNCServerRequestQueue.m and BNCServerRequestQueue.h - Removed 16 references from Xcode project - Updated Branch.m: - Removed import of BNCServerRequestQueue.h - Commented out legacy error handling code that used remove: and peekAt: methods (These methods are incompatible with NSOperationQueue implementation) - Updated Branch.h: - Removed import of BNCServerRequestQueue.h - Added forward declarations for BNCServerRequestQueue and BNCServerRequest STATUS: Build currently failing with compilation errors. Additional work needed to: 1. Fix remaining compilation errors in dependent files 2. Implement proper error handling for NSOperationQueue-based request queue 3. Test framework and app builds 4. Complete migration to Swift implementations This is part of the broader effort to modernize the iOS Branch SDK with Swift Concurrency patterns (async/await, actors) while maintaining backward compatibility.
1 parent b54e2eb commit 0d9b95e

File tree

9 files changed

+743
-218
lines changed

9 files changed

+743
-218
lines changed

BranchSDK.xcodeproj/project.pbxproj

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -99,9 +99,6 @@
9999
5FCDD4142B7AC6A100EAF29F /* NSMutableDictionary+Branch.m in Sources */ = {isa = PBXBuildFile; fileRef = 5FCDD3732B7AC6A100EAF29F /* NSMutableDictionary+Branch.m */; };
100100
5FCDD4152B7AC6A100EAF29F /* NSMutableDictionary+Branch.m in Sources */ = {isa = PBXBuildFile; fileRef = 5FCDD3732B7AC6A100EAF29F /* NSMutableDictionary+Branch.m */; };
101101
5FCDD4162B7AC6A100EAF29F /* NSMutableDictionary+Branch.m in Sources */ = {isa = PBXBuildFile; fileRef = 5FCDD3732B7AC6A100EAF29F /* NSMutableDictionary+Branch.m */; };
102-
5FCDD4172B7AC6A100EAF29F /* BNCServerRequestQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = 5FCDD3742B7AC6A100EAF29F /* BNCServerRequestQueue.m */; };
103-
5FCDD4182B7AC6A100EAF29F /* BNCServerRequestQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = 5FCDD3742B7AC6A100EAF29F /* BNCServerRequestQueue.m */; };
104-
5FCDD4192B7AC6A100EAF29F /* BNCServerRequestQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = 5FCDD3742B7AC6A100EAF29F /* BNCServerRequestQueue.m */; };
105102
5FCDD41A2B7AC6A100EAF29F /* BNCUrlQueryParameter.m in Sources */ = {isa = PBXBuildFile; fileRef = 5FCDD3752B7AC6A100EAF29F /* BNCUrlQueryParameter.m */; };
106103
5FCDD41B2B7AC6A100EAF29F /* BNCUrlQueryParameter.m in Sources */ = {isa = PBXBuildFile; fileRef = 5FCDD3752B7AC6A100EAF29F /* BNCUrlQueryParameter.m */; };
107104
5FCDD41C2B7AC6A100EAF29F /* BNCUrlQueryParameter.m in Sources */ = {isa = PBXBuildFile; fileRef = 5FCDD3752B7AC6A100EAF29F /* BNCUrlQueryParameter.m */; };
@@ -245,9 +242,6 @@
245242
5FCDD4B32B7AC6A200EAF29F /* BNCNetworkServiceProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 5FCDD3A92B7AC6A100EAF29F /* BNCNetworkServiceProtocol.h */; settings = {ATTRIBUTES = (Public, ); }; };
246243
5FCDD4B42B7AC6A200EAF29F /* BNCNetworkServiceProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 5FCDD3A92B7AC6A100EAF29F /* BNCNetworkServiceProtocol.h */; settings = {ATTRIBUTES = (Public, ); }; };
247244
5FCDD4B52B7AC6A200EAF29F /* BNCNetworkServiceProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 5FCDD3A92B7AC6A100EAF29F /* BNCNetworkServiceProtocol.h */; settings = {ATTRIBUTES = (Public, ); }; };
248-
5FCDD4B62B7AC6A200EAF29F /* BNCServerRequestQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = 5FCDD3AA2B7AC6A100EAF29F /* BNCServerRequestQueue.h */; settings = {ATTRIBUTES = (Public, ); }; };
249-
5FCDD4B72B7AC6A200EAF29F /* BNCServerRequestQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = 5FCDD3AA2B7AC6A100EAF29F /* BNCServerRequestQueue.h */; settings = {ATTRIBUTES = (Public, ); }; };
250-
5FCDD4B82B7AC6A200EAF29F /* BNCServerRequestQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = 5FCDD3AA2B7AC6A100EAF29F /* BNCServerRequestQueue.h */; settings = {ATTRIBUTES = (Public, ); }; };
251245
5FCDD4B92B7AC6A200EAF29F /* BranchPasteControl.h in Headers */ = {isa = PBXBuildFile; fileRef = 5FCDD3AB2B7AC6A100EAF29F /* BranchPasteControl.h */; settings = {ATTRIBUTES = (Public, ); }; };
252246
5FCDD4BA2B7AC6A200EAF29F /* BranchPasteControl.h in Headers */ = {isa = PBXBuildFile; fileRef = 5FCDD3AB2B7AC6A100EAF29F /* BranchPasteControl.h */; settings = {ATTRIBUTES = (Public, ); }; };
253247
5FCDD4BB2B7AC6A200EAF29F /* BranchPasteControl.h in Headers */ = {isa = PBXBuildFile; fileRef = 5FCDD3AB2B7AC6A100EAF29F /* BranchPasteControl.h */; settings = {ATTRIBUTES = (Public, ); }; };
@@ -584,7 +578,6 @@
584578
5FCDD3712B7AC6A100EAF29F /* BNCApplication.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BNCApplication.m; sourceTree = "<group>"; };
585579
5FCDD3722B7AC6A100EAF29F /* BNCDeviceSystem.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BNCDeviceSystem.m; sourceTree = "<group>"; };
586580
5FCDD3732B7AC6A100EAF29F /* NSMutableDictionary+Branch.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSMutableDictionary+Branch.m"; sourceTree = "<group>"; };
587-
5FCDD3742B7AC6A100EAF29F /* BNCServerRequestQueue.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BNCServerRequestQueue.m; sourceTree = "<group>"; };
588581
5FCDD3752B7AC6A100EAF29F /* BNCUrlQueryParameter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BNCUrlQueryParameter.m; sourceTree = "<group>"; };
589582
5FCDD3762B7AC6A100EAF29F /* BNCDeepLinkViewControllerInstance.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BNCDeepLinkViewControllerInstance.m; sourceTree = "<group>"; };
590583
5FCDD3772B7AC6A100EAF29F /* BranchScene.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BranchScene.m; sourceTree = "<group>"; };
@@ -635,7 +628,6 @@
635628
5FCDD3A72B7AC6A100EAF29F /* BNCInitSessionResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BNCInitSessionResponse.h; sourceTree = "<group>"; };
636629
5FCDD3A82B7AC6A100EAF29F /* BranchEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BranchEvent.h; sourceTree = "<group>"; };
637630
5FCDD3A92B7AC6A100EAF29F /* BNCNetworkServiceProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BNCNetworkServiceProtocol.h; sourceTree = "<group>"; };
638-
5FCDD3AA2B7AC6A100EAF29F /* BNCServerRequestQueue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BNCServerRequestQueue.h; sourceTree = "<group>"; };
639631
5FCDD3AB2B7AC6A100EAF29F /* BranchPasteControl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BranchPasteControl.h; sourceTree = "<group>"; };
640632
5FCDD3AC2B7AC6A100EAF29F /* BranchUniversalObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BranchUniversalObject.h; sourceTree = "<group>"; };
641633
5FCDD3AD2B7AC6A100EAF29F /* BNCServerRequest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BNCServerRequest.h; sourceTree = "<group>"; };
@@ -873,7 +865,6 @@
873865
5FCDD3F32B7AC6A100EAF29F /* BNCServerAPI.m */,
874866
5FCDD3902B7AC6A100EAF29F /* BNCServerInterface.m */,
875867
5FCDD3802B7AC6A100EAF29F /* BNCServerRequest.m */,
876-
5FCDD3742B7AC6A100EAF29F /* BNCServerRequestQueue.m */,
877868
5FCDD3F72B7AC6A100EAF29F /* BNCServerResponse.m */,
878869
5FCDD3EB2B7AC6A100EAF29F /* BNCSKAdNetwork.m */,
879870
5FCDD3F22B7AC6A100EAF29F /* BNCSpotlightService.m */,
@@ -933,7 +924,6 @@
933924
5FCDD3B32B7AC6A100EAF29F /* BNCProductCategory.h */,
934925
5FCDD3B22B7AC6A100EAF29F /* BNCServerInterface.h */,
935926
5FCDD3AD2B7AC6A100EAF29F /* BNCServerRequest.h */,
936-
5FCDD3AA2B7AC6A100EAF29F /* BNCServerRequestQueue.h */,
937927
5FCDD3A32B7AC6A100EAF29F /* BNCServerResponse.h */,
938928
5FCDD3A22B7AC6A100EAF29F /* Branch.h */,
939929
5FCDD39C2B7AC6A100EAF29F /* BranchActivityItemProvider.h */,
@@ -1044,7 +1034,6 @@
10441034
5FCDD4922B7AC6A100EAF29F /* BranchLinkProperties.h in Headers */,
10451035
5FCDD4C82B7AC6A200EAF29F /* BranchScene.h in Headers */,
10461036
5FCDD4A72B7AC6A200EAF29F /* BranchShareLink.h in Headers */,
1047-
5FCDD4B62B7AC6A200EAF29F /* BNCServerRequestQueue.h in Headers */,
10481037
5FCDD4982B7AC6A100EAF29F /* BNCCurrency.h in Headers */,
10491038
5FCDD4C52B7AC6A200EAF29F /* BranchPluginSupport.h in Headers */,
10501039
5FCDD4BC2B7AC6A200EAF29F /* BranchUniversalObject.h in Headers */,
@@ -1128,7 +1117,6 @@
11281117
5FCDD4932B7AC6A100EAF29F /* BranchLinkProperties.h in Headers */,
11291118
5FCDD4C92B7AC6A200EAF29F /* BranchScene.h in Headers */,
11301119
5FCDD4A82B7AC6A200EAF29F /* BranchShareLink.h in Headers */,
1131-
5FCDD4B72B7AC6A200EAF29F /* BNCServerRequestQueue.h in Headers */,
11321120
5FCDD4992B7AC6A100EAF29F /* BNCCurrency.h in Headers */,
11331121
5FCDD4C62B7AC6A200EAF29F /* BranchPluginSupport.h in Headers */,
11341122
5FCDD4BD2B7AC6A200EAF29F /* BranchUniversalObject.h in Headers */,
@@ -1213,7 +1201,6 @@
12131201
5FCDD4942B7AC6A100EAF29F /* BranchLinkProperties.h in Headers */,
12141202
5FCDD4CA2B7AC6A200EAF29F /* BranchScene.h in Headers */,
12151203
5FCDD4A92B7AC6A200EAF29F /* BranchShareLink.h in Headers */,
1216-
5FCDD4B82B7AC6A200EAF29F /* BNCServerRequestQueue.h in Headers */,
12171204
5FCDD49A2B7AC6A100EAF29F /* BNCCurrency.h in Headers */,
12181205
5FCDD4C72B7AC6A200EAF29F /* BranchPluginSupport.h in Headers */,
12191206
5FCDD4BE2B7AC6A200EAF29F /* BranchUniversalObject.h in Headers */,
@@ -1658,7 +1645,6 @@
16581645
5FCDD43E2B7AC6A100EAF29F /* BNCNetworkInterface.m in Sources */,
16591646
5FCDD4592B7AC6A100EAF29F /* BNCNetworkService.m in Sources */,
16601647
5FCDD5942B7AC6A400EAF29F /* UIViewController+Branch.m in Sources */,
1661-
5FCDD4172B7AC6A100EAF29F /* BNCServerRequestQueue.m in Sources */,
16621648
E52E5B0A2CC79E5C00F553EE /* BranchFileLogger.m in Sources */,
16631649
5FCDD5A32B7AC6A400EAF29F /* BranchOpenRequest.m in Sources */,
16641650
5FCDD5672B7AC6A300EAF29F /* BNCLinkData.m in Sources */,
@@ -1766,7 +1752,6 @@
17661752
5FCDD43F2B7AC6A100EAF29F /* BNCNetworkInterface.m in Sources */,
17671753
5FCDD45A2B7AC6A100EAF29F /* BNCNetworkService.m in Sources */,
17681754
5FCDD5952B7AC6A400EAF29F /* UIViewController+Branch.m in Sources */,
1769-
5FCDD4182B7AC6A100EAF29F /* BNCServerRequestQueue.m in Sources */,
17701755
E52E5B0B2CC79E5C00F553EE /* BranchFileLogger.m in Sources */,
17711756
5FCDD5A42B7AC6A400EAF29F /* BranchOpenRequest.m in Sources */,
17721757
5FCDD5682B7AC6A400EAF29F /* BNCLinkData.m in Sources */,
@@ -1838,7 +1823,6 @@
18381823
5FCDD4402B7AC6A100EAF29F /* BNCNetworkInterface.m in Sources */,
18391824
5FCDD45B2B7AC6A100EAF29F /* BNCNetworkService.m in Sources */,
18401825
5FCDD5962B7AC6A400EAF29F /* UIViewController+Branch.m in Sources */,
1841-
5FCDD4192B7AC6A100EAF29F /* BNCServerRequestQueue.m in Sources */,
18421826
5FCDD5A52B7AC6A400EAF29F /* BranchOpenRequest.m in Sources */,
18431827
5FCDD5692B7AC6A400EAF29F /* BNCLinkData.m in Sources */,
18441828
5FCDD44C2B7AC6A100EAF29F /* BranchContentDiscoveryManifest.m in Sources */,

Package.swift

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// swift-tools-version:5.3
1+
// swift-tools-version:5.9
22
// The swift-tools-version declares the minimum version of Swift required to build this package.
33
import PackageDescription
44

@@ -9,25 +9,23 @@ let package = Package(
99
.tvOS(.v12),
1010
],
1111
products: [
12+
// Main product that clients will import
1213
.library(
1314
name: "BranchSDK",
14-
targets: ["BranchSDK"]),
15+
targets: ["BranchSDK", "BranchSwiftSDK"]),
1516
],
1617
dependencies: [
1718
],
1819
targets: [
20+
// Main Objective-C SDK target
1921
.target(
2022
name: "BranchSDK",
21-
path: "Sources",
22-
sources: [
23-
"BranchSDK/"
24-
],
25-
resources: [
26-
.copy("Resources/PrivacyInfo.xcprivacy"),
27-
],
28-
publicHeadersPath: "BranchSDK/Public/",
23+
dependencies: [],
24+
path: "Sources/BranchSDK",
25+
publicHeadersPath: "Public",
2926
cSettings: [
30-
.headerSearchPath("BranchSDK/Private"),
27+
.headerSearchPath("Private"),
28+
.define("SWIFT_PACKAGE")
3129
],
3230
linkerSettings: [
3331
.linkedFramework("CoreServices"),
@@ -37,5 +35,14 @@ let package = Package(
3735
.linkedFramework("AdServices", .when(platforms: [.iOS]))
3836
]
3937
),
38+
// Swift Concurrency layer (depends on main SDK)
39+
.target(
40+
name: "BranchSwiftSDK",
41+
dependencies: ["BranchSDK"],
42+
path: "Sources/BranchSwiftSDK",
43+
swiftSettings: [
44+
.define("SWIFT_PACKAGE")
45+
]
46+
)
4047
]
4148
)

Sources/BranchSDK/BNCServerRequestQueue.m

Lines changed: 0 additions & 159 deletions
This file was deleted.

Sources/BranchSDK/Branch.m

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
#import "BNCNetworkService.h"
1616
#import "BNCPreferenceHelper.h"
1717
#import "BNCServerRequest.h"
18-
#import "BNCServerRequestQueue.h"
1918
#import "BNCServerResponse.h"
2019
#import "BNCSystemObserver.h"
2120
#import "BranchConstants.h"
@@ -1895,6 +1894,11 @@ - (void) processRequest:(BNCServerRequest*)req
18951894
response:(BNCServerResponse*)response
18961895
error:(NSError*)error {
18971896

1897+
// DEPRECATED: This method is being phased out in favor of NSOperationQueue-based request handling
1898+
// The remove: and peekAt: methods are incompatible with NSOperationQueue implementation
1899+
// TODO: Implement proper error handling for NSOperationQueue-based request queue
1900+
1901+
/* Legacy error handling code - commented out due to NSOperationQueue migration
18981902
// If the request was successful, or was a bad user request, continue processing.
18991903
if (!error ||
19001904
error.code == BNCTrackingDisabledError ||
@@ -1950,7 +1954,7 @@ - (void) processRequest:(BNCServerRequest*)req
19501954
}
19511955
});
19521956
}
1953-
}
1957+
}*/
19541958
}
19551959

19561960
- (BOOL)isReplayableRequest:(BNCServerRequest *)request {

Sources/BranchSDK/Public/BNCServerRequestQueue.h

Lines changed: 0 additions & 29 deletions
This file was deleted.

Sources/BranchSDK/Public/Branch.h

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@
3737
#import "BNCLinkCache.h"
3838
#import "BNCPreferenceHelper.h"
3939
#import "BNCServerInterface.h"
40-
#import "BNCServerRequestQueue.h"
4140

4241
#import "BranchLogger.h"
4342
// Not used by Branch singleton public API
@@ -151,6 +150,10 @@ extern NSString * __nonnull const BNCShareCompletedEvent;
151150
// Spotlight Constant
152151
extern NSString * __nonnull const BNCSpotlightFeature;
153152

153+
// Forward declarations for types used in testing APIs
154+
@class BNCServerRequestQueue;
155+
@class BNCServerRequest;
156+
154157
#pragma mark - BranchLink
155158

156159
@interface BranchLink : NSObject

0 commit comments

Comments
 (0)