Skip to content

Commit b58e491

Browse files
release: v13.4.0 (#506)
* chore(ios): bump sdk to v13.4.0 * chore(android): bump sdk to v13.4.0 * chore: bump sdk version to v13.4.0 * chore: update changelog * fix(ios): update native network logging method signature (#507) * fix(ios): update native network logging method signature * feat(example): add network logging in example --------- Co-authored-by: Ahmed alaa <[email protected]>
1 parent d02e127 commit b58e491

File tree

13 files changed

+55
-210
lines changed

13 files changed

+55
-210
lines changed

CHANGELOG.md

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,17 @@
11
# Changelog
22

3-
## [Unreleased](https://github.com/Instabug/Instabug-Flutter/compare/v13.3.0...dev)
3+
## [13.4.0](https://github.com/Instabug/Instabug-Flutter/compare/v13.3.0...v13.4.0) (September 15, 2024)
44

55
### Added
66

77
- Add support for masking screen names captured by Instabug through the `Instabug.setScreenNameMaskingCallback` API ([#500](https://github.com/Instabug/Instabug-Flutter/pull/500)).
88
- Add support for tracing network requests from Instabug to services like Datadog and New Relic ([#481](https://github.com/Instabug/Instabug-Flutter/pull/481)).
99

10+
### Changed
11+
12+
- Bump Instabug Android SDK to v13.4.0 ([#506](https://github.com/Instabug/Instabug-Flutter/pull/506)). [See release notes](https://github.com/Instabug/Instabug-Android/releases/tag/v13.4.0).
13+
- Bump Instabug iOS SDK to v13.4.0 ([#506](https://github.com/Instabug/Instabug-Flutter/pull/506)). [See release notes](https://github.com/Instabug/Instabug-iOS/releases/tag/13.4.0).
14+
1015
### Fixed
1116

1217
- Fixed an issue with empty screen names captured in `InstabugNavigatorObserver` and fallback to `N/A` when the screen name is empty ([#505](https://github.com/Instabug/Instabug-Flutter/pull/505)), closes [#504](https://github.com/Instabug/Instabug-Flutter/issues/504).

android/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
group 'com.instabug.flutter'
2-
version '13.3.0'
2+
version '13.4.0'
33

44
buildscript {
55
repositories {

example/ios/InstabugTests/InstabugApiTests.m

Lines changed: 2 additions & 149 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,8 @@
44
#import "InstabugApi.h"
55
#import "Instabug/Instabug.h"
66
#import "Util/Instabug+Test.h"
7-
#import "Util/IBGNetworkLogger+Test.h"
7+
#import "IBGNetworkLogger+CP.h"
88
#import "Flutter/Flutter.h"
9-
#import "instabug_flutter/IBGAPM+PrivateAPIs.h"
10-
#import "instabug_flutter/IBGNetworkLogger+CP.h"
119

1210
@interface InstabugTests : XCTestCase
1311

@@ -441,159 +439,14 @@ - (void)testNetworkLog {
441439
partialID:nil
442440
timestamp:nil
443441
generatedW3CTraceparent:nil
444-
caughtedW3CTraceparent:nil
445-
446-
447-
448-
]);
442+
caughtedW3CTraceparent:nil]);
449443
}
450-
- (void)testNetworkLogWithW3Caught {
451-
NSString *url = @"https://example.com";
452-
NSString *requestBody = @"hi";
453-
NSNumber *requestBodySize = @17;
454-
NSString *responseBody = @"{\"hello\":\"world\"}";
455-
NSNumber *responseBodySize = @153;
456-
NSString *method = @"POST";
457-
NSNumber *responseCode = @201;
458-
NSString *responseContentType = @"application/json";
459-
NSNumber *duration = @23000;
460-
NSNumber *startTime = @1670156107523;
461-
NSDictionary *requestHeaders = @{ @"Accepts": @"application/json",@"traceparent":@"1234"};
462-
NSDictionary *responseHeaders = @{ @"Content-Type": @"text/plain" };
463-
NSDictionary *data = @{
464-
@"url": url,
465-
@"requestBody": requestBody,
466-
@"requestBodySize": requestBodySize,
467-
@"responseBody": responseBody,
468-
@"responseBodySize": responseBodySize,
469-
@"method": method,
470-
@"responseCode": responseCode,
471-
@"requestHeaders": requestHeaders,
472-
@"responseHeaders": responseHeaders,
473-
@"responseContentType": responseContentType,
474-
@"duration": duration,
475-
@"startTime": startTime,
476-
@"isW3cHeaderFound":@1,
477-
@"w3CCaughtHeader":@"1234"
478-
};
479-
480-
FlutterError* error;
481-
482-
[self.api networkLogData:data error:&error];
483-
484-
OCMVerify([self.mNetworkLogger addNetworkLogWithUrl:url
485-
method:method
486-
requestBody:requestBody
487-
requestBodySize:requestBodySize.integerValue
488-
responseBody:responseBody
489-
responseBodySize:responseBodySize.integerValue
490-
responseCode:(int32_t) responseCode.integerValue
491-
requestHeaders:requestHeaders
492-
responseHeaders:responseHeaders
493-
contentType:responseContentType
494-
errorDomain:nil
495-
errorCode:0
496-
startTime:startTime.integerValue * 1000
497-
duration:duration.integerValue
498-
gqlQueryName:nil
499-
serverErrorMessage:nil
500-
isW3cCaughted:@1
501-
partialID:nil
502-
timestamp:nil
503-
generatedW3CTraceparent:nil
504-
caughtedW3CTraceparent:@"1234"
505-
506-
507-
508-
]);
509-
}
510-
511-
- (void)testNetworkLogWithW3GeneratedHeader {
512-
NSString *url = @"https://example.com";
513-
NSString *requestBody = @"hi";
514-
NSNumber *requestBodySize = @17;
515-
NSString *responseBody = @"{\"hello\":\"world\"}";
516-
NSNumber *responseBodySize = @153;
517-
NSString *method = @"POST";
518-
NSNumber *responseCode = @201;
519-
NSString *responseContentType = @"application/json";
520-
NSNumber *duration = @23000;
521-
NSNumber *startTime = @1670156107523;
522-
NSDictionary *requestHeaders = @{ @"Accepts": @"application/json" };
523-
NSDictionary *responseHeaders = @{ @"Content-Type": @"text/plain" };
524-
NSDictionary *data = @{
525-
@"url": url,
526-
@"requestBody": requestBody,
527-
@"requestBodySize": requestBodySize,
528-
@"responseBody": responseBody,
529-
@"responseBodySize": responseBodySize,
530-
@"method": method,
531-
@"responseCode": responseCode,
532-
@"requestHeaders": requestHeaders,
533-
@"responseHeaders": responseHeaders,
534-
@"responseContentType": responseContentType,
535-
@"duration": duration,
536-
@"startTime": startTime,
537-
@"isW3cHeaderFound": @0,
538-
@"partialId": @12,
539-
@"networkStartTimeInSeconds": @34,
540-
@"w3CGeneratedHeader": @"12-34",
541-
542-
};
543-
FlutterError* error;
544444

545-
[self.api networkLogData:data error:&error];
546-
547-
OCMVerify([self.mNetworkLogger addNetworkLogWithUrl:url
548-
method:method
549-
requestBody:requestBody
550-
requestBodySize:requestBodySize.integerValue
551-
responseBody:responseBody
552-
responseBodySize:responseBodySize.integerValue
553-
responseCode:(int32_t) responseCode.integerValue
554-
requestHeaders:requestHeaders
555-
responseHeaders:responseHeaders
556-
contentType:responseContentType
557-
errorDomain:nil
558-
errorCode:0
559-
startTime:startTime.integerValue * 1000
560-
duration:duration.integerValue
561-
gqlQueryName:nil
562-
serverErrorMessage:nil
563-
isW3cCaughted:@0
564-
partialID:@12
565-
timestamp:@34
566-
generatedW3CTraceparent:@"12-34"
567-
caughtedW3CTraceparent:nil
568-
569-
570-
571-
]);
572-
}
573445
- (void)testWillRedirectToAppStore {
574446
FlutterError *error;
575447
[self.api willRedirectToStoreWithError:&error];
576448

577449
OCMVerify([self.mInstabug willRedirectToAppStore]);
578450
}
579-
- (void)testisW3CFeatureFlagsEnabled{
580-
FlutterError *error;
581-
582-
id mock = OCMClassMock([IBGNetworkLogger class]);
583-
NSNumber *isW3cExternalTraceIDEnabled = @(YES);
584-
585-
OCMStub([mock w3ExternalTraceIDEnabled]).andReturn([isW3cExternalTraceIDEnabled boolValue]);
586-
OCMStub([mock w3ExternalGeneratedHeaderEnabled]).andReturn([isW3cExternalTraceIDEnabled boolValue]);
587-
OCMStub([mock w3CaughtHeaderEnabled]).andReturn([isW3cExternalTraceIDEnabled boolValue]);
588-
589-
590-
591-
NSDictionary<NSString* , NSNumber *> * result= [self.api isW3CFeatureFlagsEnabledWithError:&error];
592-
593-
XCTAssertEqual(result[@"isW3cExternalTraceIDEnabled"],isW3cExternalTraceIDEnabled);
594-
XCTAssertEqual(result[@"isW3cExternalGeneratedHeaderEnabled"],isW3cExternalTraceIDEnabled);
595-
XCTAssertEqual(result[@"isW3cCaughtHeaderEnabled"],isW3cExternalTraceIDEnabled);
596-
597-
}
598451

599452
@end

example/ios/Podfile.lock

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
PODS:
22
- Flutter (1.0.0)
33
- Instabug (13.4.0)
4-
- instabug_flutter (13.3.0):
4+
- instabug_flutter (13.4.0):
55
- Flutter
66
- Instabug (= 13.4.0)
77
- OCMock (3.6)
@@ -25,9 +25,9 @@ EXTERNAL SOURCES:
2525
SPEC CHECKSUMS:
2626
Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7
2727
Instabug: 183aa1e038d01ddc000f06835f46a9ea1f6c992b
28-
instabug_flutter: ea66471d4f6c1a26ca7de18bf7046d271c863d4a
28+
instabug_flutter: 2cae2dc6f1d9e2442154886b3740a47f3429d239
2929
OCMock: 5ea90566be239f179ba766fd9fbae5885040b992
3030

3131
PODFILE CHECKSUM: 8f7552fd115ace1988c3db54a69e4a123c448f84
3232

33-
COCOAPODS: 1.15.2
33+
COCOAPODS: 1.14.3

example/ios/Runner.xcodeproj/project.pbxproj

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,6 @@
8787
CC359DB82937720C0067A924 /* ApmApiTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ApmApiTests.m; sourceTree = "<group>"; };
8888
CC3D69E6293F47FC000DCE54 /* ArgsRegistryTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ArgsRegistryTests.m; sourceTree = "<group>"; };
8989
CC78720E293CA8EE008CB2A5 /* Instabug+Test.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Instabug+Test.h"; sourceTree = "<group>"; };
90-
CC787211293CAB28008CB2A5 /* IBGNetworkLogger+Test.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "IBGNetworkLogger+Test.h"; sourceTree = "<group>"; };
9190
CC9925D1293DEB0B001FD3EE /* CrashReportingApiTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CrashReportingApiTests.m; sourceTree = "<group>"; };
9291
CC9925D4293DF534001FD3EE /* FeatureRequestsApiTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = FeatureRequestsApiTests.m; sourceTree = "<group>"; };
9392
CC9925D6293DFB03001FD3EE /* InstabugLogApiTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = InstabugLogApiTests.m; sourceTree = "<group>"; };
@@ -216,7 +215,6 @@
216215
children = (
217216
BE26C80C2BD55575009FECCF /* IBGCrashReporting+CP.h */,
218217
CC78720E293CA8EE008CB2A5 /* Instabug+Test.h */,
219-
CC787211293CAB28008CB2A5 /* IBGNetworkLogger+Test.h */,
220218
CC198C62293E2392007077C8 /* IBGSurvey+Test.h */,
221219
);
222220
path = Util;

example/lib/main.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@ import 'dart:async';
22
import 'dart:developer';
33
import 'dart:io';
44
import 'dart:convert';
5-
import 'package:http/http.dart' as http;
65

76
import 'package:flutter/material.dart';
87
import 'package:instabug_flutter/instabug_flutter.dart';
8+
import 'package:instabug_http_client/instabug_http_client.dart';
99
import 'package:instabug_flutter_example/src/app_routes.dart';
1010
import 'package:instabug_flutter_example/src/widget/nested_view.dart';
1111

example/lib/src/components/network_content.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ class NetworkContent extends StatefulWidget {
1010
}
1111

1212
class _NetworkContentState extends State<NetworkContent> {
13+
final http = InstabugHttpClient();
14+
1315
final endpointUrlController = TextEditingController();
1416

1517
@override

example/pubspec.lock

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,15 @@ packages:
115115
path: ".."
116116
relative: true
117117
source: path
118-
version: "13.3.0"
118+
version: "13.4.0"
119+
instabug_http_client:
120+
dependency: "direct main"
121+
description:
122+
name: instabug_http_client
123+
sha256: "7d52803c0dd639f6dddbe07333418eb251ae02f3f9f4d30402517533ca692784"
124+
url: "https://pub.dev"
125+
source: hosted
126+
version: "2.4.0"
119127
leak_tracker:
120128
dependency: transitive
121129
description:

example/pubspec.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ dependencies:
2626
http: ^0.13.0
2727
instabug_flutter:
2828
path: ../
29+
instabug_http_client: ^2.4.0
2930

3031
dev_dependencies:
3132
espresso: 0.2.0+5
@@ -35,6 +36,10 @@ dev_dependencies:
3536
sdk: flutter
3637
flutter_lints: 1.0.4
3738

39+
dependency_overrides:
40+
instabug_flutter:
41+
path: ../
42+
3843
# For information on the generic Dart part of this file, see the
3944
# following page: https://dart.dev/tools/pub/pubspec
4045

ios/Classes/Modules/InstabugApi.m

Lines changed: 23 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -263,10 +263,10 @@ - (void)networkLogData:(NSDictionary<NSString *, id> *)data error:(FlutterError
263263
NSString *method = data[@"method"];
264264
NSString *requestBody = data[@"requestBody"];
265265
NSString *responseBody = data[@"responseBody"];
266-
int32_t responseCode = [data[@"responseCode"] integerValue];
266+
int32_t responseCode = (int32_t) [data[@"responseCode"] integerValue];
267267
int64_t requestBodySize = [data[@"requestBodySize"] integerValue];
268268
int64_t responseBodySize = [data[@"responseBodySize"] integerValue];
269-
int32_t errorCode = [data[@"errorCode"] integerValue];
269+
int32_t errorCode = (int32_t) [data[@"errorCode"] integerValue];
270270
NSString *errorDomain = data[@"errorDomain"];
271271
NSDictionary *requestHeaders = data[@"requestHeaders"];
272272
if ([requestHeaders count] == 0) {
@@ -286,32 +286,27 @@ - (void)networkLogData:(NSDictionary<NSString *, id> *)data error:(FlutterError
286286
serverErrorMessage = data[@"serverErrorMessage"];
287287
}
288288

289-
SEL networkLogSEL = NSSelectorFromString(@"addNetworkLogWithUrl:method:requestBody:requestBodySize:responseBody:responseBodySize:responseCode:requestHeaders:responseHeaders:contentType:errorDomain:errorCode:startTime:duration:gqlQueryName:serverErrorMessage:");
290-
291-
if ([[IBGNetworkLogger class] respondsToSelector:networkLogSEL]) {
292-
NSInvocation *inv = [NSInvocation invocationWithMethodSignature:[[IBGNetworkLogger class] methodSignatureForSelector:networkLogSEL]];
293-
[inv setSelector:networkLogSEL];
294-
[inv setTarget:[IBGNetworkLogger class]];
295-
296-
[inv setArgument:&(url) atIndex:2];
297-
[inv setArgument:&(method) atIndex:3];
298-
[inv setArgument:&(requestBody) atIndex:4];
299-
[inv setArgument:&(requestBodySize) atIndex:5];
300-
[inv setArgument:&(responseBody) atIndex:6];
301-
[inv setArgument:&(responseBodySize) atIndex:7];
302-
[inv setArgument:&(responseCode) atIndex:8];
303-
[inv setArgument:&(requestHeaders) atIndex:9];
304-
[inv setArgument:&(responseHeaders) atIndex:10];
305-
[inv setArgument:&(contentType) atIndex:11];
306-
[inv setArgument:&(errorDomain) atIndex:12];
307-
[inv setArgument:&(errorCode) atIndex:13];
308-
[inv setArgument:&(startTime) atIndex:14];
309-
[inv setArgument:&(duration) atIndex:15];
310-
[inv setArgument:&(gqlQueryName) atIndex:16];
311-
[inv setArgument:&(serverErrorMessage) atIndex:17];
312-
313-
[inv invoke];
314-
}
289+
[IBGNetworkLogger addNetworkLogWithUrl:url
290+
method:method
291+
requestBody:requestBody
292+
requestBodySize:requestBodySize
293+
responseBody:responseBody
294+
responseBodySize:responseBodySize
295+
responseCode:responseCode
296+
requestHeaders:requestHeaders
297+
responseHeaders:responseHeaders
298+
contentType:contentType
299+
errorDomain:errorDomain
300+
errorCode:errorCode
301+
startTime:startTime
302+
duration:duration
303+
gqlQueryName:gqlQueryName
304+
serverErrorMessage:serverErrorMessage
305+
isW3cCaughted:nil
306+
partialID:nil
307+
timestamp:nil
308+
generatedW3CTraceparent:nil
309+
caughtedW3CTraceparent:nil];
315310
}
316311

317312
- (void)willRedirectToStoreWithError:(FlutterError * _Nullable __autoreleasing *)error {

0 commit comments

Comments
 (0)