Skip to content

Commit ea524f0

Browse files
committed
SDK-1934 Added public methods for setting urls for server and cdn endpoints.
* Static methods are added in class BranchPluginSupport for setting urls for server and cdn. * Custom url will be saved in preferences. If url provided by user is invalid, defaults will be saved. * Added unit tests.
1 parent 816fbc9 commit ea524f0

File tree

6 files changed

+115
-2
lines changed

6 files changed

+115
-2
lines changed

Branch-TestBed/Branch-SDK-Tests/BNCPreferenceHelperTests.m

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010
#import "BNCPreferenceHelper.h"
1111
#import "BNCEncodingUtils.h"
1212
#import "Branch.h"
13+
#import "BranchPluginSupport.h"
14+
#import "BNCConfig.h"
1315

1416
@interface BNCPreferenceHelper()
1517

@@ -241,4 +243,60 @@ - (void)testURLSkipList {
241243
XCTAssert([filterDesc isEqualToString:valueDesc]);
242244
}
243245

246+
- (void)testSetAPIURL_Example {
247+
248+
NSString *url = @"https://www.example.com/";
249+
[BranchPluginSupport setAPIUrl:url] ;
250+
251+
NSString *urlStored = [BNCPreferenceHelper sharedInstance].branchAPIURL ;
252+
XCTAssert([url isEqualToString:urlStored]);
253+
}
254+
255+
- (void)testSetAPIURL_InvalidHttp {
256+
257+
NSString *url = @"Invalid://www.example.com/";
258+
[BranchPluginSupport setAPIUrl:url] ;
259+
260+
NSString *urlStored = [BNCPreferenceHelper sharedInstance].branchAPIURL ;
261+
XCTAssert(![url isEqualToString:urlStored]);
262+
XCTAssert([urlStored isEqualToString:BNC_API_BASE_URL]);
263+
}
264+
265+
- (void)testSetAPIURL_InvalidEmpty {
266+
267+
[BranchPluginSupport setAPIUrl:@""] ;
268+
269+
NSString *urlStored = [BNCPreferenceHelper sharedInstance].branchAPIURL ;
270+
XCTAssert(![urlStored isEqualToString:@""]);
271+
XCTAssert([urlStored isEqualToString:BNC_API_BASE_URL]);
272+
}
273+
274+
- (void)testSetCDNBaseURL_Example {
275+
276+
NSString *url = @"https://www.example.com/";
277+
[BranchPluginSupport setCDNBaseUrl:url] ;
278+
279+
NSString *urlStored = [BNCPreferenceHelper sharedInstance].patternListURL ;
280+
XCTAssert([url isEqualToString:urlStored]);
281+
}
282+
283+
- (void)testSetCDNBaseURL_InvalidHttp {
284+
285+
NSString *url = @"Invalid://www.example.com/";
286+
[BranchPluginSupport setCDNBaseUrl:url] ;
287+
288+
NSString *urlStored = [BNCPreferenceHelper sharedInstance].patternListURL ;
289+
XCTAssert(![url isEqualToString:urlStored]);
290+
XCTAssert([urlStored isEqualToString:BNC_CDN_URL]);
291+
}
292+
293+
- (void)testSetCDNBaseURL_InvalidEmpty {
294+
295+
[BranchPluginSupport setCDNBaseUrl:@""] ;
296+
297+
NSString *urlStored = [BNCPreferenceHelper sharedInstance].patternListURL ;
298+
XCTAssert(![urlStored isEqualToString:@""]);
299+
XCTAssert([urlStored isEqualToString:BNC_CDN_URL]);
300+
}
301+
244302
@end

BranchSDK/BNCConfig.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,3 +17,4 @@ FOUNDATION_EXPORT NSString*_Nonnull const BNC_SDK_VERSION;
1717
FOUNDATION_EXPORT NSString*_Nonnull const BNC_API_BASE_URL;
1818
FOUNDATION_EXPORT NSString*_Nonnull const BNC_API_VERSION;
1919
FOUNDATION_EXPORT NSString*_Nonnull const BNC_LINK_URL;
20+
FOUNDATION_EXPORT NSString* _Nonnull const BNC_CDN_URL;

BranchSDK/BNCConfig.m

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,3 +12,4 @@
1212
NSString * const BNC_API_VERSION = @"v1";
1313
NSString * const BNC_LINK_URL = @"https://bnc.lt";
1414
NSString * const BNC_SDK_VERSION = @"2.1.2";
15+
NSString * const BNC_CDN_URL = @"https://cdn.branch.io";

BranchSDK/BNCPreferenceHelper.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,9 @@ NSURL* /* _Nonnull */ BNCURLForBranchDirectory(void);
9090
- (NSString *)getAPIURL:(NSString *)endpoint;
9191
- (NSString *)getEndpointFromURL:(NSString *)url;
9292

93+
- (void) setBranchAPIURL:(NSString*)branchAPIURL;
94+
- (void) setPatternListURL:(NSString*)cdnURL;
95+
9396
- (void)setRequestMetadataKey:(NSString *)key value:(NSObject *)value;
9497
- (NSMutableDictionary *)requestMetadataDictionary;
9598

BranchSDK/BNCPreferenceHelper.m

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,9 @@
2626
static NSString * const BRANCH_PREFS_KEY_LAST_RUN_BRANCH_KEY = @"bnc_last_run_branch_key";
2727
static NSString * const BRANCH_PREFS_KEY_LAST_STRONG_MATCH_DATE = @"bnc_strong_match_created_date";
2828

