Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Crash in SEGIntegrationsManager.m -[_TtGCs26_SwiftDeferredNSDictionarySSVs5Int64_$ boolValue]: unrecognized selector sent to instance 0x2804d1110 #851

Closed
amyacuff opened this issue Nov 8, 2019 · 6 comments

Comments

@amyacuff
Copy link

amyacuff commented Nov 8, 2019

We are able to reproduce this crash in version 3.7.0 on app launch when the internet connection is off in airplane mode in iOS 13

Fatal Exception: NSInvalidArgumentException
0 CoreFoundation 0x1a636dc30 __exceptionPreprocess
1 libobjc.A.dylib 0x1a60880c8 objc_exception_throw
2 CoreFoundation 0x1a626bfc0 -[NSOrderedSet initWithSet:copyItems:]
3 CoreFoundation 0x1a63723d4 forwarding
4 CoreFoundation 0x1a6374570 _CF_forwarding_prep_0
5 Analytics 0x105951984 +[SEGIntegrationsManager isIntegration:enabledInOptions:] + 409 (SEGIntegrationsManager.m:409)
6 Analytics 0x105951ef8 -[SEGIntegrationsManager invokeIntegration:key:selector:arguments:options:] + 448 (SEGIntegrationsManager.m:448)
7 Analytics 0x105951db0 __60-[SEGIntegrationsManager forwardSelector:arguments:options:]_block_invoke + 437 (SEGIntegrationsManager.m:437)
8 CoreFoundation 0x1a63bdb20 NSDICTIONARY_IS_CALLING_OUT_TO_A_BLOCK
9 CoreFoundation 0x1a623dd50 -[__NSDictionaryM enumerateKeysAndObjectsWithOptions:usingBlock:]
10 Analytics 0x105951d34 -[SEGIntegrationsManager forwardSelector:arguments:options:] + 436 (SEGIntegrationsManager.m:436)
11 Analytics 0x1059525a0 -[SEGIntegrationsManager flushMessageQueue] + 494 (SEGIntegrationsManager.m:494)
12 Analytics 0x105951358 __57-[SEGIntegrationsManager updateIntegrationsWithSettings:]_block_invoke + 365 (SEGIntegrationsManager.m:365)
13 Analytics 0x10594c558 __seg_dispatch_specific_block_invoke + 65 (SEGAnalyticsUtils.m:65)
14 Analytics 0x10594c4e4 seg_dispatch_specific + 68 (SEGAnalyticsUtils.m:68)
15 Analytics 0x10594c5d0 seg_dispatch_specific_sync + 85 (SEGAnalyticsUtils.m:85)
16 Analytics 0x105951038 -[SEGIntegrationsManager updateIntegrationsWithSettings:] + 367 (SEGIntegrationsManager.m:367)
17 Analytics 0x105950fb0 -[SEGIntegrationsManager setCachedSettings:] + 341 (SEGIntegrationsManager.m:341)
18 Analytics 0x105951678 __41-[SEGIntegrationsManager refreshSettings]_block_invoke_3 + 379 (SEGIntegrationsManager.m:379)
19 Analytics 0x10594c558 __seg_dispatch_specific_block_invoke + 65 (SEGAnalyticsUtils.m:65)
20 libdispatch.dylib 0x1a6013bb0 _dispatch_call_block_and_release
21 libdispatch.dylib 0x1a601500c _dispatch_client_callout
22 libdispatch.dylib 0x1a601b484 _dispatch_lane_serial_drain
23 libdispatch.dylib 0x1a601beb0 _dispatch_lane_invoke
24 libdispatch.dylib 0x1a6024f20 _dispatch_workloop_worker_thread
25 libsystem_pthread.dylib 0x1a607aaa0 _pthread_wqthread
26 libsystem_pthread.dylib 0x1a6080c78 start_wqthread

#0. com.apple.main-thread
0 libsystem_kernel.dylib 0x1a6136bc4 mach_msg_trap + 8
1 libsystem_kernel.dylib 0x1a6135fe0 mach_msg + 76
2 (Missing) 0x197f8b81a62e8b00 (Missing)
3 (Missing) 0x182d8801a62e3900 (Missing)
4 (Missing) 0x0 (Missing)
5 (Missing) 0x21175901b044d600 (Missing)
6 (Missing) 0x7035e281aa403800 (Missing)
7 (Missing) 0x0 (Missing)
8 libdyld.dylib 0x1a6162f30 start + 4

#1. Thread
0 libsystem_kernel.dylib 0x1a6159aac __workq_kernreturn + 8
1 libsystem_pthread.dylib 0x1a607aaec _pthread_wqthread + 356
2 (Missing) 0x624bb401a6080c00 (Missing)

