Skip to content

Commit 14b87bf

Browse files
committed
ref: Convert SentryEnvelopeHeader to Swift
1 parent 93c76b0 commit 14b87bf

File tree

6 files changed

+100
-102
lines changed

6 files changed

+100
-102
lines changed

Sentry.xcodeproj/project.pbxproj

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1044,9 +1044,9 @@
10441044
F4DCC9DD2E4AA9D0008ECE45 /* SentrySDKSettingsTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4DCC9DC2E4AA9D0008ECE45 /* SentrySDKSettingsTests.swift */; };
10451045
F4DCC9E52E4AACE0008ECE45 /* SentrySDKSettings+Equality.m in Sources */ = {isa = PBXBuildFile; fileRef = F4DCC9E42E4AACE0008ECE45 /* SentrySDKSettings+Equality.m */; };
10461046
F4E3DCCB2E1579240093CB80 /* SentryScopePersistentStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4E3DCCA2E1579240093CB80 /* SentryScopePersistentStore.swift */; };
1047+
F4FE9DBD2E621F100014FED5 /* SentryRandom.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4FE9DBC2E621F100014FED5 /* SentryRandom.swift */; };
10471048
F4FE9DFD2E622CD70014FED5 /* SentryDefaultObjCRuntimeWrapper.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4FE9DFB2E622CD70014FED5 /* SentryDefaultObjCRuntimeWrapper.swift */; };
10481049
F4FE9DFE2E622CD70014FED5 /* SentryObjCRuntimeWrapper.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4FE9DFC2E622CD70014FED5 /* SentryObjCRuntimeWrapper.swift */; };
1049-
F4FE9DBD2E621F100014FED5 /* SentryRandom.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4FE9DBC2E621F100014FED5 /* SentryRandom.swift */; };
10501050
FA034AC82DD3DB4900FE3107 /* SentryIntegrationProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = FA034AC72DD3DB4900FE3107 /* SentryIntegrationProtocol.h */; settings = {ATTRIBUTES = (Public, ); }; };
10511051
FA21A2EF2E60E9CB00E7EADB /* EnvelopeComparison.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA21A2E92E60E9C700E7EADB /* EnvelopeComparison.swift */; };
10521052
FA21F0B42E4A2A80008B4E5A /* SentryAppState.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA4C32972DF7513F001D7B01 /* SentryAppState.swift */; };
@@ -1055,6 +1055,7 @@
10551055
FA3734862E0F09320091EF24 /* SentryDependencyContainerSwiftHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = FA3734852E0F092F0091EF24 /* SentryDependencyContainerSwiftHelper.m */; };
10561056
FA3854362E267DA60045A563 /* SentryUser+Serialize.h in Headers */ = {isa = PBXBuildFile; fileRef = FA3854352E267DA20045A563 /* SentryUser+Serialize.h */; };
10571057
FA3A42722E1C5F9B00A08C39 /* SentryNSNotificationCenterWrapper.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA3A42712E1C5F9B00A08C39 /* SentryNSNotificationCenterWrapper.swift */; };
1058+
FA3AEE782E68E2830092283E /* SentryEnvelopeHeader.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA3AEE772E68E2830092283E /* SentryEnvelopeHeader.swift */; };
10581059
FA4C32972DF7513F001D7B00 /* SentryExperimentalOptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA4C32962DF7513F001D7B00 /* SentryExperimentalOptions.swift */; };
10591060
FA6555142E30181B009917BC /* SentrySDKInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = FA6555132E30181B009917BC /* SentrySDKInternal.h */; };
10601061
FA6555162E30182B009917BC /* SentrySDKInternal.m in Sources */ = {isa = PBXBuildFile; fileRef = FA6555152E30182B009917BC /* SentrySDKInternal.m */; };
@@ -2390,16 +2391,17 @@
23902391
F4DCC9E32E4AACE0008ECE45 /* SentrySDKSettings+Equality.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "SentrySDKSettings+Equality.h"; sourceTree = "<group>"; };
23912392
F4DCC9E42E4AACE0008ECE45 /* SentrySDKSettings+Equality.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "SentrySDKSettings+Equality.m"; sourceTree = "<group>"; };
23922393
F4E3DCCA2E1579240093CB80 /* SentryScopePersistentStore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SentryScopePersistentStore.swift; sourceTree = "<group>"; };
2394+
F4FE9DBC2E621F100014FED5 /* SentryRandom.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SentryRandom.swift; sourceTree = "<group>"; };
23932395
F4FE9DFB2E622CD70014FED5 /* SentryDefaultObjCRuntimeWrapper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SentryDefaultObjCRuntimeWrapper.swift; sourceTree = "<group>"; };
23942396
F4FE9DFC2E622CD70014FED5 /* SentryObjCRuntimeWrapper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SentryObjCRuntimeWrapper.swift; sourceTree = "<group>"; };
2395-
F4FE9DBC2E621F100014FED5 /* SentryRandom.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SentryRandom.swift; sourceTree = "<group>"; };
23962397
FA034AC72DD3DB4900FE3107 /* SentryIntegrationProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SentryIntegrationProtocol.h; path = Public/SentryIntegrationProtocol.h; sourceTree = "<group>"; };
23972398
FA21A2E92E60E9C700E7EADB /* EnvelopeComparison.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EnvelopeComparison.swift; sourceTree = "<group>"; };
23982399
FA3734812E0EEA670091EF24 /* SentryScreenshot.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SentryScreenshot.swift; sourceTree = "<group>"; };
23992400
FA3734832E0F07A20091EF24 /* SentryDependencyContainerSwiftHelper.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SentryDependencyContainerSwiftHelper.h; path = include/SentryDependencyContainerSwiftHelper.h; sourceTree = "<group>"; };
24002401
FA3734852E0F092F0091EF24 /* SentryDependencyContainerSwiftHelper.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SentryDependencyContainerSwiftHelper.m; sourceTree = "<group>"; };
24012402
FA3854352E267DA20045A563 /* SentryUser+Serialize.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SentryUser+Serialize.h"; path = "include/SentryUser+Serialize.h"; sourceTree = "<group>"; };
24022403
FA3A42712E1C5F9B00A08C39 /* SentryNSNotificationCenterWrapper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SentryNSNotificationCenterWrapper.swift; sourceTree = "<group>"; };
2404+
FA3AEE772E68E2830092283E /* SentryEnvelopeHeader.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SentryEnvelopeHeader.swift; sourceTree = "<group>"; };
24032405
FA4C32962DF7513F001D7B00 /* SentryExperimentalOptions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SentryExperimentalOptions.swift; sourceTree = "<group>"; };
24042406
FA4C32972DF7513F001D7B01 /* SentryAppState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SentryAppState.swift; sourceTree = "<group>"; };
24052407
FA6555132E30181B009917BC /* SentrySDKInternal.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SentrySDKInternal.h; path = include/SentrySDKInternal.h; sourceTree = "<group>"; };
@@ -4482,6 +4484,7 @@
44824484
D856272A2A374A6800FB8062 /* Tools */ = {
44834485
isa = PBXGroup;
44844486
children = (
4487+
FA3AEE772E68E2830092283E /* SentryEnvelopeHeader.swift */,
44854488
92235CAD2E15549C00865983 /* SentryLogger.swift */,
44864489
92235CAB2E15369900865983 /* SentryLogBatcher.swift */,
44874490
F451FAA52E0B304E0050ACF2 /* LoadValidator.swift */,
@@ -5811,6 +5814,7 @@
58115814
D452FCBF2DDB6FD200AFF56F /* SentryWatchdogTerminationAttributesProcessor.swift in Sources */,
58125815
7B6D1261265F784000C9BE4B /* PrivateSentrySDKOnly.m in Sources */,
58135816
63BE85711ECEC6DE00DC44F5 /* SentryDateUtils.m in Sources */,
5817+
FA3AEE782E68E2830092283E /* SentryEnvelopeHeader.swift in Sources */,
58145818
D451ED5D2D92ECD200C9BEA8 /* SentryOnDemandReplayError.swift in Sources */,
58155819
7BD4BD4927EB2A5D0071F4FF /* SentryDiscardedEvent.m in Sources */,
58165820
628308612D50ADAC00EAEF77 /* SentryRequestCodable.swift in Sources */,

Sources/Sentry/SentryClient.m

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -524,8 +524,11 @@ - (void)captureSession:(SentrySession *)session
524524
}
525525

526526
SentryEnvelopeItem *item = [[SentryEnvelopeItem alloc] initWithSession:session];
527+
#pragma clang diagnostic push
528+
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
527529
SentryEnvelope *envelope = [[SentryEnvelope alloc] initWithHeader:[SentryEnvelopeHeader empty]
528530
singleItem:item];
531+
#pragma clang diagnostic pop
529532
[self captureEnvelope:envelope];
530533
}
531534

