Skip to content

Commit 6193fdf

Browse files
authored
Merge pull request #372 from BranchMetrics/update_sdks
Update sdks
2 parents 1dcdb76 + 8616c6a commit 6193fdf

19 files changed

+358
-148
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"name": "branch-cordova-sdk",
33
"description": "Branch Metrics Cordova SDK",
44
"main": "src/branch.js",
5-
"version": "2.6.12",
5+
"version": "2.6.13",
66
"homepage": "https://github.com/BranchMetrics/cordova-ionic-phonegap-branch-deep-linking",
77
"repository": {
88
"type": "git",

plugin.template.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ SOFTWARE.
2424
<plugin xmlns="http://apache.org/cordova/ns/plugins/1.0"
2525
xmlns:android="http://schemas.android.com/apk/res/android"
2626
id="branch-cordova-sdk"
27-
version="2.6.12">
27+
version="2.6.13">
2828

2929
<!-- DO NOT EDIT THIS FILE. MAKE ALL CHANGES TO plugin.template.xml INSTEAD -->
3030

plugin.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ SOFTWARE.
2424
<plugin xmlns="http://apache.org/cordova/ns/plugins/1.0"
2525
xmlns:android="http://schemas.android.com/apk/res/android"
2626
id="branch-cordova-sdk"
27-
version="2.6.12">
27+
version="2.6.13">
2828

2929
<!-- DO NOT EDIT THIS FILE. MAKE ALL CHANGES TO plugin.template.xml INSTEAD -->
3030

-244 KB
Binary file not shown.
250 KB
Binary file not shown.

src/ios/dependencies/Branch-SDK/BNCConfig.m

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,4 @@
1111
NSString * const BNC_API_BASE_URL = @"https://api.branch.io";
1212
NSString * const BNC_API_VERSION = @"v1";
1313
NSString * const BNC_LINK_URL = @"https://bnc.lt";
14-
NSString * const BNC_SDK_VERSION = @"0.17.9";
14+
NSString * const BNC_SDK_VERSION = @"0.18.8";

src/ios/dependencies/Branch-SDK/BNCDeviceInfo.m

Lines changed: 56 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -65,11 +65,9 @@ - (id)init {
6565
return self;
6666
}
6767

68-
- (NSString *)vendorId
69-
{
68+
- (NSString *)vendorId {
7069
@synchronized (self) {
7170
if (_vendorId) return _vendorId;
72-
7371
/*
7472
* https://developer.apple.com/documentation/uikit/uidevice/1620059-identifierforvendor
7573
* BNCSystemObserver.getVendorId is based on UIDevice.identifierForVendor. Note from the
@@ -179,59 +177,71 @@ + (NSString*) systemBuildVersion {
179177
return version;
180178
}
181179

182-
183180
+ (NSString*) userAgentString {
184-
185-
static NSString* browserUserAgentString = nil;
186-
void (^setBrowserUserAgent)(void) = ^() {
187-
if (!browserUserAgentString) {
188-
browserUserAgentString =
189-
[[[UIWebView alloc]
190-
initWithFrame:CGRectZero]
191-
stringByEvaluatingJavaScriptFromString:@"navigator.userAgent"];
192-
BNCPreferenceHelper *preferences = [BNCPreferenceHelper preferenceHelper];
193-
preferences.browserUserAgentString = browserUserAgentString;
194-
preferences.lastSystemBuildVersion = self.systemBuildVersion;
195-
BNCLogDebugSDK(@"userAgentString: '%@'.", browserUserAgentString);
196-
}
181+
182+
static NSString* brn_browserUserAgentString = nil;
183+
184+
void (^setBrowserUserAgent)(void) = ^() {
185+
@synchronized (self) {
186+
if (!brn_browserUserAgentString) {
187+
brn_browserUserAgentString =
188+
[[[UIWebView alloc]
189+
initWithFrame:CGRectZero]
190+
stringByEvaluatingJavaScriptFromString:@"navigator.userAgent"];
191+
BNCPreferenceHelper *preferences = [BNCPreferenceHelper preferenceHelper];
192+
preferences.browserUserAgentString = brn_browserUserAgentString;
193+
preferences.lastSystemBuildVersion = self.systemBuildVersion;
194+
BNCLogDebugSDK(@"userAgentString: '%@'.", brn_browserUserAgentString);
195+
}
196+
}
197197
};
198198

199-
// We only get the string once per app run:
199+
NSString* (^browserUserAgent)(void) = ^ NSString* () {
200+
@synchronized (self) {
201+
return brn_browserUserAgentString;
202+
}
203+
};
204+
205+
@synchronized (self) {
206+
// We only get the string once per app run:
200207

201-
if (browserUserAgentString)
202-
return browserUserAgentString;
208+
if (brn_browserUserAgentString)
209+
return brn_browserUserAgentString;
203210

204-
// Did we cache it?
211+
// Did we cache it?
205212

206-
BNCPreferenceHelper *preferences = [BNCPreferenceHelper preferenceHelper];
207-
if (preferences.browserUserAgentString &&
208-
preferences.lastSystemBuildVersion &&
209-
[preferences.lastSystemBuildVersion isEqualToString:self.systemBuildVersion]) {
210-
browserUserAgentString = [preferences.browserUserAgentString copy];
211-
return browserUserAgentString;
212-
}
213+
BNCPreferenceHelper *preferences = [BNCPreferenceHelper preferenceHelper];
214+
if (preferences.browserUserAgentString &&
215+
preferences.lastSystemBuildVersion &&
216+
[preferences.lastSystemBuildVersion isEqualToString:self.systemBuildVersion]) {
217+
brn_browserUserAgentString = [preferences.browserUserAgentString copy];
218+
return brn_browserUserAgentString;
219+
}
220+
221+
// Make sure this executes on the main thread.
222+
// Uses an implied lock through dispatch_queues: This can deadlock if mis-used!
213223

214-
// Make sure this executes on the main thread.
215-
// Uses an implied lock through dispatch_queues: This can deadlock if mis-used!
224+
if (NSThread.isMainThread) {
225+
setBrowserUserAgent();
226+
return brn_browserUserAgentString;
227+
}
216228

217-
if (NSThread.isMainThread) {
218-
setBrowserUserAgent();
219-
return browserUserAgentString;
220-
}
229+
}
221230

222231
// Different case for iOS 7.0:
223232
if ([UIDevice currentDevice].systemVersion.floatValue < 8.0) {
233+
BNCLogDebugSDK(@"Getting iOS 7 UserAgent.");
224234
dispatch_sync(dispatch_get_main_queue(), ^ {
225235
setBrowserUserAgent();
226236
});
227-
return browserUserAgentString;
237+
BNCLogDebugSDK(@"Got iOS 7 UserAgent.");
238+
return browserUserAgent();
228239
}
229240

230-
// Wait and yield to prevent deadlock:
231-
232-
int retries = 10;
233-
int64_t timeoutDelta = (dispatch_time_t)((long double)NSEC_PER_SEC * (long double)0.100);
234-
while (!browserUserAgentString && retries > 0) {
241+
// Wait and yield to prevent deadlock:
242+
int retries = 10;
243+
int64_t timeoutDelta = (dispatch_time_t)((long double)NSEC_PER_SEC * (long double)0.100);
244+
while (!browserUserAgent() && retries > 0) {
235245

236246
dispatch_block_t agentBlock = dispatch_block_create_with_qos_class(
237247
DISPATCH_BLOCK_DETACHED | DISPATCH_BLOCK_ENFORCE_QOS_CLASS,
@@ -243,11 +253,13 @@ + (NSString*) userAgentString {
243253
});
244254
dispatch_async(dispatch_get_main_queue(), agentBlock);
245255

246-
dispatch_time_t timeoutTime = dispatch_time(DISPATCH_TIME_NOW, timeoutDelta);
256+
dispatch_time_t timeoutTime = dispatch_time(DISPATCH_TIME_NOW, timeoutDelta);
247257
dispatch_block_wait(agentBlock, timeoutTime);
248-
retries--;
249-
}
250-
return browserUserAgentString;
258+
retries--;
259+
}
260+
BNCLogDebugSDK(@"Retries: %d", 10-retries);
261+
262+
return browserUserAgent();
251263
}
252264

253265
@end

src/ios/dependencies/Branch-SDK/BNCEncodingUtils.h

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,20 @@
88

99
#import <Foundation/Foundation.h>
1010

11+
#pragma mark BNCKeyValue
12+
13+
@interface BNCKeyValue : NSObject
14+
15+
+ (BNCKeyValue*) key:(NSString*)key value:(NSString*)value;
16+
- (NSString*) description;
17+
18+
@property (nonatomic, strong) NSString* key;
19+
@property (nonatomic, strong) NSString* value;
20+
21+
@end
22+
23+
#pragma mark - BNCEncodingUtils
24+
1125
@interface BNCEncodingUtils : NSObject
1226

1327
+ (NSString *)base64EncodeStringToString:(NSString *)strData;
@@ -22,11 +36,16 @@
2236
+ (NSString *)encodeDictionaryToJsonString:(NSDictionary *)dictionary;
2337
+ (NSData *)encodeDictionaryToJsonData:(NSDictionary *)dictionary;
2438

39+
+ (NSString*) stringByPercentDecodingString:(NSString*)string;
40+
2541
+ (NSDictionary *)decodeJsonDataToDictionary:(NSData *)jsonData;
2642
+ (NSDictionary *)decodeJsonStringToDictionary:(NSString *)jsonString;
2743
+ (NSDictionary *)decodeQueryStringToDictionary:(NSString *)queryString;
2844
+ (NSString *)encodeDictionaryToQueryString:(NSDictionary *)dictionary;
2945

3046
+ (NSString *) hexStringFromData:(NSData*)data;
3147
+ (NSData *) dataFromHexString:(NSString*)string;
48+
49+
+ (NSArray<BNCKeyValue*>*) queryItems:(NSURL*)URL;
50+
3251
@end

src/ios/dependencies/Branch-SDK/BNCEncodingUtils.m

Lines changed: 77 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,33 @@
1111
#import "BNCLog.h"
1212
#import <CommonCrypto/CommonDigest.h>
1313

14+
#pragma mark BNCKeyValue
15+
16+
@implementation BNCKeyValue
17+
18+
+ (BNCKeyValue*) key:(NSString*)key value:(NSString*)value {
19+
BNCKeyValue *kv = [[BNCKeyValue alloc] init];
20+
kv.key = key;
21+
kv.value = value;
22+
return kv;
23+
}
24+
25+
- (NSString*) description {
26+
return [NSString stringWithFormat:@"<%@, %@>", self.key, self.value];
27+
}
28+
29+
- (BOOL) isEqual:(BNCKeyValue*)object {
30+
return
31+
[object isKindOfClass:[BNCKeyValue class]] &&
32+
[self.key isEqualToString:object.key] &&
33+
[self.value isEqualToString:object.value]
34+
;
35+
}
36+
37+
@end
38+
39+
#pragma mark - BNCEncodingUtils
40+
1441
@implementation BNCEncodingUtils
1542

1643
#pragma mark - Base 64 Encoding
@@ -113,8 +140,14 @@ + (NSString *)encodeDictionaryToJsonString:(NSDictionary *)dictionary {
113140
string = NO;
114141
}
115142
else if ([obj isKindOfClass:[NSNumber class]]) {
116-
value = [obj stringValue];
117143
string = NO;
144+
if (obj == (id)kCFBooleanFalse)
145+
value = @"false";
146+
else
147+
if (obj == (id)kCFBooleanTrue)
148+
value = @"true";
149+
else
150+
value = [obj stringValue];
118151
}
119152
else if ([obj isKindOfClass:[NSNull class]]) {
120153
value = @"null";
@@ -251,7 +284,12 @@ + (NSString *)encodeDictionaryToQueryString:(NSDictionary *)dictionary {
251284
return queryString;
252285
}
253286

254-
#pragma mark - Param Decoding methods
287+
+ (NSString*) stringByPercentDecodingString:(NSString *)string {
288+
return [string stringByRemovingPercentEncoding];
289+
}
290+
291+
#pragma mark - Param Decoding Methods
292+
255293
+ (NSDictionary *)decodeJsonDataToDictionary:(NSData *)jsonData {
256294
NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
257295

@@ -393,4 +431,41 @@ + (NSData *) dataFromHexString:(NSString*)string {
393431
return data;
394432
}
395433

434+
#pragma mark - URL QueryItems
435+
436+
+ (NSArray<BNCKeyValue*>*) queryItems:(NSURL*)URL {
437+
NSMutableArray* keyValues = [NSMutableArray new];
438+
if (!URL) return keyValues;
439+
440+
NSArray *queryItems = [[URL query] componentsSeparatedByString:@"&"];
441+
for (NSString* itemPair in queryItems) {
442+
443+
BNCKeyValue *keyValue = [BNCKeyValue new];
444+
NSRange range = [itemPair rangeOfString:@"="];
445+
if (range.location == NSNotFound) {
446+
if (itemPair.length)
447+
keyValue.key = itemPair;
448+
} else {
449+
keyValue.key = [itemPair substringWithRange:NSMakeRange(0, range.location)];
450+
NSRange r = NSMakeRange(range.location+1, itemPair.length-range.location-1);
451+
if (r.length > 0)
452+
keyValue.value = [itemPair substringWithRange:r];
453+
}
454+
455+
keyValue.key = [BNCEncodingUtils stringByPercentDecodingString:keyValue.key];
456+
keyValue.key = [keyValue.key stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
457+
458+
keyValue.value = [BNCEncodingUtils stringByPercentDecodingString:keyValue.value];
459+
keyValue.value = [keyValue.value stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
460+
461+
if (keyValue.key.length || keyValue.value.length) {
462+
if (keyValue.key == nil) keyValue.key = @"";
463+
if (keyValue.value == nil) keyValue.value = @"";
464+
[keyValues addObject:keyValue];
465+
}
466+
}
467+
468+
return keyValues;
469+
}
470+
396471
@end

src/ios/dependencies/Branch-SDK/BNCLog.h

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ extern NSString *_Nonnull const BNCLogStringFromLogLevel(BNCLogLevel level);
6565
* @param string A string indicating the log level.
6666
* @return Returns The log level corresponding to the string.
6767
*/
68-
extern BNCLogLevel BNBLogLevelFromString(NSString*_Null_unspecified string);
68+
extern BNCLogLevel BNCLogLevelFromString(NSString*_Null_unspecified string);
6969

7070

7171
#pragma mark - Programmatic Breakpoints
@@ -78,6 +78,16 @@ extern BOOL BNCLogBreakPointsAreEnabled(void);
7878
extern void BNCLogSetBreakPointsEnabled(BOOL enabled);
7979

8080

81+
#pragma mark - Client Initialization Function
82+
83+
84+
typedef void (*BNCLogClientInitializeFunctionPtr)(void);
85+
86+
///@param clientInitializationFunction The client function that should be called before logging starts.
87+
extern BNCLogClientInitializeFunctionPtr _Null_unspecified
88+
BNCLogSetClientInitializeFunction(BNCLogClientInitializeFunctionPtr _Nullable clientInitializationFunction);
89+
90+
8191
#pragma mark - Optional Log Output Handlers
8292

8393

0 commit comments

Comments
 (0)