#2. io.segment.analytics.segmentio
0 libobjc.A.dylib 0x1a60a108c bool objc::DenseMapBase<objc::DenseMap<DisguisedPtr<objc_object>, unsigned long, (anonymous namespace)::RefcountMapValuePurgeable, objc::DenseMapInfo<DisguisedPtr<objc_object> >, objc::detail::DenseMapPair<DisguisedPtr<objc_object>, unsigned long> >, DisguisedPtr<objc_object>, unsigned long, (anonymous namespace)::RefcountMapValuePurgeable, objc::DenseMapInfo<DisguisedPtr<objc_object> >, objc::detail::DenseMapPair<DisguisedPtr<objc_object>, unsigned long> >::LookupBucketFor<DisguisedPtr<objc_object> >(DisguisedPtr<objc_object> const&, objc::detail::DenseMapPair<DisguisedPtr<objc_object>, unsigned long>*&) + 8
1 (Missing) 0x2f76f901a609a000 (Missing)
2 (Missing) 0xf211f01a60a0e80 (Missing)
3 (Missing) 0x0 (Missing)
4 (Missing) 0x3446ec01a5f6a800 (Missing)
5 (Missing) 0x0 (Missing)
6 (Missing) 0x0 (Missing)
7 (Missing) 0x7d336e01a6642000 (Missing)
8 (Missing) 0x0 (Missing)
9 (Missing) 0x0 (Missing)
10 (Missing) 0x0 (Missing)
11 (Missing) 0xe7e2701aab2de00 (Missing)
12 (Missing) 0x0 (Missing)
13 (Missing) 0x0 (Missing)
14 (Missing) 0x0 (Missing)
15 libdispatch.dylib 0x1a601500c _dispatch_client_callout + 20
16 (Missing) 0x0 (Missing)
17 (Missing) 0x4c6faa0105956000 (Missing)
18 Analytics 0x1059588ac -[SEGSegmentIntegration trackAttributionData:] + 649 (SEGSegmentIntegration.m:649)
19 Analytics 0x105954f58 __62-[SEGSegmentIntegration initWithAnalytics:httpClient:storage:]_block_invoke_2 + 106 (SEGSegmentIntegration.m:106)
20 Analytics 0x10594c558 __seg_dispatch_specific_block_invoke + 65 (SEGAnalyticsUtils.m:65)
21 libdispatch.dylib 0x1a6013bb0 _dispatch_call_block_and_release + 32
22 (Missing) 0xd070481a6015000 (Missing)
23 (Missing) 0x0 (Missing)
24 (Missing) 0x595fca81a601c000 (Missing)
25 (Missing) 0x0 (Missing)
26 (Missing) 0x0 (Missing)
27 (Missing) 0x21728581a6080c00 (Missing)

#3. com.apple.uikit.eventfetch-thread
0 libsystem_kernel.dylib 0x1a6136bc4 mach_msg_trap + 8
1 libsystem_kernel.dylib 0x1a6135fe0 mach_msg + 76
2 (Missing) 0x1b7d0d01a62e8b00 (Missing)
3 (Missing) 0x14720e01a62e3900 (Missing)
4 (Missing) 0x5d2e0e01a62e3000 (Missing)
5 (Missing) 0x532b6b01a6628400 (Missing)
6 (Missing) 0x0 (Missing)
7 (Missing) 0x0 (Missing)
8 (Missing) 0x48120e81a6627000 (Missing)
9 (Missing) 0x5a16dd01a6762c00 (Missing)
10 (Missing) 0x0 (Missing)
11 (Missing) 0x77280101a6080c00 (Missing)

#4. Thread
0 libsystem_kernel.dylib 0x1a6159aac __workq_kernreturn + 8
1 libsystem_pthread.dylib 0x1a607aaec _pthread_wqthread + 356
2 (Missing) 0x23032501a6080c00 (Missing)

#5. NSOperationQueue 0x121c17f10 (QOS: UNSPECIFIED)
0 libsystem_kernel.dylib 0x1a6136c18 semaphore_timedwait_trap + 8
1 libdispatch.dylib 0x1a60155c8 _dispatch_sema4_timedwait + 68
2 (Missing) 0x0 (Missing)
3 (Missing) 0x0 (Missing)
4 Foundation 0x1a673dc60 NSBLOCKOPERATION_IS_CALLING_OUT_TO_A_BLOCK + 24
5 (Missing) 0x0 (Missing)
6 (Missing) 0x4510bc01a6740000 (Missing)
7 (Missing) 0xe24e301a663f480 (Missing)
8 (Missing) 0x0 (Missing)
9 (Missing) 0x20437901a6740400 (Missing)
10 (Missing) 0x3a07f701a6021400 (Missing)
11 (Missing) 0x0 (Missing)
12 (Missing) 0x0 (Missing)
13 (Missing) 0x0 (Missing)
14 (Missing) 0xc0aac01a6023c00 (Missing)
15 (Missing) 0x0 (Missing)
16 (Missing) 0x0 (Missing)
17 (Missing) 0x0 (Missing)

#6. Thread
0 libsystem_pthread.dylib 0x1a6080c70 start_wqthread + 178