29+
static NSString * const BRANCH_PREFS_KEY_API_URL = @"bnc_api_url";
30+
static NSString * const BRANCH_PREFS_KEY_PATTERN_LIST_URL = @"bnc_pattern_list_url";
31+
2932
static NSString * const BRANCH_PREFS_KEY_RANDOMIZED_DEVICE_TOKEN = @"bnc_randomized_device_token";
3033
static NSString * const BRANCH_PREFS_KEY_RANDOMIZED_BUNDLE_TOKEN = @"bnc_randomized_bundle_token";
3134

@@ -112,7 +115,8 @@ @implementation BNCPreferenceHelper
112115
highestConversionValueSent = _highestConversionValueSent,
113116
logInAppPurchasesAsBranchEvents = _logInAppPurchasesAsBranchEvents,
114117
referringURLQueryParameters = _referringURLQueryParameters,
115-
anonID = _anonID;
118+
anonID = _anonID,
119+
patternListURL = _patternListURL;
116120

117121
+ (BNCPreferenceHelper *)sharedInstance {
118122
static BNCPreferenceHelper *preferenceHelper;
@@ -135,7 +139,6 @@ - (instancetype)init {
135139
_persistPrefsQueue = [[NSOperationQueue alloc] init];
136140
_persistPrefsQueue.maxConcurrentOperationCount = 1;
137141

138-
self.patternListURL = @"https://cdn.branch.io";
139142
self.disableAdNetworkCallouts = NO;
140143
}
141144
return self;
@@ -154,13 +157,18 @@ - (void) dealloc {
154157
- (void) setBranchAPIURL:(NSString*)branchAPIURL_ {
155158
@synchronized (self) {
156159
_branchAPIURL = [branchAPIURL_ copy];
160+
[self writeObjectToDefaults:BRANCH_PREFS_KEY_API_URL value:_branchAPIURL];
157161
}
158162
}
159163

160164
- (NSString*) branchAPIURL {
161165
@synchronized (self) {
162166
if (!_branchAPIURL) {
167+
_branchAPIURL = [self readStringFromDefaults:BRANCH_PREFS_KEY_API_URL];
168+
}
169+
if (_branchAPIURL == nil || [_branchAPIURL isEqualToString:@""]) {
163170
_branchAPIURL = [BNC_API_BASE_URL copy];
171+
[self writeObjectToDefaults:BRANCH_PREFS_KEY_API_URL value:_branchAPIURL];
164172
}
165173
return _branchAPIURL;
166174
}
@@ -185,6 +193,26 @@ - (NSString *)getEndpointFromURL:(NSString *)url {
185193
return @"";
186194
}
187195

196+
- (void) setPatternListURL:(NSString*)url {
197+
@synchronized (self) {
198+
_patternListURL = url;
199+
[self writeObjectToDefaults:BRANCH_PREFS_KEY_PATTERN_LIST_URL value:url];
200+
}
201+
}
202+
203+
- (NSString*) patternListURL {
204+
@synchronized (self) {
205+
if (!_patternListURL) {
206+
_patternListURL = [self readStringFromDefaults:BRANCH_PREFS_KEY_PATTERN_LIST_URL];
207+
}
208+
if (_patternListURL == nil || [_patternListURL isEqualToString:@""]) {
209+
_patternListURL = BNC_CDN_URL;
210+
[self writeObjectToDefaults:BRANCH_PREFS_KEY_PATTERN_LIST_URL value:_patternListURL];
211+
}
212+
return _patternListURL;
213+
}
214+
}
215+
188216
#pragma mark - Preference Storage
189217

190218
- (NSString *)lastRunBranchKey {

BranchSDK/BranchPluginSupport.m

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111
#import "BNCDeviceInfo.h"
1212
#import "BNCPreferenceHelper.h"
1313
#import "Branch.h"
14+
#import "BNCLog.h"
15+
#import "BNCConfig.h"
1416

1517
@implementation BranchPluginSupport
1618

@@ -50,4 +52,24 @@ + (BranchPluginSupport *)instance {
5052
return dictionary;
5153
}
5254

55+
#pragma mark - Server URL methods
56+
57+
+ (void)setAPIUrl:(NSString *)url {
58+
if([url hasPrefix:@"http://"] || [url hasPrefix:@"https://"] ){
59+
[[BNCPreferenceHelper sharedInstance] setBranchAPIURL:url];
60+
} else {
61+
BNCLogWarning([NSString stringWithFormat:@"Not setting url - %@. Its invalid.", url]);
62+
[[BNCPreferenceHelper sharedInstance] setBranchAPIURL:BNC_API_BASE_URL];
63+
}
64+
}
65+
66+
+ (void)setCDNBaseUrl:(NSString *)url {
67+
if([url hasPrefix:@"http://"] || [url hasPrefix:@"https://"] ){
68+
[[BNCPreferenceHelper sharedInstance] setPatternListURL:url];
69+
} else {
70+
BNCLogWarning([NSString stringWithFormat:@"Not setting url - %@. Its invalid.", url]);
71+
[[BNCPreferenceHelper sharedInstance] setPatternListURL:BNC_CDN_URL];
72+
}
73+
}
74+
5375
@end

0 commit comments

Comments
 (0)