Sources/Sentry/SentryEnvelope.m

Lines changed: 15 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -17,46 +17,6 @@
1717

1818
NS_ASSUME_NONNULL_BEGIN
1919

20-
@implementation SentryEnvelopeHeader
21-
22-
// id can be null if no event in the envelope or attachment related to event
23-
- (instancetype)initWithId:(SentryId *_Nullable)eventId
24-
{
25-
self = [self initWithId:eventId traceContext:nil];
26-
return self;
27-
}
28-
29-
- (instancetype)initWithId:(nullable SentryId *)eventId
30-
traceContext:(nullable SentryTraceContext *)traceContext
31-
{
32-
#pragma clang diagnostic push
33-
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
34-
SentrySdkInfo *sdkInfo = [SentrySdkInfo global];
35-
#pragma clang diagnostic pop
36-
self = [self initWithId:eventId sdkInfo:sdkInfo traceContext:traceContext];
37-
return self;
38-
}
39-
40-
- (instancetype)initWithId:(nullable SentryId *)eventId
41-
sdkInfo:(nullable SentrySdkInfo *)sdkInfo
42-
traceContext:(nullable SentryTraceContext *)traceContext
43-
{
44-
if (self = [super init]) {
45-
_eventId = eventId;
46-
_sdkInfo = sdkInfo;
47-
_traceContext = traceContext;
48-
}
49-
50-
return self;
51-
}
52-
53-
+ (instancetype)empty
54-
{
55-
return [[SentryEnvelopeHeader alloc] initWithId:nil traceContext:nil];
56-
}
57-
58-
@end
59-
6020
@implementation SentryEnvelopeItem
6121