#7. Crashed: com.twitter.crashlytics.ios.exception
0 Essentials 0x104d1b124 CLSProcessRecordAllThreads + 376 (CLSProcess.c:376)
1 Essentials 0x104d1b50c CLSProcessRecordAllThreads + 407 (CLSProcess.c:407)
2 Essentials 0x104d0b220 CLSHandler + 26 (CLSHandler.m:26)
3 Essentials 0x104d19738 __CLSExceptionRecord_block_invoke + 199 (CLSException.mm:199)
4 libdispatch.dylib 0x1a601500c _dispatch_client_callout + 20
5 (Missing) 0x0 (Missing)
6 (Missing) 0x7449cf0104d19000 (Missing)
7 Essentials 0x104d19014 CLSExceptionRecordNSException + 102 (CLSException.mm:102)
8 Essentials 0x104d18c38 CLSTerminateHandler() + 259 (CLSException.mm:259)
9 HockeySDK_Source 0x105b3f984 BITCrashUncaughtCXXTerminateHandler() + 188 (BITCrashCXXExceptionHandler.mm:188)
10 libc++abi.dylib 0x1a612d634 std::__terminate(void (*)()) + 20
11 (Missing) 0x0 (Missing)
12 (Missing) 0x0 (Missing)
13 (Missing) 0x4069b581a601b400 (Missing)
14 (Missing) 0x3c185381a601be00 (Missing)
15 (Missing) 0x0 (Missing)
16 (Missing) 0x0 (Missing)
17 (Missing) 0x0 (Missing)

#8. com.twitter.crashlytics.ios.MachExceptionServer
0 libsystem_kernel.dylib 0x1a6136bc4 mach_msg_trap + 8
1 libsystem_kernel.dylib 0x1a6135fe0 mach_msg + 76
2 (Missing) 0x7b2d698104d06400 (Missing)
3 libsystem_pthread.dylib 0x1a6078d5c _pthread_start + 128
4 (Missing) 0x0 (Missing)

#9. Thread
0 libsystem_kernel.dylib 0x1a6159aac __workq_kernreturn + 8
1 libsystem_pthread.dylib 0x1a607aaec _pthread_wqthread + 356
2 (Missing) 0x3247a981a6080c00 (Missing)

#10. JavaScriptCore bmalloc scavenger
0 libsystem_kernel.dylib 0x1a6158cc4 __psynch_cvwait + 8
1 libsystem_pthread.dylib 0x1a607c508 _pthread_cond_wait + 680
2 (Missing) 0x410b501a61acd00 (Missing)
3 (Missing) 0x0 (Missing)
4 (Missing) 0x3c10ef01b538c400 (Missing)
5 (Missing) 0x0 (Missing)
6 (Missing) 0x7c010681b538d400 (Missing)
7 (Missing) 0x0 (Missing)
8 (Missing) 0x0 (Missing)

#11. com.apple.NSURLConnectionLoader
0 libsystem_kernel.dylib 0x1a6136bc4 mach_msg_trap + 8
1 libsystem_kernel.dylib 0x1a6135fe0 mach_msg + 76
2 (Missing) 0x0 (Missing)
3 (Missing) 0x57621001a62e3800 (Missing)
4 (Missing) 0x4e1def81a62e3000 (Missing)
5 (Missing) 0x3033c681a95a5c00 (Missing)
6 (Missing) 0x0 (Missing)
7 (Missing) 0x67492f81a6762c00 (Missing)
8 (Missing) 0x6d3a9601a6078c00 (Missing)
9 (Missing) 0x1b0b1e01a6080d00 (Missing)

@bsneed
Copy link
Contributor

bsneed commented Jan 30, 2020

This looks to be because values in the integrations dictionary supplied by the server are being overwritten. If you pull 3.8.0-beta.1, you'll see an assert here explaining this. If the server supplies integrations: { "AppBoy": true } and you overwrite that with something other than a bool, you'll see that crash. Not the best explanation since we probably shouldn't allow developers to write to that dictionary, but some precedence has been established in the past that this is acceptable.

@bsneed bsneed closed this as completed Jan 30, 2020
@ldstreet
Copy link

ldstreet commented Feb 4, 2020

Is this the precedence you are referring to? https://segment.com/docs/connections/destinations/catalog/amplitude/#sessionid

@bsneed
Copy link
Contributor

bsneed commented Feb 4, 2020

@ldstreet that's correct. this particular way of doing things has never worked for iOS it seems. we're evaluating how to best handle it going forward, whether it's a doc update or more changes. we've merged a PR that fixes the crash, but doesn't necessarily allow something like what you linked to work as documented (which it seems never did for iOS unfortunately)

