-
Notifications
You must be signed in to change notification settings - Fork 93
/
CHANGELOG
665 lines (580 loc) · 28.5 KB
/
CHANGELOG
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
Version 6.0.9 (2024-11-21)
--------------------------
Handle nan values and other non-serializable data in events from the WebView tracker (#909)
Version 6.0.8 (2024-08-19)
--------------------------
Fix media tracking calls not being dispatched on the correct queue when tracking using AVPlayer
Version 6.0.7 (2024-07-16)
--------------------------
Fix incorrect decoding of timeout property in network configuration (#902)
Version 6.0.6 (2024-07-10)
--------------------------
Fix remote configuration attempting to serialize a logger class after new configuration is fetched (#900)
Version 6.0.5 (2024-07-03)
--------------------------
Stop sending if events fail to be removed from the event store
Add warning for the serialization of data in self-describing event and entity (#898)
Version 6.0.4 (2024-06-12)
--------------------------
Fix CrossDeviceParameterConfiguration constructor to be public (#894) thanks to @thomas-brx
Version 6.0.3 (2024-05-13)
--------------------------
Add the PrivacyInfo to the CocoaPods podspec (#888)
Do not swizzle views if screen view autotracking is disabled (#889)
Version 6.0.2 (2024-04-02)
--------------------------
Fix non-published constructor for MediaPlaybackRateChangeEvent (#884)
Remove deprecated name property in SPM package file for the Mocker dependency on Swift 5.9 (#881) thanks to @nvelichkin
Fix accessing media tracking instance not on internal queue (#886)
Expose a public getter for EmitterEvent's payload and storeId properties (#879)
Version 6.0.1 (2024-02-14)
--------------------------
Make EmitterEvent constructor public (#876)
Add percent progress to event (#875)
Version 6.0.0 (2024-02-01)
--------------------------
- Add screen engagement tracking of time spent and list items scrolled on a screen (#851)
- Enable lifecycle autotracking by default (#852)
- Add support for visionOS (#830)
- Add VisionOS events and entities (#857)
- Improve concurrency model using a single internal dispatch queue (#820)
- Process tracked events on a serial background queue (#822)
- Add API to decorate link with user/session info (#819)
- Add configurable limit for the maximum age and number of events in the event store and remove old events before sending (#860)
- Add request timeout to network connection and configuration (#836) thanks to @danigutierrezayuso
- Expose event store from emitter controller to be able to remove all events from database (#834) thanks to @danigutierrezayuso
- Make network requests serially in network connection (#846)
- Change default buffer option to single (#849)
- Flush events only when the buffer is full (#827) thanks to @danigutierrezayuso
- Add SDK privacy manifest file (#811)
- Remove available storage and total storage from platform context (#824)
- Add an option to override platform context properties (#865)
- Remove the use of the FMDB dependency in SQLiteEventStore (#823)
- Return non-optional TrackerController instance from `createTracker` (#847) thanks to @Kymer
- Enable representing self-describing data using Codable structs (#844)
- Match BaseEvent entities API with Android tracker (#867)
- Fix bundle path check to handle symbolic links (#858) thanks to @mylifeasdog
- Set the platform event property to tv on tvOS and mobile on watchOS (#872)
- Update copyright notices (#868)
- Update CI build (#856)
Version 5.6.0 (2023-10-12)
--------------------------
Add configuration to send requests with user ID to a Focal Meter endpoint (#745)
Version 5.5.0 (2023-10-02)
--------------------------
Add option to disable retrying any failed requests (#826)
Separate targets for unit and integration tests (#831)
Version 5.4.2 (2023-08-08)
--------------------------
Update vendor and version of the player schema used in media tracking (#812)
Version 5.4.1 (2023-07-19)
--------------------------
Add thread-safety to a globalContext manager function (#809)
Fix application_install event sent with wrong configuration (#808)
Version 5.4.0 (2023-07-12)
--------------------------
Add Snowplow ecommerce events and entities (#800)
Increase interval for updating platform context properties from 0.1s to 1s (#798)
Expose property for retrieving payload in ConsentDocument that was removed in v5 (#804)
Version 5.3.1 (2023-07-06)
--------------------------
Fix incorrect date deserialization when reading the install timestamp from 1.7 version of the tracker (#801)
Fix disabling screen view autotracking in tracker configuration (#802)
Version 5.3.0 (2023-06-30)
--------------------------
Add media controller with APIs to track media events (#765)
Add emitter configuration support to remote configuration (#782)
Use default configuration for properties that are not configured using remote configuration (#785)
Truncate URL scheme for page_url and page_refr properties (#793)
Truncate language in platform context entity to max 8 characters (#795)
Fix emit range configuration in Emitter not respected if using SQLite event store (#789)
Version 5.2.0 (2023-06-02)
--------------------------
Add a filter API to plugins to decide whether to track an event or not (#783)
Add version to default remote configuration and don't update unless remote configuration is newer (#779)
Handle unprotected access to sending state in Emitter from concurrent threads (#774)
Version 5.1.0 (2023-05-11)
--------------------------
Track new properties in platform context version 1-0-3 and make it configurable which properties to track (#771)
Fix remote config negative hash bug (#775)
Fix memory leak when tracker is fetched in remote configuration (#776)
Version 5.0.1 (2023-05-02)
--------------------------
Fix validation errors due to session schema tracked without required previousSessionId property when anonymous tracking (#767)
Version 5.0.0 (2023-04-04)
--------------------------
Rename the repository from snowplow-objc-tracker to snowplow-ios-tracker
Add redirect from root documentation page
Version 5.0.0-beta.1 (2023-02-02)
----------------------------------
Add ability to provide custom tracker plugins to inspect and enrich tracked events (#750)
Use Swift DSL for building configurations and add builder functions for configurations and events (#755)
Remove requirement for all configurations to be serializable (#753)
Refactor event interface and rename contexts to entities (#757)
Refactor APIs to replace usage of NSObject in dictionaries with the Any type (#748)
Update year in copyright headers and remove authors from headers in source files (#759)
Version 5.0.0-alpha.2 (2022-12-21)
----------------------------------
Add screen view tracking for SwiftUI (#705)
Drop Carthage and build using Swift Package Manager (#735)
Add tests using Micro for payload validation (#736)
Add a closure to tracker configuration that enables retrieving IDFA value and replaces the use of SNOWPLOW_IDFA_ENABLED macro (#678)
Update API comments for Swift-DocC and add missing comments (#740)
Add API docs using Swift-DocC (#739)
Version 5.0.0-alpha.1 (2022-11-30)
----------------------------------
Migrate to Swift (#732)
Version 4.1.0 (2022-11-16)
--------------------------
Anonymise previous session ID and user identifiers in subject when user anonymisation is enabled (#720)
Add DeepLink entity referrer and url to atomic properties in ScreenView events (#718)
Fix compiler warning in SPEmitterControllerImpl to synthesize customRetryForStatusCodes (#722)
Log an error when recreating tracker after being removed (#716)
Fix links in README (#724)
Version 4.0.1 (2022-10-18)
--------------------------
Add nullable modifier to prevent crashes in track function (#713) (Thanks to @mylifeasdog)
Version 4.0.0 (2022-09-01)
--------------------------
Do not resume remote configuration from cache in case it has different endpoint (#688)
Fix too many events tracked by screen view autotracking (#689)
Ignore trailing slashes in the network configuration endpoint (#695)
Add interface to subscribe for events tracked in Web views (#691)
Add anonymous tracking features (#702)
Return tracked event ID from the track method (#710)
Extend the onSuccess callback when setting up remote configuration to pass configuration state (#694)
Add support for tracking events in a Share Extension (#700) (thanks to @onato)
Fix default session timeout values to 30 minutes everywhere (#708)
Upgrade deprecated macOS and XCode versions in Github actions (#696)
Version 3.2.0 (2022-06-28)
--------------------------
Add eventIndex and firstEventTimestamp properties to client sessions (#682)
Add a customizable set of failure HTTP status codes for which collector requests should not be retried (#684)
Version 3.1.2 (2022-05-25)
--------------------------
Attach LifecycleEntity before the first Background event (#679)
Version 3.1.1 (2022-03-03)
--------------------------
Fix object cannot be nil (key: userId) when initialising Snowplow tracker (#675)
Version 3.1.0 (2022-02-25)
--------------------------
Update copyright headers to 2022 (#669)
Update links to v3 docs in README (#665)
Add pause and resume to EmitterController (#672)
Check session for background event using foreground timeout (#667)
Add session callback (#664)
Version 3.0.2 (2021-12-23)
--------------------------
Fix updating IDFA during app runtime (#661)
Version 3.0.1 (2021-12-17)
--------------------------
Do not allow multiple state machines with the same ID (#658)
Version 3.0.0 (2021-11-23)
--------------------------
Fix SPDataPersistence crash at SDK init (#655)
Fix Copyright notice in LICENSE file (#651)
Remove v1 API (#652)
Allow campaign enrichment with DeepLinkReceived events (#648)
Add event for remote and local notifications (#646)
Add memory, battery and storage info to mobile context (#643)
Support lifecycle reporting for tvOS (#640) (Contribution of @miike)
Add lifecycle context to indicate app state when the event is tracked (#637)
Capture campaign attribution data from deep links (#297)
Add tracker state management (#634)
Version 2.2.2 (2021-08-16)
--------------------------
Fix crash on tvOS caused by access to filesystem (#621)
Fix Session UserID not consistent among tracker instances (#630)
Version 2.2.1 (2021-08-02)
--------------------------
Fix build errors in Xcoce 13 beta 3 when using SPM (#628)
Version 2.2.0 (2021-07-16)
--------------------------
Remove Demo app builds for iOS 12 on CI (#626)
Set amended v_tracker indicating wrapper tracker version (#624)
Set application install timestamp on device timestamp field (#625)
Avoid deprecated method for configuration serialization (#623)
Fix for CaseSensetive file systems (#622) (Contribution of @Juraldinio)
Version 2.1.1 (2021-06-24)
--------------------------
Fix Gdpr context being tracked without enabling it (#618)
Version 2.1.0 (2021-06-18)
--------------------------
Fix sessionIndex starting from 0 rather than 1 (#616)
Fix missing base64encoding in remote config (#615)
Fix screenView autotracking unable to send events (#614)
Fix tvOS integration via SwiftPM unable to compile (#611)
Bump FMDB to version 2.7 (#612)
Fix Swift names clash for SelfDescribing event (#610)
Fix data race accessing currentScreenState (#609)
Add remote configuration (#581)
Version 2.0.2 (2021-05-24)
--------------------------
Add geolocation to SubjectConfiguration and SubjectController (#604)
Fix duplicate NS_SWIFT_NAME macro (#603)
Fix IDFA not accessible on iOS 14 (#601)
Version 2.0.1 (2021-05-12)
--------------------------
Fix crash if data from Database is corrupted (#596) (Contribution of @glukhanyk)
Add SubjectController to update userId (#595)
Fix NSInvalidArgumentException on first run with v2.0 (#592)
Fix macOS target for SPM (#593) (Contribution of @Juraldinio)
Version 2.0.0 (2021-04-27)
--------------------------
Set lifecycle tracking off by default (#587)
Update README (#502)
Fix GitHub Actions failures due to redirection to macos-10.15 (#583)
Remove protocol from NetworkController and NetworkConnection (#573)
Add custom headers for requests (#364)
Store sessions info separately per tracker namespace (#570)
Add API reference documentation for configurations and controllers (#568)
Add NSDictionary as explicit argument in SPSelfDescribingJson (#274)
Allow multiple instances of the tracker (#566)
Import corrections from Android tracker (#563)
Create API for v.2.0 (#558)
Restructure project source tree (#552)
Bump deployment target to iOS 9 (#550)
Version 1.7.0 (2021-04-03)
--------------------------
Fix issue of OpenIDFA causing App Rejection (#575)
Version 1.6.2 (2021-01-12)
--------------------------
Fix internal Carthage issues with Xcode 12.3 (#561)
Fix leak on SNOWReachability (#559) (Contribution of @i-dama)
Version 1.6.1 (2020-11-24)
--------------------------
Fix AddGlobalContext unable to work when GlobalContexts not initialized (#553)
Let Crash reporting to add contexts and AppID (#555)
Fix Snyk script (#549)
Move demo apps to snowplow-objc-tracker-examples (#547)
Version 1.6.0 (2020-09-21)
--------------------------
Update GitHub Actions to test on iOS 14 (#545)
Enable Xcode 12 support for Swift Package Manager (#544) (Contribution of @lunij)
Session storageMechanism is marked SQLITE but it's not (#482)
Make session uuid rotation dependant on events being tracked (#497)
Version 1.5.0 (2020-09-01)
--------------------------
Crash connected with method writeSessionToFile in SPSession (#515)
Emitter refactoring (#540)
Report logs to the app (#534)
Add diagnostic feature (#533)
Version 1.4.1 (2020-07-22)
--------------------------
TrueTimestamp has to be set in seconds. (#532)
ScreenView event doesn't track transitionType (#516)
Version 1.4.0 (2020-07-10)
--------------------------
Validate EventData in Unstructured events (#526)
Fix url percent escaping (#525)
Fix contexts duplication (#524)
Add method for setting true timestamp (#276)
Renew event ID when event object is reused (#521)
Move from Travis CI to GitHub Actions (#517)
Add unified track method for all the events (#518)
Version 1.3.1 (2020-05-07)
--------------------------
Remove SPM demo app as it causes issues to Carthage (#513)
Specifcy FMDB version instead of commit in Package.swift (#512) (Contribution of @BennetLinden)
Adds public access to a tracker's current session id (#508) (Contribution of @ejensen)
Add missing references to SPConsentDocument.h (#507) (Contribution of @ejensen)
Version 1.3.0 (2020-04-21)
--------------------------
Swift Package Manager unable to find headers on subfolders (#503) (Contribution of @vauxhall)
Replace deprecated CTTelephonyNetworkInfo methods (#479)
Fix deprecated CFURLCreateStringByAddingPercentEscapes (#493)
Fix deprecated keyWindow (#492)
Update Technical Docs link (#443)
Update copyright (#499)
Add GDPR context (#425)
Add support for global contexts (#357)
Add Swift Package Manager support (#474) (Contribution of @vauxhall)
Events processing refactoring (#489)
Version 1.2.2 (2020-03-04)
--------------------------
Fix failing test about ScreenContext (#486)
FMDB versions conflicts with other dependency (#432)
Version 1.2.1 (2020-02-12)
--------------------------
Fix screen context not correctly updated on screenView events (#483)
Version 1.2.0 (2020-01-20)
--------------------------
Ensure addDictionaryToPayload enumeration over immutable dictionary (#480) (Contribute of Matt Robinson)
Stop updating screen context when auto-tracking is disabled (#431)
Fix valueForKey error in auto-tracking for screenviews (#428)
Add Watchkit support (#465) (Contribute of Leo Mehlig)
Allow overwriting of the 'platform' parameter (#476)
ReachabilitySwift conflicts with Reachability (#437)
Version 1.1.5 (2019-11-25)
--------------------------
Fix travis script not able to test on iOS 13.2 (#472)
Fix IDFA rejection when app submitted with v.1.1.4 (#470)
Version 1.1.4 (2019-11-11)
--------------------------
Fix doc of method setTimestamp (#467)
Set simulator device model information when it runs on simulator (#468)
Update swift demo app for 1.1.4 (#460)
Update objc demo app for 1.1.4 (#461)
Fix Slather (#453)
SnowplowTracker-swift.h file not found static lib building (#427)
Fix building issues on MacOS target (#466)
Fix bridging issues importing the framework on swift demo app (#458)
Fix installation of SnowplowTracker via Carthage (#457)
Fix Nocilla at 0.11 (#455)
Comply with isAdvertisingTrackingEnabled (#447)
Fix incomplete device model information (#444)
Version 1.1.3 (2019-10-18)
--------------------------
Fix broken build process (#452)
Fix ReachabilitySwift at 4.3.1 (#449)
Version 1.1.2 (2019-05-16)
--------------------------
Fix Cartfile in SnowplowSwiftDemo (#420)
Fix SPError class name conflict with WatchKit (#418)
Fix podspec validation issues (#419)
Version 1.1.1 (2019-05-15)
--------------------------
Make SPScreenState.h public and foward declare in SPEvent.h (#415)
Fix recursion in screen auto-tracking (#416)
Version 1.1.0 (2019-05-06)
--------------------------
Allow configurable postPath parameter (#409)
Fix various build warnings (#414)
Fix warning about self references being retained in SPSession (#412)
Add tests for application context (#410)
Add automatic tracking of install lifecycle event (close #374)
Enable automatic unhandled exception tracking (#371)
Add automatic screen view events and screen context (#370)
Version 1.0.4 (2019-02-28)
--------------------------
Use NS_ENUM for SPRequestOptions and SPProtocol (#402)
Fix key-value order for application context (#406)
Version 1.0.3 (2019-02-25)
--------------------------
Remove unnecessary Reachability from podspec (#404)
Fix value reported by Reachability (#403)
Version 1.0.2 (2019-02-20)
--------------------------
Add Carthage badge (#390)
Lower minimum deployment targets (#399)
Update old badges (#400)
Version 1.0.1 (2019-02-20)
--------------------------
Update README.md for new documentation site (#394)
Update Swift demo Cartfile (#393)
Add initializers for SPSession (#396)
Remove dangling constant (#395)
Add Doxygen-generated API reference (#392)
Version 1.0.0 (2019-01-28)
--------------------------
Exposes session property in SPTracker (#256)
Fix parameter documentation (#389)
Make initializers unavailable in SPEmitter and SPTracker (#255)
Add OpenIdfa files to framework target (#382)
Resolve potential memory leaks from implicit retain of self (#353)
Embed Swift standard library for tests (#388)
Disable always embed Swift standard libraries (#381)
Remove exceptions (#383)
Explicitly close all statements in FMDB (#384)
Fix getDocuments function in consent events (#386)
Add support for Carthage (#291)
Replace Reachability with Reachability.swift (#385)
Version 0.9.0 (2018-10-15)
--------------------------
Fix ConsentGranted builder argument type in tests (#361)
Add SRCROOT to project header search path (#362)
Update pods committed to Git repo (#360)
Update CocoaPods in Travis build (#359)
Add application context capability (#358)
Commit IDEWorkspaceChecks.plist to repo (#354)
Add foreground and background events (#349)
Version 0.8.0 (2018-04-29)
--------------------------
Update CocoaPods to 1.4.0 and add pod update repo in build script (#347)
Add method to SPTracker to get session's userId (#345)
Drop iOS 8 test target, add iOS 10 and 11 (#344)
Fix SnowplowTests bundle custom folder name (#343)
Add a Swift port of SnowplowDemo (#342)
Add identifyUser as alias for setUserId (#341)
Add trackConsentGrantedEvent and trackConsentWithdrawnEvent methods (#340)
Remove "close" from CHANGELOG for issue #333 (#338)
Add support for push notification open tracking (#335)
Add preprocessor flags to disable OpenIDFA or IDFV (#334)
Extend copyright notice in all files to 2018 (#331)
Replace NSGregorianCalendar with NSCalendarIdentifierGregorian (#329)
Fix truncation of structured event value to 6 digits (#299)
Add trackSelfDescribingEvent method as alias for trackUnstructEvent (#272)
Version 0.7.0 (2017-12-24)
--------------------------
Bump iOS deployment target to 8.0 (#326)
Bump Xcode to 9.1 and test against iOS 8.1 and 9.0 (#325)
Bump CocoaPods to 1.3.1 (#306)
Bump FMDB to 2.6.2 (#315)
Use default Bundler version in Travis (#336)
Fix invalid latitude in test suite (#322)
Don't attempt to serialize nil object in event store (#286)
Fix method description typos (#317)
Update README markdown in accordance with CommonMark (#333)
Version 0.6.2 (2016-10-10)
--------------------------
Fix failing geolocation_context test (#293)
Cast from NS(U)Integer to long type causes crashes on 32-bit devices, thanks @chrisfsampaio (#271)
App crashes on iPhone 4s simulator, thanks @chrisfsampaio (#278)
Fix Travis build (#295)
Fix failing getLanguage test on Travis (#294)
Correct the capitalization of Xcode in README, thanks @ReadmeCritic (#268)
Version 0.6.1 (2016-02-22)
--------------------------
Made podfile dependencies more restrictive (#266)
Harmonized foreground and background timeouts with Android (#265)
Fixed Cast from NS(U)Integer to long type causing crashes on 32-bit devices (#264)
Fixed crash when logging emitter attempts, thanks @rockshassa! (#262)
Version 0.6.0 (2016-01-18)
--------------------------
ClientSession needs to send null for the first previousSessionId (#257)
Removed buffer limit in favour of only using bytelimit (#245)
Only start a single timer, be sure to stop previous checker (#252)
Updated Cocoapods version to 0.39.0 (#243)
Updated pauseEventTracking so that the emitter timer is invalidated/stopped (#218)
Changed floats, doubles and ints to NSNumbers (#96)
Added tvOS deployment target to Podspec (#244)
Added missing tickets to CHANGELOG (#226)
Added event class with builder options for all event types (#223)
Added tests to check generated self-describing jsons against their schemas in iglu (#222)
Added Precondition checks for Tracker and Emitter (#221)
Added option to set event id manually (#195)
Added firstEventId to client_session context (#194)
Added batching based on payload size (#162)
Added a SelfDescribingJson class to ensure we build contexts and unstructured events properly (#119)
Added preconditions to event builders to ensure they are setup correctly (#117)
Added location context information (#68)
iOS9 ATS issues with OpenIDFA (#175)
SPUtilities getLanguage returns country code appended string in iOS9 (#233)
Floats and doubles are not being correctly shortened to two decimal places (#232)
Ensured emitter url uses HTTPS for iOS9 (#231)
OpenIDFA calendar is deprecated for iOS 8, thanks @iamjason! (#230)
SPUtilities getTimestamp should return an NSInteger not double (#229)
Fixed classname collision: SPUtils vs WatchKit.framework, thanks @iamjason! (#228)
Fixed tvOS could not create database queue for path (#251)
Replaced legacy docset_url in podspec with documentation_url (#259)
Version 0.5.2 (2015-09-30)
--------------------------
Fixed regression of mobile_context to 1-0-0 from 1-0-1 (#235)
Fixed SessionIndex being passed as a string not as an integer (#234)
Fixed .gitignore to work with Xcode 7 (#241)
Version 0.5.1 (2015-09-11)
--------------------------
Added entropy to global constants to avoid clang errors with other libraries (closes #224)
Version 0.5.0 (2015-09-03)
--------------------------
Removed OCHamcrest test dependency from podfile (#211)
Validated all public properties of all classes (#209)
Simplified SPTracker event decoration into a single function (#204)
Configured SPSubject to match how other Tracker Subject classes function (#203)
Fixed SPUtils functions need to return nil not an empty string if they fail to get a value (#213)
Fixed SPUtils getPlatform function which only returns "mob" as a default string (#205)
Fixed RequestCallback has to import Foundation before defining protocol (#202)
Fixed Emitter timer must be setup on main thread or it will not run (#201)
Ensured platform is set as it is a required field for payload_data (#206)
Ensured that sendEvents will run in background only (#197)
Made RequestCallback protocol more idiomatic to obj-c (#189)
Changed "POST" and "GET" options to enums (#120)
Renamed initWithURLRequest to initWithURL (#114)
Updated test suite to cover all code in the tracker (#208)
Updated contexts schema to 1-0-1 (#207)
Updated all class namespaces (#200)
Updated payload-data to 1-0-3 (#91)
Created SnowplowConstant class or equivalent (#35)
Created an option to opt-out of data collection (#27)
Added Mocking library for proper unit testing of emitter requests (#212)
Added Tracker builder options to pass through session timeouts (#210)
Added synchronized mutex lock to emitter results to prevent BAD_ACCESS_ERR (#216)
Added an implementation of NSTimer without a strong reference to its parent target (#215)
Added option to set emitting thread pool size (#199)
Added option to set events to emit range (#198)
Added support for checking if the device is online before attempting to emit (#184)
Added a SnowplowSubject class equivalent to remove need to get same data over and over (#196)
Added `is online` label to the demo app (#193)
Added builder pattern for tracker/emitter (#190)
Added checks for malformed NSURL (#79)
Added in-client sessionization (#19)
Added device sent time on outbound events (#158)
Version 0.4.0 (2015-08-16)
--------------------------
Updated how the emitter sends information to match the Android Tracker flow (#185)
Full memory leak and performance analysis (#183)
Added functions to access metrics on the SQLite database (#182)
Added target for building Static iOS Framework, thanks @AlexDenisov! (#171)
Added iOS 6 support, thanks @agarwalswapnil! (#163)
Macroed out the usage of sharedApplication, thanks @hlian! (#157)
Added network properties implementation, thanks @duncan! (#142)
Added Coveralls code coverage to project (#108)
Added Mountebank for simple testing of tracker locally (#82)
Added support for callbacks for success/failure (#59)
Changed license in README to be pulled from CocoaPods (#130)
Using FIFO instead of "pending" flag to track emit progress (#94)
Made an iOS test app (#67)
Fixed Content-Type not being set correctly (#192)
Version 0.3.4 (2015-08-05)
--------------------------
Fixed Tracker sometimes POSTs when no events to post, thanks @leonardors! (#164)
Fixed bug in PR whereby POST is sent with many events when Buffer type is instant (#178)
Fixed FMDB requirement for an operation queue to work properly in a concurrent world (#179)
Fixed bug where appId is nullified if namespace is nil (#165)
Using buffer size to limit number of events per POST, thanks @leonardors! (#169)
Removed _buffer in SnowplowEmitter in favour of boolean counter (#173)
Removed extra DB queue layer for removing events (#181)
Version 0.3.3 (2015-03-26)
--------------------------
Fixed Travis button in README (#152)
Fixed the immediate flushing of the buffer (#153)
Fixed incorrect content type sent if GA SDK also running (#160)
Version 0.3.2 (2015-02-28)
--------------------------
Now using a querystring, not an HTTP body for GET, thanks @loufranco! (#141)
Removed unused ifdef around Base64 encoding, thanks @duncan! (#138)
Quieted unused variable warnings, thanks @duncan! (#139)
Quieted Gestalt method deprecation warnings, thanks @duncan! (#140)
Now unsetting payload key when value is nil, thanks @duncan! (#147)
Made SnowplowUtils public in podspec (#145)
Now using URL-safe Base64 without padding, thanks @loufranco! (#150)
Version 0.3.1 (2015-02-17)
--------------------------
Replaced SnowplowRequest.h with SnowplowEmitter.h as a public header, thanks @hamidp! (#133)
Excluded CoreTelephony dependency for OS X, thanks @duncan! (#134)
Removed AFNetworking dependency from podspec, thanks @duncan! (#136)
Adjusted logging to emit debug logs for Snowplow collector only when SNOWPLOW_DEBUG defined, thanks @atdrendel! (#131)
Version 0.3.0 (2015-02-15)
--------------------------
Reverted from AFnetworking to standard NSURLSession, thanks @atdrendel and @duncan! (#88)
Updated Travis to use the most up-to-date simulator (#90)
Cleaned up SnowplowTracker.podspec (#99)
Updated Podfile and re-installed to fix Travis (#93)
Renamed SnowplowRequest to SnowplowEmitter, thanks @jonalmeida! (#70)
Added new initializer with POST as default method, thanks @jonalmeida! (#69)
Updated getResolution test to allow 750x1334 for Retina iPhone (#92)
Added timings event (#89)
Added Mac OS X support, thanks @atdrendel and @duncan! (#104)
Renamed from snowplow-ios-tracker to snowplow-objc-tracker (#103)
Added License button to README (#109)
Version 0.2.2 (2014-12-18)
--------------------------
Added missing iglu: protocol for screen_view schema URI, thanks @michelmongkhoy! (#85)
Version 0.2.1 (2014-11-28)
--------------------------
Fixed unstructured events incorrectly sent wrapped in contexts schema (#81)
Version 0.2.0 (2014-11-08)
--------------------------
Only using IFA if AdSupport is included (#76)
Fixed XCode 6 compatibility (#77)
Version 0.1.2 (2014-09-28)
--------------------------
Fixed bug where UUIDs generated in uppercase, not lowercase (#71)
Applied temporary fix to Podfile for Travis builds (#73)
Version 0.1.1 (2014-09-10)
--------------------------
Fixed linting notes (#65)
Fixed screen view tracking using incorrect condition for nil id checking (#66)
Version 0.1.0 (2014-08-28)
--------------------------
Initial release