6222
- (instancetype)initWithHeader:(SentryEnvelopeItemHeader *)header data:(NSData *)data
@@ -285,7 +245,10 @@ @implementation SentryEnvelope
285245
- (instancetype)initWithSession:(SentrySession *)session
286246
{
287247
SentryEnvelopeItem *item = [[SentryEnvelopeItem alloc] initWithSession:session];
248+
#pragma clang diagnostic push
249+
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
288250
return [self initWithHeader:[[SentryEnvelopeHeader alloc] initWithId:nil] singleItem:item];
251+
#pragma clang diagnostic pop
289252
}
290253

291254
- (instancetype)initWithSessions:(NSArray<SentrySession *> *)sessions
@@ -296,14 +259,20 @@ - (instancetype)initWithSessions:(NSArray<SentrySession *> *)sessions
296259
[[SentryEnvelopeItem alloc] initWithSession:[sessions objectAtIndex:i]];
297260
[envelopeItems addObject:item];
298261
}
262+
#pragma clang diagnostic push
263+
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
299264
return [self initWithHeader:[[SentryEnvelopeHeader alloc] initWithId:nil] items:envelopeItems];
265+
#pragma clang diagnostic pop
300266
}
301267

302268
- (instancetype)initWithEvent:(SentryEvent *)event
303269
{
304270
SentryEnvelopeItem *item = [[SentryEnvelopeItem alloc] initWithEvent:event];
271+
#pragma clang diagnostic push
272+
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
305273
return [self initWithHeader:[[SentryEnvelopeHeader alloc] initWithId:event.eventId]
306274
singleItem:item];
275+
#pragma clang diagnostic pop
307276
}
308277

309278
#if !SDK_V9
@@ -318,12 +287,18 @@ - (instancetype)initWithUserFeedback:(SentryUserFeedback *)userFeedback
318287

319288
- (instancetype)initWithId:(SentryId *_Nullable)id singleItem:(SentryEnvelopeItem *)item
320289
{
290+
#pragma clang diagnostic push
291+
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
321292
return [self initWithHeader:[[SentryEnvelopeHeader alloc] initWithId:id] singleItem:item];
293+
#pragma clang diagnostic pop
322294
}
323295

324296
- (instancetype)initWithId:(SentryId *_Nullable)id items:(NSArray<SentryEnvelopeItem *> *)items
325297
{
298+
#pragma clang diagnostic push
299+
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
326300
return [self initWithHeader:[[SentryEnvelopeHeader alloc] initWithId:id] items:items];
301+
#pragma clang diagnostic pop
327302
}
328303

329304
- (instancetype)initWithHeader:(SentryEnvelopeHeader *)header singleItem:(SentryEnvelopeItem *)item

Sources/Sentry/SentryTransportAdapter.m

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,11 @@ - (void)sendEvent:(SentryEvent *)event
5252
attachments:attachments];
5353
[items addObjectsFromArray:additionalEnvelopeItems];
5454

55+
#pragma clang diagnostic push
56+
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
5557
SentryEnvelopeHeader *envelopeHeader = [[SentryEnvelopeHeader alloc] initWithId:event.eventId
5658
traceContext:traceContext];
59+
#pragma clang diagnostic pop
5760
SentryEnvelope *envelope = [[SentryEnvelope alloc] initWithHeader:envelopeHeader items:items];
5861

5962
[self sendEnvelope:envelope];
@@ -68,8 +71,11 @@ - (void)sendEvent:(SentryEvent *)event
6871
attachments:attachments];
6972
[items addObject:[[SentryEnvelopeItem alloc] initWithSession:session]];
7073

74+
#pragma clang diagnostic push
75+
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
7176
SentryEnvelopeHeader *envelopeHeader = [[SentryEnvelopeHeader alloc] initWithId:event.eventId
7277
traceContext:traceContext];
78+
#pragma clang diagnostic pop
7379

7480
SentryEnvelope *envelope = [[SentryEnvelope alloc] initWithHeader:envelopeHeader items:items];
7581