@bsneed bsneed reopened this Feb 11, 2020
bsneed added a commit that referenced this issue Feb 11, 2020
…blement (#863)

* Address Issue #851; Expect dictionary as well for for integration enablement.

* Fixed broken test.
@bsneed
Copy link
Contributor

bsneed commented Feb 11, 2020

We decided the best path forward for now was to make dictionary being present be equivalent to a TRUE bool value.

@bsneed bsneed closed this as completed Feb 11, 2020
@ldstreet
Copy link

ldstreet commented Mar 23, 2020

Thanks for the fix, @bsneed ! when can we expect this to be released? We are seeing crashes in production and would rather not ship from the master branch.

@bsneed
Copy link
Contributor

bsneed commented Mar 23, 2020

Hi @ldstreet our betas are typically pretty stable. We have an internal qualification process that dictates releases to a certain extent. This beta has already passed the internal testing phase, and now it has to hit a threshold for # of events that have passed through it. I don't really have a timeline for when that'll get met unfortunately. If no one will use betas, it makes it difficult. :(

kevinfarst-earnin added a commit to activehours/analytics-ios that referenced this issue Jun 10, 2020
* adding “name” field to payload;updated nimble to version 7.3.4

* Fix GCD mutual dependency (segmentio#785)

* Add iOS Backgrounded Event. (segmentio#831)

* Add iOS Backgrounded Event.

* Bump Xcode CI version

* Bump pods

* Updated properties

* Simplified App Backgrounded call

* Fixed test since we dropped the param.

* Reverted xcode CI version number

* LIB-1212: Promoting 3.7.0-beta.4 to release. (segmentio#834) (segmentio#836)

* Prepare for release 3.7.0

* Updated cartfile.

* Updated version in SEGAnalytics.m

* Updated version in readme instructions.

* Preparing 3.8.0-beta.0 release. (segmentio#837) (segmentio#838)

* Preparing 3.8.0-beta.0 release.

* `CoreTelephony` library is now only included on iOS targets. This was done so that tvOS targets could build without linker errors. (segmentio#842)

* Add support for SSL Pinning (segmentio#839)

* Support SSL pinning

Client integrations can optionally pass in a NSURLSessionDelegate in the SEGAnalyticsConfiguration object.
If set, NSURLSessionDelegate callbacks are forwarded to the client code where SSL pinning checks can be implemented

* test httpSessionDelegate configuration

* Fix for LIB-1416 & Github segmentio#846 (segmentio#853)

* Fix for LIB-1416 & Github segmentio#846

- Stops blindly passing dictionaries.
- Property dictionaries are checked for NSCoding conformance to ensure they can be serialized.
- Property dictionaries are deep copied so contents can’t change while the pipeline is in progress.
- Puts a try/catch arrangement as a temporary guard against crashes for serialization failures until the storage format can be changed.

* Fixed missing ;

* Added test for deepCopy/conformance additions.

* Swapped JSON in for the storage format instead of plists. (segmentio#854)

* Converted file storage to JSON from plist.

* Updated string storage to account for JSON vs plist differences.

* update podfile lock.

* Remove some NSNull hacks.

* Updated tests to validate null values.

* Fixed LIB-1462 (segmentio#855)

* Reload static context data when the app returns from background. (segmentio#856)

* Respond to changes regarding advertising ID.

* Removed unnecessary context.

* Remove extraneous NSNull handling causing tests to fail.

* Added weakify/strongify macros.

* Removed extraneous NSNull checking.

* Put locking around static context access.

* Prepare for release 3.8.0-beta.1

* Fix changelog for 3.8.0-beta.1

* Updated carthage versions.

* Update config.yml

* [tvOS] Move SEGQueue from UserDefaults to caches directory (segmentio#861)

* Stops using UserDefaults for queue on tvOS and uses NSCachesDirectory

Changes storage to fileStorage and userDefaultsStorage. Utilizes userDefaults on tvOS for information such as anonymousID and configuration, but moves tvOS's queue into the NSCachesDirectory. The reasoning is that tvOS has a 1mb limit for UserDefaults and the queue can grow rapidly in size, leading to app crashes when saving more than 1mb of data to UserDefaults.

* Adds a constant for key. Seperate cache dir and appSupport dir functions. Removes unused init.

* Adds functionality to remove old UserDefaults queue on tvOS.

Updates migrated removal block to account for tvOS now that the queue is no longer in UserDefaults. Adds back in a #else and #endif that was accidently removed.

* Adds tvOS unit test target

* Adds new AnalyticsTestsTVOS scheme
* Updates pods to include all test pods for AnalyticsTestsTVOS
* Fixes unit test import for QuickTVOS

* Add tvOS options for make file

* Enabled code coverage on tvOS tests

* Fix up unit test warning

"result of expect is never nil"

* Adds test to ensure that UserDefaults SEGQueue is cleared on initialization for tvOS & iOS

* Adds test to ensure SEGQueue is empty when missing form file storage

* Reverts unnecessary import for QuickTVOS

* Adds test for FileStorage caches directory helper

* Fix up: Adds SwiftTryCatch pod to tvOS test target

* Fix up makefile to have correct build target for build-ios & build-tvos

* Fix up: updates xcodebuild destination to match devices found on circleci

* Break up ios and tvos build/test steps

* Circleci: Cache pods

* Fix up: tvOS test build

* Fix up spacing

* Fix up flaky unit test

Co-authored-by: Connor Ricks <connor.ricks@gmail.com>

* Fix issues around plist->json conversion & nil values (segmentio#862)

* Fixing a crash from plist->json conversion where result is not actually a dictionary.

* Made code flow the same as non-conversion.

* Set compatibility to 10.0.

* Fixed issues around setting nil values even though they are expected.

* Address Issue segmentio#851; Expect dictionary as well for for integration enablement (segmentio#863)

* Address Issue segmentio#851; Expect dictionary as well for for integration enablement.

* Fixed broken test.

* Differences observed in how iOS/android pass userId/anonId; Corrected. (segmentio#864)

* Disabled tvOS tests temporarily.

* Updated podfile lock.

* Fixed LIB-1698; Differences observed in how ios/android pass userId/anonId in traits.

* Another podfile lock update.

* Fixed test.

* Set swift version for tests.

* Reverted podfile lock changes due to incompatibilities.

* Look at previously cached settings before blowing them away. (segmentio#866)

* Bsneed/timestamps (segmentio#876)

* LIB-1656: Added nanosecond timestamps

* Actually use the timestamp we’re carrying around.

* In case the context is modified, preserve the timestamp.

* Bump timestamp nanosecond precision to 9.

* Only carry over the timestamp during a modify if there was one to begin with.

* Added experimental options to configuration.

* Added a second version of 8601 date creation.

* Respect experimental value now present in config.

* Added nanosecond time test.

Co-authored-by: Brandon Sneed <brandon.sneed@segment.com>

* Prepare for release 3.8.0-beta.2.

* Fixed warning.

* Updated carthage files.

* Implement maximum batch request size (segmentio#874)

* Implement maximum request size

* Add test when batch exceeds the size

* Execute check before gzip

* Remove stub request

* Prepare for release 3.8.0.

* Updated carthage files.

* Misc Fixes (segmentio#884)

* Add name and properties to auto screen reporting

* Make seg_topViewController handle tab and custom container VCs

* Simplify SEGScreenReporting protocol

Inspired by comments from @f2prateek, simplify the the `SEGScreenReporting` protocol to replace the name and properties fields with a single method (`seg_trackScreen`) that can be implemented when screen tracking for a specific view controller that needs a custom name, properties, or options.

* Update Nimble to build with Xcode 10.2

* Add tests for seg_topViewController

* fixed a crash in file storage when trying to get a string stored using old SDK version (segmentio#880)

* Fixed issue where build/version were removed from Application Opened events from background state.

* Publish filenames used for data storage (segmentio#865)

* Remove tvos test from scheme setup.

* Fixed selector reference.

* Removed unused code.

Co-authored-by: David Whetstone <david@humblehacker.com>
Co-authored-by: Sergei Guselnikov <arietis@users.noreply.github.com>
Co-authored-by: Brandon Sneed <brandon.sneed@segment.com>
Co-authored-by: Błażej Biesiada <bejo@users.noreply.github.com>

* Add previouslyCachedSettings count (segmentio#889)

* Prepare for release 3.8.1

* Updated carthage files to 3.8.1

* Prepare for release 3.8.2.

* Updated carthage files for 3.8.2

* Add ability to set default settings is segment.com can't be reached.  Backported from segmentio#888 (segmentio#897)

Co-authored-by: Brandon Sneed <brandon.sneed@segment.com>

* change logic for naming conventions (segmentio#885)

* Prepare for release 3.9.0

* Updated carthage files for 3.9.0

Co-authored-by: Daniel Jackins <danieljackins@gmail.com>
Co-authored-by: dsjackins <daniel.jackins@segment.com>
Co-authored-by: Fathy Boundjadj <fathy.boundjadj@segment.com>
Co-authored-by: Carlos Kelly <me@carlos.dev>
Co-authored-by: Brandon Sneed <brandon@redf.net>
Co-authored-by: Dan Morrow <skydivedan@users.noreply.github.com>
Co-authored-by: Ujjawal Garg <47793370+ujjawalgarg@users.noreply.github.com>
Co-authored-by: Brandon Sneed <brandon.sneed@segment.com>
Co-authored-by: Ben Humphries <iMacHumphries@me.com>
Co-authored-by: Connor Ricks <connor.ricks@gmail.com>
Co-authored-by: Cristian Lupu <cristian.lupu@ellation.com>
Co-authored-by: David Whetstone <david@humblehacker.com>
Co-authored-by: Sergei Guselnikov <arietis@users.noreply.github.com>
Co-authored-by: Błażej Biesiada <bejo@users.noreply.github.com>
Co-authored-by: alanjcharles <50601149+alanjcharles@users.noreply.github.com>
Co-authored-by: Ko <kowongh@gmail.com>
kevinfarst-earnin added a commit to activehours/analytics-ios that referenced this issue Sep 25, 2020
* Update Nimble to build with Xcode 10.2

* Add name and properties to auto screen reporting

* Make seg_topViewController handle tab and custom container VCs

* Simplify SEGScreenReporting protocol

Inspired by comments from @f2prateek, simplify the the `SEGScreenReporting` protocol to replace the name and properties fields with a single method (`seg_trackScreen`) that can be implemented when screen tracking for a specific view controller that needs a custom name, properties, or options.

* Add tests for seg_topViewController

* adding “name” field to payload;updated nimble to version 7.3.4

* Fix GCD mutual dependency (segmentio#785)

* Add iOS Backgrounded Event. (segmentio#831)

* Add iOS Backgrounded Event.

* Bump Xcode CI version

* Bump pods

* Updated properties

* Simplified App Backgrounded call

* Fixed test since we dropped the param.

* Reverted xcode CI version number

* LIB-1212: Promoting 3.7.0-beta.4 to release. (segmentio#834) (segmentio#836)

* Prepare for release 3.7.0

* Updated cartfile.

* Updated version in SEGAnalytics.m

* Updated version in readme instructions.

* Preparing 3.8.0-beta.0 release. (segmentio#837) (segmentio#838)

* Preparing 3.8.0-beta.0 release.

* `CoreTelephony` library is now only included on iOS targets. This was done so that tvOS targets could build without linker errors. (segmentio#842)

* Add support for SSL Pinning (segmentio#839)

* Support SSL pinning

Client integrations can optionally pass in a NSURLSessionDelegate in the SEGAnalyticsConfiguration object.
If set, NSURLSessionDelegate callbacks are forwarded to the client code where SSL pinning checks can be implemented

* test httpSessionDelegate configuration

* Fix for LIB-1416 & Github segmentio#846 (segmentio#853)

* Fix for LIB-1416 & Github segmentio#846

- Stops blindly passing dictionaries.
- Property dictionaries are checked for NSCoding conformance to ensure they can be serialized.
- Property dictionaries are deep copied so contents can’t change while the pipeline is in progress.
- Puts a try/catch arrangement as a temporary guard against crashes for serialization failures until the storage format can be changed.

* Fixed missing ;

* Added test for deepCopy/conformance additions.

* Swapped JSON in for the storage format instead of plists. (segmentio#854)

* Converted file storage to JSON from plist.

* Updated string storage to account for JSON vs plist differences.

* update podfile lock.

* Remove some NSNull hacks.

* Updated tests to validate null values.

* Fixed LIB-1462 (segmentio#855)

* Reload static context data when the app returns from background. (segmentio#856)

* Respond to changes regarding advertising ID.

* Removed unnecessary context.

* Remove extraneous NSNull handling causing tests to fail.

* Added weakify/strongify macros.

* Removed extraneous NSNull checking.

* Put locking around static context access.

* Prepare for release 3.8.0-beta.1

* Fix changelog for 3.8.0-beta.1

* Updated carthage versions.

* Update config.yml

* [tvOS] Move SEGQueue from UserDefaults to caches directory (segmentio#861)

* Stops using UserDefaults for queue on tvOS and uses NSCachesDirectory

Changes storage to fileStorage and userDefaultsStorage. Utilizes userDefaults on tvOS for information such as anonymousID and configuration, but moves tvOS's queue into the NSCachesDirectory. The reasoning is that tvOS has a 1mb limit for UserDefaults and the queue can grow rapidly in size, leading to app crashes when saving more than 1mb of data to UserDefaults.

* Adds a constant for key. Seperate cache dir and appSupport dir functions. Removes unused init.

* Adds functionality to remove old UserDefaults queue on tvOS.

Updates migrated removal block to account for tvOS now that the queue is no longer in UserDefaults. Adds back in a #else and #endif that was accidently removed.

* Adds tvOS unit test target

* Adds new AnalyticsTestsTVOS scheme
* Updates pods to include all test pods for AnalyticsTestsTVOS
* Fixes unit test import for QuickTVOS

* Add tvOS options for make file

* Enabled code coverage on tvOS tests

* Fix up unit test warning

"result of expect is never nil"

* Adds test to ensure that UserDefaults SEGQueue is cleared on initialization for tvOS & iOS

* Adds test to ensure SEGQueue is empty when missing form file storage

* Reverts unnecessary import for QuickTVOS

* Adds test for FileStorage caches directory helper

* Fix up: Adds SwiftTryCatch pod to tvOS test target

* Fix up makefile to have correct build target for build-ios & build-tvos

* Fix up: updates xcodebuild destination to match devices found on circleci

* Break up ios and tvos build/test steps

* Circleci: Cache pods

* Fix up: tvOS test build

* Fix up spacing

* Fix up flaky unit test

Co-authored-by: Connor Ricks <connor.ricks@gmail.com>

* Fix issues around plist->json conversion & nil values (segmentio#862)

* Fixing a crash from plist->json conversion where result is not actually a dictionary.

* Made code flow the same as non-conversion.

* Set compatibility to 10.0.

* Fixed issues around setting nil values even though they are expected.

* Address Issue segmentio#851; Expect dictionary as well for for integration enablement (segmentio#863)

* Address Issue segmentio#851; Expect dictionary as well for for integration enablement.

* Fixed broken test.

* Differences observed in how iOS/android pass userId/anonId; Corrected. (segmentio#864)

* Disabled tvOS tests temporarily.

* Updated podfile lock.

* Fixed LIB-1698; Differences observed in how ios/android pass userId/anonId in traits.

* Another podfile lock update.

* Fixed test.

* Set swift version for tests.

* Reverted podfile lock changes due to incompatibilities.

* Look at previously cached settings before blowing them away. (segmentio#866)

* Bsneed/timestamps (segmentio#876)

* LIB-1656: Added nanosecond timestamps

* Actually use the timestamp we’re carrying around.

* In case the context is modified, preserve the timestamp.

* Bump timestamp nanosecond precision to 9.

* Only carry over the timestamp during a modify if there was one to begin with.

* Added experimental options to configuration.

* Added a second version of 8601 date creation.

* Respect experimental value now present in config.

* Added nanosecond time test.

Co-authored-by: Brandon Sneed <brandon.sneed@segment.com>

* Prepare for release 3.8.0-beta.2.

* Fixed warning.

* Updated carthage files.

* Implement maximum batch request size (segmentio#874)

* Implement maximum request size

* Add test when batch exceeds the size

* Execute check before gzip

* Remove stub request

* Added Integration Middleware capabilities (segmentio#879)

* Added integration middleware support.

* Fixed warnings; Updated project to recommended settings.

* only signal the runner if there’s actually middleware to be processed.

* Added & Updated tests.

* Added experimental raw filter block.

* Removed unnecessary logs.

* Added logic to allow tests to function.

Co-authored-by: Brandon Sneed <brandon.sneed@segment.com>

* Prepare for release 3.8.0.

* Updated carthage files.

* Prepare for release 4.0.0-beta.0.

* Updated carthage files.

* fixed a crash in file storage when trying to get a string stored using old SDK version (segmentio#880)

* fixed a crash in file storage when trying to get a string stored using old SDK version (segmentio#880)

* Fixed issue where build/version were removed from Application Opened events from background state.

* Publish filenames used for data storage (segmentio#865)

* Publish filenames used for data storage (segmentio#865)

* Remove tvos test from scheme setup.

* Fixed selector reference.

* Removed unused code.

* Misc Fixes (segmentio#884)

* Add name and properties to auto screen reporting

* Make seg_topViewController handle tab and custom container VCs

* Simplify SEGScreenReporting protocol

Inspired by comments from @f2prateek, simplify the the `SEGScreenReporting` protocol to replace the name and properties fields with a single method (`seg_trackScreen`) that can be implemented when screen tracking for a specific view controller that needs a custom name, properties, or options.

* Update Nimble to build with Xcode 10.2

* Add tests for seg_topViewController

* fixed a crash in file storage when trying to get a string stored using old SDK version (segmentio#880)

* Fixed issue where build/version were removed from Application Opened events from background state.

* Publish filenames used for data storage (segmentio#865)

* Remove tvos test from scheme setup.

* Fixed selector reference.

* Removed unused code.

Co-authored-by: David Whetstone <david@humblehacker.com>
Co-authored-by: Sergei Guselnikov <arietis@users.noreply.github.com>
Co-authored-by: Brandon Sneed <brandon.sneed@segment.com>
Co-authored-by: Błażej Biesiada <bejo@users.noreply.github.com>

* Update CHANGELOG.md

* Add ability to set default settings is segment.com can't be reached. (segmentio#888)

* Added integration middleware support.

* Fixed warnings; Updated project to recommended settings.

* only signal the runner if there’s actually middleware to be processed.

* Added & Updated tests.

* Added experimental raw filter block.

* Removed unnecessary logs.

* Added logic to allow tests to function.

* Allow for user-supplied settings.

* Make sure segment.io is still present in the integrations list.

* Added ability to set default settings if segment.com can’t be reached.

* Removed test code.

Co-authored-by: Brandon Sneed <brandon.sneed@segment.com>

* Fixed defaultSettings documentation.

* Add previouslyCachedSettings count (segmentio#889)

* Add previouslyCachedSettings count (segmentio#889)

* Prepare for release 3.8.1

* Updated carthage files to 3.8.1

* Prepare for release 3.8.2.

* Update CHANGELOG.md

* Updated carthage files for 3.8.2

* Allow customers to set default settings values if segment.com unreachable. (segmentio#891)

* Added integration middleware support.

* Fixed warnings; Updated project to recommended settings.

* only signal the runner if there’s actually middleware to be processed.

* Added & Updated tests.

* Added experimental raw filter block.

* Removed unnecessary logs.

* Added logic to allow tests to function.

* Allow for user-supplied settings.

* Make sure segment.io is still present in the integrations list.

* Added ability to set default settings if segment.com can’t be reached.

* Removed test code.

Co-authored-by: Brandon Sneed <brandon.sneed@segment.com>

* Makes IDFA support externally/customer driven. (segmentio#892)

* Remove IDFA related bits and push to customers.

* Check if ad block is nil before executing

* Fixed header reference.

* Adjusted IDFA test.

Co-authored-by: Brandon Sneed <brandon.sneed@segment.com>

* Prepare for release 4.0.0-beta.1

* Updated tests to remove Alamofire (segmentio#895)

Co-authored-by: Cody Garvin <cody.garvin@segment.com>

* Renamed middleware methods to match a.js naming. (segmentio#896)

* Renamed middleware methods to match a.js naming.

* Updated a comment re integration/destination.

Co-authored-by: Brandon Sneed <brandon.sneed@segment.com>

* Add ability to set default settings is segment.com can't be reached.  Backported from segmentio#888 (segmentio#897)

Co-authored-by: Brandon Sneed <brandon.sneed@segment.com>

* change logic for naming conventions (segmentio#885)

* Prepare for release 3.9.0

* Updated carthage files for 3.9.0

* Merged 3.9 changelog; Bumped CI xcode version.

* change logic for naming conventions (segmentio#885)

* LIB-83: Fixed crash on UISceneDelegate applications (segmentio#899)

Co-authored-by: Cody Garvin <cody.garvin@segment.com>

* Added application object back to notifications (segmentio#900)

Co-authored-by: Cody Garvin <cody.garvin@segment.com>

* LIB-35: Updated class names for Swift (segmentio#902)

Co-authored-by: Cody Garvin <cody.garvin@segment.com>

* Added Swift Package Manager support (segmentio#904)

* Add global state management (segmentio#905)

* First pass at basic state management

* First bit of state being shared.

* Wrapped up state management.

* Commented out old iAd references.

* Filled in missing fields and adding messageId

* Removed comments

* Removed unused code.

* Adjustments to nullability

Co-authored-by: Brandon Sneed <brandon.sneed@segment.com>

* Prepare for release 4.0.1.

* Update cartfile.resolved.

* LIBMOBILE-77: Removed Quick and Nimble, updated unit tests (segmentio#909)

* Spm update (segmentio#911)

* LIBMOBILE-77: Removed Quick and Nimble, updated unit tests

* Issue 906: Updated package to supports all types of libraries

* Payload Info & Traits Fixes (segmentio#912)

* Moved some fields from SEGContext to more appropriate SEGPayload.

* Fix trait storage/init issue.

* Fixed traits usage w/ tests.

Co-authored-by: Brandon Sneed <brandon.sneed@segment.com>

* Separate public utils from private utils appropriately (segmentio#913)

* Separated public utils from private utils

* Made SEGAnalyticsUtils public.

* Fixed header includes.

Co-authored-by: Brandon Sneed <brandon.sneed@segment.com>

* Prepare for release 4.0.2

* Fix SwiftUI previews in macOS Catalyst builds (segmentio#914)

* Fix Swift Package Manager macOS Catalyst builds

Link CoreTelephony to address a link error on macOS Catalyst.

* Add macOS to the conditionals for linking CoreTelephony.

* Full example (segmentio#915)

* Added initial full example app

* Added full example app with Swift Package Manager

Co-authored-by: Cody Garvin <cody.garvin@segment.com>

* LIBMOBILE-109: Updated an issue with new traits not overriding old traits (segmentio#917)

* Prepare for release 4.0.3

* Miscellaneous Fixes (segmentio#920)

* Fixed issue with userId not being cleared properly in a reset.

* Removed SwiftTryCatch dependency

* Removed unnecessary bridging header item in tests.

* Updated to swift 5 syntax.

* Workaround for issue where UIBackgroundTaskIdentifier is diff types between Objc / Swift

* Removed unused code.

* Fixed issue w/ deadlock setting device token

* Fixed tests.

Co-authored-by: Brandon Sneed <brandon.sneed@segment.com>

* Fixed SEGLog permissions (segmentio#921)

* Migs647/macconversion (segmentio#918)

* Added Catalyst compatibility

* Added MacOS support

* Updated example apps to use SPM

* Repaired example SPM dependencies

* Fixed makefile for carthage to handle iOS only

* Prepare for release 4.0.4

* Added Carthage and SwiftPM badge

* Disregard payloads that fail conversion from plist to json backing (segmentio#925)

* Deprecated configuration access and updated associated tests

* [LIBMOBILE-149] Fixed double device payload

* Added stubs for edge functions. (segmentio#932)

Co-authored-by: Brandon Sneed <brandon.sneed@segment.com>

* Fixed property access

* Fixed issue where non-serializable types would get into payload (segmentio#937)

Co-authored-by: Brandon Sneed <brandon.sneed@segment.com>

* Prepare for release 4.0.5

* Rename Reachability to SEGReachability

Co-authored-by: David Whetstone <david@humblehacker.com>
Co-authored-by: Daniel Jackins <danieljackins@gmail.com>
Co-authored-by: dsjackins <daniel.jackins@segment.com>
Co-authored-by: Fathy Boundjadj <fathy.boundjadj@segment.com>
Co-authored-by: Carlos Kelly <me@carlos.dev>
Co-authored-by: Brandon Sneed <brandon@redf.net>
Co-authored-by: Dan Morrow <skydivedan@users.noreply.github.com>
Co-authored-by: Ujjawal Garg <47793370+ujjawalgarg@users.noreply.github.com>
Co-authored-by: Brandon Sneed <brandon.sneed@segment.com>
Co-authored-by: Ben Humphries <iMacHumphries@me.com>
Co-authored-by: Connor Ricks <connor.ricks@gmail.com>
Co-authored-by: Cristian Lupu <cristian.lupu@ellation.com>
Co-authored-by: Sergei Guselnikov <arietis@users.noreply.github.com>
Co-authored-by: Błażej Biesiada <bejo@users.noreply.github.com>
Co-authored-by: alanjcharles <50601149+alanjcharles@users.noreply.github.com>
Co-authored-by: Cody Garvin <emig647@gmail.com>
Co-authored-by: Cody Garvin <cody.garvin@segment.com>
Co-authored-by: Ko <kowongh@gmail.com>
Co-authored-by: Matt Gallagher <mattgallagher@users.noreply.github.com>
Co-authored-by: Mike Ciesielka <maciesielka@comcast.net>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants