Skip to content

Commit c68af05

Browse files
committed
Release 3.12.0 Updates.
1 parent 590f25b commit c68af05

File tree

15 files changed

+327
-12
lines changed

15 files changed

+327
-12
lines changed

Branch-TestBed/Branch-TestBed.xcodeproj/project.pbxproj

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -235,6 +235,7 @@
235235
C1CC888229BAAFC000BDD2B5 /* BNCReferringURLUtilityTests.m in Sources */ = {isa = PBXBuildFile; fileRef = C1CC888129BAAFC000BDD2B5 /* BNCReferringURLUtilityTests.m */; };
236236
E51F642A2CF46899000858D2 /* BranchFileLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = E51F64292CF46899000858D2 /* BranchFileLogger.h */; };
237237
E56394312CC7AC9F00E18E65 /* BranchFileLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = E563942F2CC7AC9500E18E65 /* BranchFileLogger.m */; };
238+
E71E397B2DD3C14800110F59 /* BNCInAppBrowser.h in Headers */ = {isa = PBXBuildFile; fileRef = E71E397A2DD3C14800110F59 /* BNCInAppBrowser.h */; };
238239
E72489D228E40D0200DCD8FD /* PasteControlViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E72489D128E40D0200DCD8FD /* PasteControlViewController.m */; };
239240
E7A728BD2AA9A112009343B7 /* BNCAPIServerTest.m in Sources */ = {isa = PBXBuildFile; fileRef = E7A728BC2AA9A112009343B7 /* BNCAPIServerTest.m */; };
240241
E7AC74572DB0639E002D8C40 /* BNCODMInfoCollector.h in Headers */ = {isa = PBXBuildFile; fileRef = E7AC74562DB0639E002D8C40 /* BNCODMInfoCollector.h */; };
@@ -245,6 +246,7 @@
245246
E7AC74752DB069B2002D8C40 /* nanopb in Frameworks */ = {isa = PBXBuildFile; productRef = E7AC74742DB069B2002D8C40 /* nanopb */; };
246247
E7AC747B2DB0700D002D8C40 /* BranchSDK in Frameworks */ = {isa = PBXBuildFile; productRef = E7AC747A2DB0700D002D8C40 /* BranchSDK */; };
247248
E7AC747E2DB0714B002D8C40 /* libc++.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = E7AC747D2DB07145002D8C40 /* libc++.tbd */; };
249+
E7E28ECA2DD2424C00F75D0D /* BNCInAppBrowser.m in Sources */ = {isa = PBXBuildFile; fileRef = E7E28EC82DD2424C00F75D0D /* BNCInAppBrowser.m */; };
248250
F1CF14111F4CC79F00BB2694 /* CoreSpotlight.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 67F270881BA9FCFF002546A7 /* CoreSpotlight.framework */; settings = {ATTRIBUTES = (Required, ); }; };
249251
/* End PBXBuildFile section */
250252

@@ -555,6 +557,7 @@
555557
C1CC888129BAAFC000BDD2B5 /* BNCReferringURLUtilityTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = BNCReferringURLUtilityTests.m; sourceTree = "<group>"; };
556558
E51F64292CF46899000858D2 /* BranchFileLogger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BranchFileLogger.h; sourceTree = "<group>"; };
557559
E563942F2CC7AC9500E18E65 /* BranchFileLogger.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BranchFileLogger.m; sourceTree = "<group>"; };
560+
E71E397A2DD3C14800110F59 /* BNCInAppBrowser.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = BNCInAppBrowser.h; sourceTree = "<group>"; };
558561
E72489D028E40D0200DCD8FD /* PasteControlViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PasteControlViewController.h; sourceTree = "<group>"; };
559562
E72489D128E40D0200DCD8FD /* PasteControlViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PasteControlViewController.m; sourceTree = "<group>"; };
560563
E7A728BC2AA9A112009343B7 /* BNCAPIServerTest.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = BNCAPIServerTest.m; sourceTree = "<group>"; };
@@ -566,6 +569,7 @@
566569
E7AC74772DB06D05002D8C40 /* NSError+Branch.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "NSError+Branch.m"; sourceTree = "<group>"; };
567570
E7AC74782DB06D47002D8C40 /* NSError+Branch.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "NSError+Branch.h"; sourceTree = "<group>"; };
568571
E7AC747D2DB07145002D8C40 /* libc++.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = "libc++.tbd"; path = "Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.2.sdk/usr/lib/libc++.tbd"; sourceTree = DEVELOPER_DIR; };
572+
E7E28EC82DD2424C00F75D0D /* BNCInAppBrowser.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = BNCInAppBrowser.m; sourceTree = "<group>"; };
569573
F1D4F9AC1F323F01002D13FF /* Branch-TestBed-UITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "Branch-TestBed-UITests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
570574
/* End PBXFileReference section */
571575

@@ -731,6 +735,7 @@
731735
5F644B282B7AA810000DCD78 /* BNCEncodingUtils.m */,
732736
5F644BB82B7AA811000DCD78 /* BNCEventUtils.m */,
733737
5F644BAA2B7AA811000DCD78 /* BNCInitSessionResponse.m */,
738+
E7E28EC82DD2424C00F75D0D /* BNCInAppBrowser.m */,
734739
5F644BA22B7AA811000DCD78 /* BNCJSONUtility.m */,
735740
5F644B512B7AA810000DCD78 /* BNCKeyChain.m */,
736741
5F644BAB2B7AA811000DCD78 /* BNCLinkCache.m */,
@@ -833,6 +838,7 @@
833838
5F644B6E2B7AA810000DCD78 /* Private */ = {
834839
isa = PBXGroup;
835840
children = (
841+
E71E397A2DD3C14800110F59 /* BNCInAppBrowser.h */,
836842
5F644B762B7AA810000DCD78 /* BNCAppGroupsData.h */,
837843
5F644B702B7AA810000DCD78 /* BNCAppleReceipt.h */,
838844
5F644B812B7AA811000DCD78 /* BNCApplication.h */,
@@ -1078,6 +1084,7 @@
10781084
5F644C112B7AA811000DCD78 /* BNCUrlQueryParameter.h in Headers */,
10791085
5F644C2B2B7AA811000DCD78 /* BNCCrashlyticsWrapper.h in Headers */,
10801086
5F644C2F2B7AA811000DCD78 /* BNCReachability.h in Headers */,
1087+
E71E397B2DD3C14800110F59 /* BNCInAppBrowser.h in Headers */,
10811088
5F644C062B7AA811000DCD78 /* UIViewController+Branch.h in Headers */,
10821089
5F644C022B7AA811000DCD78 /* BNCPasteboard.h in Headers */,
10831090
5F644C0F2B7AA811000DCD78 /* BranchOpenRequest.h in Headers */,
@@ -1416,6 +1423,7 @@
14161423
E56394312CC7AC9F00E18E65 /* BranchFileLogger.m in Sources */,
14171424
5F644C452B7AA811000DCD78 /* BranchOpenRequest.m in Sources */,
14181425
5F644C312B7AA811000DCD78 /* BNCLinkData.m in Sources */,
1426+
E7E28ECA2DD2424C00F75D0D /* BNCInAppBrowser.m in Sources */,
14191427
5F644BD22B7AA811000DCD78 /* BranchContentDiscoveryManifest.m in Sources */,
14201428
5F644BDC2B7AA811000DCD78 /* BNCCrashlyticsWrapper.m in Sources */,
14211429
5F644C3F2B7AA811000DCD78 /* BranchShareLink.m in Sources */,

BranchSDK.podspec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
Pod::Spec.new do |s|
22
s.name = "BranchSDK"
3-
s.version = "3.11.0"
3+
s.version = "3.12.0"
44
s.summary = "Create an HTTP URL for any piece of content in your app"
55
s.description = <<-DESC
66
- Want the highest possible conversions on your sharing feature?

BranchSDK.xcodeproj/project.pbxproj

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -494,6 +494,11 @@
494494
E52E5B0A2CC79E5C00F553EE /* BranchFileLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = E52E5B092CC79E5C00F553EE /* BranchFileLogger.m */; };
495495
E52E5B0B2CC79E5C00F553EE /* BranchFileLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = E52E5B092CC79E5C00F553EE /* BranchFileLogger.m */; };
496496
E563942E2CC7A8E600E18E65 /* BranchFileLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = E52E5B052CC79E4E00F553EE /* BranchFileLogger.h */; };
497+
E71E396F2DD3A92900110F59 /* BNCInAppBrowser.h in Headers */ = {isa = PBXBuildFile; fileRef = E71E396D2DD3A92900110F59 /* BNCInAppBrowser.h */; };
498+
E71E39712DD3A92900110F59 /* BNCInAppBrowser.m in Sources */ = {isa = PBXBuildFile; fileRef = E71E396E2DD3A92900110F59 /* BNCInAppBrowser.m */; };
499+
E71E39722DD3A92900110F59 /* BNCInAppBrowser.h in Headers */ = {isa = PBXBuildFile; fileRef = E71E396D2DD3A92900110F59 /* BNCInAppBrowser.h */; };
500+
E71E39732DD3A92900110F59 /* BNCInAppBrowser.m in Sources */ = {isa = PBXBuildFile; fileRef = E71E396E2DD3A92900110F59 /* BNCInAppBrowser.m */; };
501+
E71E39742DD3A92900110F59 /* BNCInAppBrowser.h in Headers */ = {isa = PBXBuildFile; fileRef = E71E396D2DD3A92900110F59 /* BNCInAppBrowser.h */; };
497502
E7F311AE2DACB4D400F824A7 /* BNCODMInfoCollector.m in Sources */ = {isa = PBXBuildFile; fileRef = E7F311AD2DACB4D400F824A7 /* BNCODMInfoCollector.m */; };
498503
E7F311AF2DACB4D400F824A7 /* BNCODMInfoCollector.m in Sources */ = {isa = PBXBuildFile; fileRef = E7F311AD2DACB4D400F824A7 /* BNCODMInfoCollector.m */; };
499504
E7F311B12DACB54100F824A7 /* BNCODMInfoCollector.h in Headers */ = {isa = PBXBuildFile; fileRef = E7F311B02DACB54100F824A7 /* BNCODMInfoCollector.h */; };
@@ -710,6 +715,8 @@
710715
5FF2AFDF28E7C22100393216 /* BranchSDK.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = BranchSDK.h; sourceTree = "<group>"; };
711716
E52E5B052CC79E4E00F553EE /* BranchFileLogger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BranchFileLogger.h; sourceTree = "<group>"; };
712717
E52E5B092CC79E5C00F553EE /* BranchFileLogger.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BranchFileLogger.m; sourceTree = "<group>"; };
718+
E71E396D2DD3A92900110F59 /* BNCInAppBrowser.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = BNCInAppBrowser.h; sourceTree = "<group>"; };
719+
E71E396E2DD3A92900110F59 /* BNCInAppBrowser.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = BNCInAppBrowser.m; sourceTree = "<group>"; };
713720
E7F311AD2DACB4D400F824A7 /* BNCODMInfoCollector.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = BNCODMInfoCollector.m; sourceTree = "<group>"; };
714721
E7F311B02DACB54100F824A7 /* BNCODMInfoCollector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BNCODMInfoCollector.h; sourceTree = "<group>"; };
715722
/* End PBXFileReference section */
@@ -825,6 +832,7 @@
825832
5FCDD36B2B7AC6A100EAF29F /* BranchSDK */ = {
826833
isa = PBXGroup;
827834
children = (
835+
E71E396E2DD3A92900110F59 /* BNCInAppBrowser.m */,
828836
E52E5B092CC79E5C00F553EE /* BranchFileLogger.m */,
829837
5FCDD3F62B7AC6A100EAF29F /* BNCAppGroupsData.m */,
830838
5FCDD3EE2B7AC6A100EAF29F /* BNCAppleReceipt.m */,
@@ -988,6 +996,7 @@
988996
5FCDD3D12B7AC6A100EAF29F /* NSString+Branch.h */,
989997
E52E5B052CC79E4E00F553EE /* BranchFileLogger.h */,
990998
5FCDD3BB2B7AC6A100EAF29F /* UIViewController+Branch.h */,
999+
E71E396D2DD3A92900110F59 /* BNCInAppBrowser.h */,
9911000
);
9921001
path = Private;
9931002
sourceTree = "<group>";
@@ -1090,6 +1099,7 @@
10901099
5FCDD5612B7AC6A300EAF29F /* BNCReachability.h in Headers */,
10911100
5FCDD50D2B7AC6A300EAF29F /* NSMutableDictionary+Branch.h in Headers */,
10921101
5FCDD4D72B7AC6A200EAF29F /* BNCAppleReceipt.h in Headers */,
1102+
E71E39742DD3A92900110F59 /* BNCInAppBrowser.h in Headers */,
10931103
5FCDD54F2B7AC6A300EAF29F /* BranchJsonConfig.h in Headers */,
10941104
5FCDD4E02B7AC6A200EAF29F /* BNCSKAdNetwork.h in Headers */,
10951105
5FCDD5102B7AC6A300EAF29F /* BNCDeviceSystem.h in Headers */,
@@ -1172,6 +1182,7 @@
11721182
5FCDD4F62B7AC6A200EAF29F /* BNCEventUtils.h in Headers */,
11731183
5FCDD5622B7AC6A300EAF29F /* BNCReachability.h in Headers */,
11741184
5FCDD50E2B7AC6A300EAF29F /* NSMutableDictionary+Branch.h in Headers */,
1185+
E71E39722DD3A92900110F59 /* BNCInAppBrowser.h in Headers */,
11751186
5FCDD4D82B7AC6A200EAF29F /* BNCAppleReceipt.h in Headers */,
11761187
5FCDD5502B7AC6A300EAF29F /* BranchJsonConfig.h in Headers */,
11771188
5FCDD4E12B7AC6A200EAF29F /* BNCSKAdNetwork.h in Headers */,
@@ -1254,6 +1265,7 @@
12541265
5FCDD4F72B7AC6A200EAF29F /* BNCEventUtils.h in Headers */,
12551266
5FCDD5632B7AC6A300EAF29F /* BNCReachability.h in Headers */,
12561267
5FCDD50F2B7AC6A300EAF29F /* NSMutableDictionary+Branch.h in Headers */,
1268+
E71E396F2DD3A92900110F59 /* BNCInAppBrowser.h in Headers */,
12571269
5FCDD4D92B7AC6A200EAF29F /* BNCAppleReceipt.h in Headers */,
12581270
5FCDD5512B7AC6A300EAF29F /* BranchJsonConfig.h in Headers */,
12591271
5FCDD4E22B7AC6A200EAF29F /* BNCSKAdNetwork.h in Headers */,
@@ -1636,6 +1648,7 @@
16361648
E52E5B0A2CC79E5C00F553EE /* BranchFileLogger.m in Sources */,
16371649
5FCDD5A32B7AC6A400EAF29F /* BranchOpenRequest.m in Sources */,
16381650
5FCDD5672B7AC6A300EAF29F /* BNCLinkData.m in Sources */,
1651+
E71E39732DD3A92900110F59 /* BNCInAppBrowser.m in Sources */,
16391652
5FCDD44A2B7AC6A100EAF29F /* BranchContentDiscoveryManifest.m in Sources */,
16401653
5FCDD4682B7AC6A100EAF29F /* BNCCrashlyticsWrapper.m in Sources */,
16411654
5FCDD5912B7AC6A400EAF29F /* BranchShareLink.m in Sources */,
@@ -1742,6 +1755,7 @@
17421755
E52E5B0B2CC79E5C00F553EE /* BranchFileLogger.m in Sources */,
17431756
5FCDD5A42B7AC6A400EAF29F /* BranchOpenRequest.m in Sources */,
17441757
5FCDD5682B7AC6A400EAF29F /* BNCLinkData.m in Sources */,
1758+
E71E39712DD3A92900110F59 /* BNCInAppBrowser.m in Sources */,
17451759
5FCDD44B2B7AC6A100EAF29F /* BranchContentDiscoveryManifest.m in Sources */,
17461760
5FCDD4692B7AC6A100EAF29F /* BNCCrashlyticsWrapper.m in Sources */,
17471761
5FCDD5922B7AC6A400EAF29F /* BranchShareLink.m in Sources */,
@@ -2002,7 +2016,7 @@
20022016
"@executable_path/Frameworks",
20032017
"@loader_path/Frameworks",
20042018
);
2005-
MARKETING_VERSION = 3.11.0;
2019+
MARKETING_VERSION = 3.12.0;
20062020
OTHER_LDFLAGS = (
20072021
"-weak_framework",
20082022
LinkPresentation,
@@ -2037,7 +2051,7 @@
20372051
"@executable_path/Frameworks",
20382052
"@loader_path/Frameworks",
20392053
);
2040-
MARKETING_VERSION = 3.11.0;
2054+
MARKETING_VERSION = 3.12.0;
20412055
OTHER_LDFLAGS = (
20422056
"-weak_framework",
20432057
LinkPresentation,
@@ -2243,7 +2257,7 @@
22432257
"@loader_path/Frameworks",
22442258
);
22452259
MACH_O_TYPE = staticlib;
2246-
MARKETING_VERSION = 3.11.0;
2260+
MARKETING_VERSION = 3.12.0;
22472261
OTHER_LDFLAGS = (
22482262
"-weak_framework",
22492263
LinkPresentation,
@@ -2282,7 +2296,7 @@
22822296
"@loader_path/Frameworks",
22832297
);
22842298
MACH_O_TYPE = staticlib;
2285-
MARKETING_VERSION = 3.11.0;
2299+
MARKETING_VERSION = 3.12.0;
22862300
OTHER_LDFLAGS = (
22872301
"-weak_framework",
22882302
LinkPresentation,
@@ -2319,7 +2333,7 @@
23192333
"@executable_path/Frameworks",
23202334
"@loader_path/Frameworks",
23212335
);
2322-
MARKETING_VERSION = 3.11.0;
2336+
MARKETING_VERSION = 3.12.0;
23232337
OTHER_LDFLAGS = (
23242338
"-weak_framework",
23252339
LinkPresentation,
@@ -2354,7 +2368,7 @@
23542368
"@executable_path/Frameworks",
23552369
"@loader_path/Frameworks",
23562370
);
2357-
MARKETING_VERSION = 3.11.0;
2371+
MARKETING_VERSION = 3.12.0;
23582372
OTHER_LDFLAGS = (
23592373
"-weak_framework",
23602374
LinkPresentation,

ChangeLog.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
Branch iOS SDK Change Log
22

3+
v.3.12.0
4+
- Added browser experience for apps that have opted in. WebURL will open in in-app browser if app is linked with SafariServices.framework otherwise it will open in external browser.
5+
36
v.3.11.0
47
- Added Google ODM Event Data support. SDK will fetch, cache and send ODM event data with v1/install and v1/open requests for 180 days.
58
- Added new API `setODMInfo:andFirstOpenTimestamp` to set ODM Event data and first open timestamp if app developer wants to set it instead of SDK.

Sources/BranchSDK/BNCConfig.m

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
#include "BNCConfig.h"
1010

11-
NSString * const BNC_SDK_VERSION = @"3.11.0";
11+
NSString * const BNC_SDK_VERSION = @"3.12.0";
1212
NSString * const BNC_LINK_URL = @"https://bnc.lt";
1313
NSString * const BNC_CDN_URL = @"https://cdn.branch.io";
1414

Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
//
2+
// BNCInAppBrowser.m
3+
// Branch
4+
//
5+
// Created by Nidhi Dixit on 5/12/25.
6+
// Copyright © 2025 Branch, Inc. All rights reserved.
7+
//
8+
9+
#if !TARGET_OS_TV
10+
11+
#import "BNCInAppBrowser.h"
12+
#import "UIViewController+Branch.h"
13+
#import "Branch.h"
14+
15+
NS_ASSUME_NONNULL_BEGIN
16+
17+
@implementation BNCInAppBrowser
18+
19+
+ (instancetype)sharedInstance {
20+
static BNCInAppBrowser *sharedInstance = nil;
21+
static dispatch_once_t onceToken;
22+
23+
if (NSClassFromString(@"SFSafariViewController") == nil) {
24+
[[BranchLogger shared] logDebug:@"[Branch SDK] SafariServices.framework is not linked. BNCInAppBrowser will not be available." error:nil];
25+
return nil;
26+
}
27+
28+
dispatch_once(&onceToken, ^{
29+
sharedInstance = [[BNCInAppBrowser alloc] init];
30+
});
31+
return sharedInstance;
32+
}
33+
34+
- (void)openURLInSafariVC:(NSURL *) url {
35+
36+
UIViewController *topVC = [UIViewController bnc_currentViewController];
37+
if (!topVC) {
38+
[[BranchLogger shared] logDebug:@"SDK: Cannot present SafariViewController – no top view controller found." error:nil];
39+
return;
40+
}
41+
[self openURLInSafariVC:url overViewController:topVC];
42+
}
43+
44+
+ (BOOL)isSafariServicesFrameworkLinked {
45+
return (NSClassFromString(@"SFSafariViewController") != nil);
46+
}
47+
48+
- (void)openURLInSafariVC:(NSURL *)url overViewController:(UIViewController *)topVC {
49+
50+
Class safariClass = NSClassFromString(@"SFSafariViewController");
51+
if (!safariClass) {
52+
[[BranchLogger shared] logDebug:@"SDK: SFSafariViewController not available or not linked. Falling back." error:nil];
53+
return;
54+
}
55+
56+
id safariVC = [[safariClass alloc] initWithURL:url];
57+
58+
if ([safariVC respondsToSelector:@selector(setDelegate:)]) {
59+
[safariVC performSelector:@selector(setDelegate:) withObject:self];
60+
}
61+
62+
if (@available(iOS 11.0, *)) {
63+
if ([safariVC respondsToSelector:@selector(setDismissButtonStyle:)]) {
64+
[safariVC setValue:@(1) forKey:@"dismissButtonStyle"]; // SFSafariViewControllerDismissButtonStyleClose
65+
}
66+
}
67+
68+
if (@available(iOS 13.0, *)) {
69+
if ([safariVC respondsToSelector:@selector(setPreferredBarTintColor:)]) {
70+
[safariVC setValue:[UIColor systemBackgroundColor] forKey:@"preferredBarTintColor"];
71+
}
72+
if ([safariVC respondsToSelector:@selector(setPreferredControlTintColor:)]) {
73+
[safariVC setValue:[UIColor systemBlueColor] forKey:@"preferredControlTintColor"];
74+
}
75+
}
76+
[topVC presentViewController:safariVC animated:YES completion:nil];
77+
}
78+
79+
- (void)safariViewControllerDidFinish:(SFSafariViewController *)controller {
80+
[[Branch getInstance] initUserSessionAndCallCallback:YES sceneIdentifier:nil urlString:nil reset:YES];
81+
}
82+
83+
@end
84+
85+
NS_ASSUME_NONNULL_END
86+
#endif

Sources/BranchSDK/BNCPreferenceHelper.m

Lines changed: 42 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,8 @@
7070

7171
static NSString * const BRANCH_PREFS_KEY_ATTRIBUTION_LEVEL = @"bnc_attribution_level";
7272

73+
static NSString * const BRANCH_PREFS_KEY_UX_TYPE = @"bnc_ux_type";
74+
static NSString * const BRANCH_PREFS_KEY_URL_LOAD_MS = @"bnc_url_load_ms";
7375

7476
NSURL* /* _Nonnull */ BNCURLForBranchDirectory_Unthreaded(void);
7577

@@ -129,7 +131,9 @@ @implementation BNCPreferenceHelper
129131
eeaRegion = _eeaRegion,
130132
adPersonalizationConsent = _adPersonalizationConsent,
131133
adUserDataUsageConsent = _adUserDataUsageConsent,
132-
attributionLevel = _attributionLevel;
134+
attributionLevel = _attributionLevel,
135+
uxType = _uxType,
136+
urlLoadMs = _urlLoadMs;
133137

134138
+ (BNCPreferenceHelper *)sharedInstance {
135139
static BNCPreferenceHelper *preferenceHelper = nil;
@@ -886,6 +890,43 @@ - (void)setAttributionLevel:(BranchAttributionLevel)level {
886890
[self writeObjectToDefaults:BRANCH_PREFS_KEY_ATTRIBUTION_LEVEL value:level];
887891
}
888892

893+
- (NSString *) uxType {
894+
if (!_uxType) {
895+
_uxType = [self readStringFromDefaults:BRANCH_PREFS_KEY_UX_TYPE];
896+
}
897+
return _uxType;
898+
}
899+
900+
- (void) setUxType:(NSString *)uxType {
901+
@synchronized(self) {
902+
if (![_uxType isEqualToString:uxType]) {
903+
_uxType = uxType;
904+
[self writeObjectToDefaults:BRANCH_PREFS_KEY_UX_TYPE value:uxType];
905+
}
906+
}
907+
}
908+
909+
- (NSDate*) urlLoadMs {
910+
@synchronized (self) {
911+
if (!_urlLoadMs) {
912+
_urlLoadMs = (NSDate*)[self readObjectFromDefaults:BRANCH_PREFS_KEY_URL_LOAD_MS];
913+
if ([_urlLoadMs isKindOfClass:[NSDate class]]) return _urlLoadMs;
914+
return nil;
915+
}
916+
return _urlLoadMs;
917+
}
918+
}
919+
920+
- (void) setUrlLoadMs:(NSDate *)urlLoadMs {
921+
@synchronized (self) {
922+
if (![_urlLoadMs isEqualToDate:urlLoadMs]) {
923+
_urlLoadMs = urlLoadMs;
924+
[self writeObjectToDefaults:BRANCH_PREFS_KEY_URL_LOAD_MS value:urlLoadMs];
925+
}
926+
}
927+
}
928+
929+
889930
- (void) clearTrackingInformation {
890931
@synchronized(self) {
891932
/*

0 commit comments

Comments
 (0)