@@ -80,8 +86,11 @@ - (void)storeEvent:(SentryEvent *)event traceContext:(nullable SentryTraceContex
8086
{
8187
SentryEnvelopeItem *item = [[SentryEnvelopeItem alloc] initWithEvent:event];
8288

89+
#pragma clang diagnostic push
90+
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
8391
SentryEnvelopeHeader *envelopeHeader = [[SentryEnvelopeHeader alloc] initWithId:event.eventId
8492
traceContext:traceContext];
93+
#pragma clang diagnostic pop
8594

8695
SentryEnvelope *envelope = [[SentryEnvelope alloc] initWithHeader:envelopeHeader
8796
items:@[ item ]];

Sources/Sentry/include/HybridPublic/SentryEnvelope.h

Lines changed: 1 addition & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
# import "PrivatesHeader.h"
55
#endif
66

7-
@class SentrySdkInfo;
87
@class SentryAttachment;
98
@class SentryEnvelopeItemHeader;
109
@class SentryEvent;
@@ -13,68 +12,10 @@
1312
@class SentrySession;
1413
@class SentryTraceContext;
1514
@class SentryUserFeedback;
15+
@class SentryEnvelopeHeader;
1616

1717
NS_ASSUME_NONNULL_BEGIN
1818

19-
@interface SentryEnvelopeHeader : NSObject
20-
SENTRY_NO_INIT
21-
22-
/**
23-
* Initializes an @c SentryEnvelopeHeader object with the specified eventId.
24-
* @note Sets the @c sdkInfo from @c SentryMeta.
25-
* @param eventId The identifier of the event. Can be nil if no event in the envelope or attachment
26-
* related to event.
27-
*/
28-
- (instancetype)initWithId:(SentryId *_Nullable)eventId;
29-
30-
/**
31-
* Initializes a @c SentryEnvelopeHeader object with the specified @c eventId and @c traceContext.
32-
* @param eventId The identifier of the event. Can be @c nil if no event in the envelope or
33-
* attachment related to event.
34-
* @param traceContext Current trace state.
35-
*/
36-
- (instancetype)initWithId:(nullable SentryId *)eventId
37-
traceContext:(nullable SentryTraceContext *)traceContext;
38-
39-
/**
40-
* Initializes a @c SentryEnvelopeHeader object with the specified @c eventId, @c skdInfo and
41-
* @c traceContext. It is recommended to use @c initWithId:traceContext: because it sets the
42-
* @c sdkInfo for you.
43-
* @param eventId The identifier of the event. Can be @c nil if no event in the envelope or
44-
* attachment related to event.
45-
* @param sdkInfo Describes the Sentry SDK. Can be @c nil for backwards compatibility. New
46-
* instances should always provide a version.
47-
* @param traceContext Current trace state.
48-
*/
49-
- (instancetype)initWithId:(nullable SentryId *)eventId
50-
sdkInfo:(nullable SentrySdkInfo *)sdkInfo
51-
traceContext:(nullable SentryTraceContext *)traceContext NS_DESIGNATED_INITIALIZER;
52-
53-
/**
54-
* The event identifier, if available.
55-
* An event id exist if the envelope contains an event of items within it are related. i.e
56-
* Attachments
57-
*/
58-
@property (nullable, nonatomic, readonly, copy) SentryId *eventId;
59-
60-
@property (nullable, nonatomic, readonly, copy) SentrySdkInfo *sdkInfo;
61-
62-
@property (nullable, nonatomic, readonly, copy) SentryTraceContext *traceContext;
63-
64-
/**
65-
* The timestamp when the event was sent from the SDK as string in RFC 3339 format. Used
66-
* for clock drift correction of the event timestamp. The time zone must be UTC.
67-
*
68-
* The timestamp should be generated as close as possible to the transmision of the event,
69-
* so that the delay between sending the envelope and receiving it on the server-side is
70-
* minimized.
71-
*/
72-
@property (nullable, nonatomic, copy) NSDate *sentAt;
73-
74-
+ (instancetype)empty;
75-
76-
@end
77-
7819
@interface SentryEnvelopeItem : NSObject
7920
SENTRY_NO_INIT
8021

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
@_implementationOnly import _SentryPrivate
2+
3+
@_spi(Private) @objc public final class SentryEnvelopeHeader: NSObject {
4+
/**
5+
* Initializes an @c SentryEnvelopeHeader object with the specified eventId.
6+
* @note Sets the @c sdkInfo from @c SentryMeta.
7+
* @param eventId The identifier of the event. Can be nil if no event in the envelope or attachment
8+
* related to event.
9+
*/
10+
@available(*, deprecated, message: "This is only marked as deprecated because enableAppLaunchProfiling is marked as deprecated. Once that is removed this can be removed.")
11+
@objc public convenience init(withId eventId: SentryId?) {
12+
self.init(withId: eventId, traceContext: nil)
13+
}
14+
15+
/**
16+
* Initializes a @c SentryEnvelopeHeader object with the specified @c eventId and @c traceContext.
17+
* @param eventId The identifier of the event. Can be @c nil if no event in the envelope or
18+
* attachment related to event.
19+
* @param traceContext Current trace state.
20+
*/
21+
@available(*, deprecated, message: "This is only marked as deprecated because enableAppLaunchProfiling is marked as deprecated. Once that is removed this can be removed.")
22+
@objc public convenience init(withId eventId: SentryId?, traceContext: TraceContext?) {
23+
self.init(withId: eventId, sdkInfo: SentrySdkInfo.global(), traceContext: traceContext)
24+
}
25+
26+
/**
27+
* Initializes a @c SentryEnvelopeHeader object with the specified @c eventId, @c skdInfo and
28+
* @c traceContext. It is recommended to use @c initWithId:traceContext: because it sets the
29+
* @c sdkInfo for you.
30+
* @param eventId The identifier of the event. Can be @c nil if no event in the envelope or
31+
* attachment related to event.
32+
* @param sdkInfo Describes the Sentry SDK. Can be @c nil for backwards compatibility. New
33+
* instances should always provide a version.
34+
* @param traceContext Current trace state.
35+
*/
36+
@objc public
37+
init(withId eventId: SentryId?, sdkInfo: SentrySdkInfo?, traceContext: TraceContext?) {
38+
self.eventId = eventId
39+
self.sdkInfo = sdkInfo
40+
self.traceContext = traceContext
41+
}
42+
43+
@available(*, deprecated, message: "This is only marked as deprecated because enableAppLaunchProfiling is marked as deprecated. Once that is removed this can be removed.")
44+
@objc public static func empty() -> Self {
45+
Self(withId: nil, traceContext: nil)
46+
}
47+
48+
/**
49+
* The event identifier, if available.
50+
* An event id exist if the envelope contains an event of items within it are related. i.e
51+
* Attachments
52+
*/
53+
@objc public var eventId: SentryId?
54+
@objc public var sdkInfo: SentrySdkInfo?
55+
@objc public var traceContext: TraceContext?
56+
57+
/**
58+
* The timestamp when the event was sent from the SDK as string in RFC 3339 format. Used
59+
* for clock drift correction of the event timestamp. The time zone must be UTC.
60+
*
61+
* The timestamp should be generated as close as possible to the transmision of the event,
62+
* so that the delay between sending the envelope and receiving it on the server-side is
63+
* minimized.
64+
*/
65+
@objc public var sentAt: Date?
66+
}

0 commit comments

Comments
 (0)