Skip to content

Commit af56717

Browse files
authored
Fix blacklist open with URI scheme DEVEX-341 (#824)
* Save work. * Added code that clears the blacklisted URL after sending the regex pattern to the server. * Fixed unit tests. * Send matching blacklist regex in externalIntentURI instead.
1 parent da9b6b7 commit af56717

File tree

8 files changed

+46
-4
lines changed

8 files changed

+46
-4
lines changed

Branch-SDK/Branch-SDK/BNCPreferenceHelper.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ NSURL* /* _Nonnull */ BNCURLForBranchDirectory(void);
5353

5454
@property (strong, atomic) NSArray<NSString*> *URLBlackList;
5555
@property (assign, atomic) NSInteger URLBlackListVersion;
56+
@property (assign, atomic) BOOL blacklistURLOpen;
5657

5758
@property (assign, atomic) BOOL trackingDisabled;
5859
- (void) clearTrackingInformation;

Branch-SDK/Branch-SDK/BNCPreferenceHelper.m

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -571,6 +571,19 @@ - (void) setURLBlackListVersion:(NSInteger)URLBlackListVersion {
571571
}
572572
}
573573

574+
- (BOOL) blacklistURLOpen {
575+
@synchronized(self) {
576+
return [self readBoolFromDefaults:@"blacklistURLOpen"];
577+
}
578+
}
579+
580+
- (void) setBlacklistURLOpen:(BOOL)value {
581+
@synchronized(self) {
582+
[self writeBoolToDefaults:@"blacklistURLOpen" value:value];
583+
}
584+
}
585+
586+
574587
- (BOOL) trackingDisabled {
575588
@synchronized(self) {
576589
NSNumber *b = (id) [self readObjectFromDefaults:@"trackingDisabled"];

Branch-SDK/Branch-SDK/Branch.m

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -717,10 +717,18 @@ - (BOOL)handleDeepLink:(NSURL *)url fromSelf:(BOOL)isFromSelf {
717717
blackListPattern = [_userURLBlackList blackListPatternMatchingURL:url];
718718
}
719719
if (blackListPattern) {
720-
[self handleUniversalDeepLink_private:blackListPattern fromSelf:isFromSelf];
720+
self.preferenceHelper.blacklistURLOpen = YES;
721+
self.preferenceHelper.externalIntentURI = blackListPattern;
722+
self.preferenceHelper.referringURL = blackListPattern;
723+
[self initUserSessionAndCallCallback:!self.isInitialized];
721724
return NO;
722725
}
723726

727+
self.preferenceHelper.blacklistURLOpen = NO;
728+
self.preferenceHelper.referringURL = nil;
729+
self.preferenceHelper.externalIntentURI = nil;
730+
self.preferenceHelper.universalLinkUrl = nil;
731+
724732
NSString *scheme = [url scheme];
725733
if ([scheme isEqualToString:@"http"] || [scheme isEqualToString:@"https"]) {
726734
return [self handleUniversalDeepLink_private:url.absoluteString fromSelf:isFromSelf];

Branch-SDK/Branch-SDK/Networking/BNCServerInterface.m

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -612,7 +612,6 @@ - (void)genericHTTPRequest:(NSURLRequest *)request
612612
(prefs.spotlightIdentifier.length > 0 ) ||
613613
(prefs.universalLinkUrl.length > 0))) {
614614
// Allow this network operation since it's an open/install to resolve a link.
615-
NSLog(@"Yope!"); // EBS eDebug
616615
} else {
617616
[[BNCPreferenceHelper preferenceHelper] clearTrackingInformation];
618617
NSError *error = [NSError branchErrorWithCode:BNCTrackingDisabledError];

Branch-SDK/Branch-SDK/Networking/Requests/BranchOpenRequest.m

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,16 @@ + (NSNumber*) appUpdateState {
137137
}
138138

139139
- (void)processResponse:(BNCServerResponse *)response error:(NSError *)error {
140+
BNCPreferenceHelper *preferenceHelper = [BNCPreferenceHelper preferenceHelper];
141+
if (error && preferenceHelper.blacklistURLOpen) {
142+
// Ignore this response from the server. Dummy up a response:
143+
error = nil;
144+
response.data = @{
145+
BRANCH_RESPONSE_KEY_SESSION_DATA: @{
146+
BRANCH_RESPONSE_KEY_CLICKED_BRANCH_LINK: @0
147+
}
148+
};
149+
} else
140150
if (error) {
141151
[BranchOpenRequest releaseOpenResponseLock];
142152
if (self.callback) {
@@ -145,7 +155,6 @@ - (void)processResponse:(BNCServerResponse *)response error:(NSError *)error {
145155
return;
146156
}
147157

148-
BNCPreferenceHelper *preferenceHelper = [BNCPreferenceHelper preferenceHelper];
149158
NSDictionary *data = response.data;
150159

151160
// Handle possibly mis-parsed identity.
@@ -243,6 +252,7 @@ - (void)processResponse:(BNCServerResponse *)response error:(NSError *)error {
243252
preferenceHelper.externalIntentURI = nil;
244253
preferenceHelper.appleSearchAdNeedsSend = NO;
245254
preferenceHelper.referringURL = referringURL;
255+
preferenceHelper.blacklistURLOpen = NO;
246256

247257
NSString *string = BNCStringFromWireFormat(data[BRANCH_RESPONSE_KEY_BRANCH_IDENTITY]);
248258
if (string) preferenceHelper.identityID = string;

Branch-TestBed/Branch-SDK-Tests/BNCURLBlackList.Test.m

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,14 +23,19 @@ @implementation BNCURLBlackListTest
2323
- (void) setUp {
2424
[BNCPreferenceHelper preferenceHelper].URLBlackList = nil;
2525
[BNCPreferenceHelper preferenceHelper].URLBlackListVersion = 0;
26+
[BNCPreferenceHelper preferenceHelper].blacklistURLOpen = NO;
27+
}
28+
29+
- (void) tearDown {
30+
[BNCPreferenceHelper preferenceHelper].blacklistURLOpen = NO;
2631
}
2732

2833
- (void)testListDownLoad {
2934
XCTestExpectation *expectation = [self expectationWithDescription:@"BlackList Download"];
3035
BNCURLBlackList *blackList = [BNCURLBlackList new];
3136
[blackList refreshBlackListFromServerWithCompletion:^ (NSError*error, NSArray*list) {
3237
XCTAssertNil(error);
33-
XCTAssertTrue(list.count == 7);
38+
XCTAssertTrue(list.count == 6);
3439
[expectation fulfill];
3540
}];
3641
[self awaitExpectations];

Branch-TestBed/Branch-TestBed-UITests/UITestBed/Info.plist

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
<key>CFBundleURLSchemes</key>
2525
<array>
2626
<string>branchuitest</string>
27+
<string>fb123</string>
2728
</array>
2829
</dict>
2930
</array>

ChangeLog.md

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

3+
- v0.24.2
4+
* _*Master Release*_ - April 19, 2018
5+
* Fixed a bug where a opening a blacklisted URI scheme would cause an HTTP status 400 for each
6+
Branch open until the app was opened with a universal link.
7+
38
- v0.24.1
49
* _*Master Release*_ - April 5, 2018
510
* Updated the SDK for Xcode 9.3 and Swift 4.1.

0 commit comments

Comments
 (0)