diff --git a/.travis.yml b/.travis.yml index d19dcd958..c0ebaea2c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,5 +1,5 @@ language: objective-c -osx_image: xcode10 +osx_image: xcode10.1 env: global: - LC_CTYPE=en_US.UTF-8 @@ -10,16 +10,15 @@ matrix: - env: NAME="ably-iOS" LANE=test_iOS11 - env: NAME="ably-iOS" LANE=test_iOS10 - env: NAME="ably-iOS" LANE=test_iOS9 -before_install: - - gem install cocoapods -v '1.5.3' - - pod repo update > /dev/null + - env: NAME="ably-tvOS" LANE=test_tvOS12 + - env: NAME="ably-macOS" LANE=test_macOS install: - # CocoaPods - - pod install # Carthage - - carthage bootstrap --platform iOS + - if [[ ${NAME} == "ably-iOS" ]]; then carthage update --platform iOS --cache-builds; fi + - if [[ ${NAME} == "ably-tvOS" ]]; then carthage update --platform tvOS --cache-builds; fi + - if [[ ${NAME} == "ably-macOS" ]]; then carthage update --platform macOS --cache-builds; fi # Update fastlane - - gem install fastlane -v '2.100.1' + - gem install fastlane -v '2.108.0' before_script: - xcrun simctl erase all script: @@ -27,3 +26,6 @@ script: - fastlane $LANE after_success: - sleep 5 +cache: + directories: + - Carthage \ No newline at end of file diff --git a/Ably.podspec b/Ably.podspec index 5fb90db74..bbd7ed856 100644 --- a/Ably.podspec +++ b/Ably.podspec @@ -3,7 +3,7 @@ Pod::Spec.new do |s| s.version = `Scripts/get-version.sh` s.summary = "iOS client for Ably" s.description = <<-DESC - iOS client library for ably.io, the realtime messaging service, written in Objective-C and ready for Swift 3.0. + iOS client library for ably.io, the realtime messaging service, written in Objective-C and ready for Swift 4.0 and later. DESC s.homepage = "https://www.ably.io" s.license = { :type => 'Apache 2.0', :file => 'LICENSE' } @@ -14,12 +14,12 @@ Pod::Spec.new do |s| s.platform = :ios, '8.0' s.requires_arc = true s.swift_version = '4.2' - s.source_files = 'Source/*.{h,m}' - s.private_header_files = 'Source/*+Private.h' + s.source_files = 'Source/**/*.{h,m}' + s.private_header_files = 'Source/*+Private.h', 'Source/Private/*.h' s.module_map = 'Source/Ably.modulemap' s.dependency 'SocketRocketAblyFork', '0.5.2-ably-2' - s.dependency 'msgpack', '0.1.8' - s.dependency 'KSCrashAblyFork', '1.15.8-ably-2' - s.dependency 'ULID', '1.0.2' + s.dependency 'MsgPackAblyFork', '0.2.0-ably-1' + s.dependency 'KSCrashAblyFork', '1.15.18-ably-1' + s.dependency 'ULID', '1.0.4' s.dependency 'SAMKeychain', '1.5.3' end diff --git a/Ably.xcconfig b/Ably.xcconfig new file mode 100644 index 000000000..a6e7bbc98 --- /dev/null +++ b/Ably.xcconfig @@ -0,0 +1 @@ +#include? "Version.xcconfig" diff --git a/Ably.xcodeproj/project.pbxproj b/Ably.xcodeproj/project.pbxproj index d155758b8..bae1185de 100644 --- a/Ably.xcodeproj/project.pbxproj +++ b/Ably.xcodeproj/project.pbxproj @@ -18,7 +18,6 @@ 1C6C18A41ADFDAB100AB79E4 /* ARTLog.m in Sources */ = {isa = PBXBuildFile; fileRef = 1C6C18A21ADFDAB100AB79E4 /* ARTLog.m */; }; 1CD8DC9F1B1C7315007EAF36 /* ARTDefault.h in Headers */ = {isa = PBXBuildFile; fileRef = 1CD8DC9D1B1C7315007EAF36 /* ARTDefault.h */; settings = {ATTRIBUTES = (Public, ); }; }; 1CD8DCA01B1C7315007EAF36 /* ARTDefault.m in Sources */ = {isa = PBXBuildFile; fileRef = 1CD8DC9E1B1C7315007EAF36 /* ARTDefault.m */; }; - 6CF25F641B2BC9583DA0598F /* Pods_AblySpec.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F8F23F59DB2791861CD541BF /* Pods_AblySpec.framework */; }; 850BFB4C1B79323C009D0ADD /* ARTPaginatedResult.h in Headers */ = {isa = PBXBuildFile; fileRef = 850BFB4A1B79323C009D0ADD /* ARTPaginatedResult.h */; settings = {ATTRIBUTES = (Public, ); }; }; 850BFB4D1B79323C009D0ADD /* ARTPaginatedResult.m in Sources */ = {isa = PBXBuildFile; fileRef = 850BFB4B1B79323C009D0ADD /* ARTPaginatedResult.m */; }; 851674EF1B7BA5CD00D35169 /* Stats.swift in Sources */ = {isa = PBXBuildFile; fileRef = 851674EE1B7BA5CD00D35169 /* Stats.swift */; }; @@ -33,18 +32,18 @@ 960D07971A46FFC300ED8C8C /* ARTRest+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 960D07951A46FFC300ED8C8C /* ARTRest+Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; 961343D81A42E0B7006DC822 /* ARTClientOptions.h in Headers */ = {isa = PBXBuildFile; fileRef = 961343D61A42E0B7006DC822 /* ARTClientOptions.h */; settings = {ATTRIBUTES = (Public, ); }; }; 961343D91A42E0B7006DC822 /* ARTClientOptions.m in Sources */ = {isa = PBXBuildFile; fileRef = 961343D71A42E0B7006DC822 /* ARTClientOptions.m */; }; - 967A43211A39AEAF00E4CE23 /* ARTNSArray+ARTFunctional.h in Headers */ = {isa = PBXBuildFile; fileRef = 967A431F1A39AEAF00E4CE23 /* ARTNSArray+ARTFunctional.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 967A43211A39AEAF00E4CE23 /* ARTNSArray+ARTFunctional.h in Headers */ = {isa = PBXBuildFile; fileRef = 967A431F1A39AEAF00E4CE23 /* ARTNSArray+ARTFunctional.h */; }; 967A43221A39AEAF00E4CE23 /* ARTNSArray+ARTFunctional.m in Sources */ = {isa = PBXBuildFile; fileRef = 967A43201A39AEAF00E4CE23 /* ARTNSArray+ARTFunctional.m */; }; 96A507951A370F860077CDF8 /* ARTStats.h in Headers */ = {isa = PBXBuildFile; fileRef = 96A507931A370F860077CDF8 /* ARTStats.h */; settings = {ATTRIBUTES = (Public, ); }; }; 96A507961A370F860077CDF8 /* ARTStats.m in Sources */ = {isa = PBXBuildFile; fileRef = 96A507941A370F860077CDF8 /* ARTStats.m */; }; 96A507A11A377AA50077CDF8 /* ARTPresenceMessage.h in Headers */ = {isa = PBXBuildFile; fileRef = 96A5079F1A377AA50077CDF8 /* ARTPresenceMessage.h */; settings = {ATTRIBUTES = (Public, ); }; }; 96A507A21A377AA50077CDF8 /* ARTPresenceMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = 96A507A01A377AA50077CDF8 /* ARTPresenceMessage.m */; }; - 96A507A51A377DE90077CDF8 /* ARTNSDictionary+ARTDictionaryUtil.h in Headers */ = {isa = PBXBuildFile; fileRef = 96A507A31A377DE90077CDF8 /* ARTNSDictionary+ARTDictionaryUtil.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 96A507A51A377DE90077CDF8 /* ARTNSDictionary+ARTDictionaryUtil.h in Headers */ = {isa = PBXBuildFile; fileRef = 96A507A31A377DE90077CDF8 /* ARTNSDictionary+ARTDictionaryUtil.h */; }; 96A507A61A377DE90077CDF8 /* ARTNSDictionary+ARTDictionaryUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = 96A507A41A377DE90077CDF8 /* ARTNSDictionary+ARTDictionaryUtil.m */; }; 96A507A91A37806A0077CDF8 /* ARTEncoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 96A507A71A37806A0077CDF8 /* ARTEncoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; 96A507AD1A3780F60077CDF8 /* ARTJsonEncoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 96A507AB1A3780F60077CDF8 /* ARTJsonEncoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; 96A507AE1A3780F60077CDF8 /* ARTJsonEncoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 96A507AC1A3780F60077CDF8 /* ARTJsonEncoder.m */; }; - 96A507B51A37881C0077CDF8 /* ARTNSDate+ARTUtil.h in Headers */ = {isa = PBXBuildFile; fileRef = 96A507B31A37881C0077CDF8 /* ARTNSDate+ARTUtil.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 96A507B51A37881C0077CDF8 /* ARTNSDate+ARTUtil.h in Headers */ = {isa = PBXBuildFile; fileRef = 96A507B31A37881C0077CDF8 /* ARTNSDate+ARTUtil.h */; settings = {ATTRIBUTES = (Private, ); }; }; 96A507B61A37881C0077CDF8 /* ARTNSDate+ARTUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = 96A507B41A37881C0077CDF8 /* ARTNSDate+ARTUtil.m */; }; 96A507BD1A3791490077CDF8 /* ARTRealtime.h in Headers */ = {isa = PBXBuildFile; fileRef = 96A507BB1A3791490077CDF8 /* ARTRealtime.h */; settings = {ATTRIBUTES = (Public, ); }; }; 96A507BE1A3791490077CDF8 /* ARTRealtime.m in Sources */ = {isa = PBXBuildFile; fileRef = 96A507BC1A3791490077CDF8 /* ARTRealtime.m */; }; @@ -66,10 +65,453 @@ D38D22F220FDFD9900194B40 /* ULID.framework in Copy Carthage Frameworks to Test bundle */ = {isa = PBXBuildFile; fileRef = D77A0C951FFEEF0300711131 /* ULID.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; D3AD0EBD215E2FB000312105 /* ARTNSString+ARTUtil.h in Headers */ = {isa = PBXBuildFile; fileRef = D3AD0EBB215E2FB000312105 /* ARTNSString+ARTUtil.h */; }; D3AD0EBE215E2FB000312105 /* ARTNSString+ARTUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = D3AD0EBC215E2FB000312105 /* ARTNSString+ARTUtil.m */; }; + D7093C0F219E2DB200723F17 /* Ably.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D710D45B219495E2008F54AD /* Ably.framework */; }; + D7093C19219E465300723F17 /* TestUtilities.swift in Sources */ = {isa = PBXBuildFile; fileRef = 856AAC961B6E30C800B07119 /* TestUtilities.swift */; }; + D7093C1A219E465C00723F17 /* NSObject+TestSuite.m in Sources */ = {isa = PBXBuildFile; fileRef = D780846D1C68B3E50083009D /* NSObject+TestSuite.m */; }; + D7093C1B219E465F00723F17 /* NSObject+TestSuite.swift in Sources */ = {isa = PBXBuildFile; fileRef = D714A63D1C74D4B2002F2CA0 /* NSObject+TestSuite.swift */; }; + D7093C1C219E466400723F17 /* ReadmeExamples.swift in Sources */ = {isa = PBXBuildFile; fileRef = EBAB9A6E1C69702800AF036B /* ReadmeExamples.swift */; }; + D7093C1D219E466600723F17 /* Auth.swift in Sources */ = {isa = PBXBuildFile; fileRef = D7C1B8761BBEA81A0087B55F /* Auth.swift */; }; + D7093C1E219E466900723F17 /* RestClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 856AAC981B6E312F00B07119 /* RestClient.swift */; }; + D7093C1F219E466E00723F17 /* RestClientStats.swift in Sources */ = {isa = PBXBuildFile; fileRef = 853ED7C31B7A1A3C006F1C6F /* RestClientStats.swift */; }; + D7093C20219E466E00723F17 /* RestClientChannel.swift in Sources */ = {isa = PBXBuildFile; fileRef = D746AE2A1BBB625E003ECEF8 /* RestClientChannel.swift */; }; + D7093C21219E466E00723F17 /* RestClientChannels.swift in Sources */ = {isa = PBXBuildFile; fileRef = D746AE2B1BBB625E003ECEF8 /* RestClientChannels.swift */; }; + D7093C22219E466E00723F17 /* RestClientPresence.swift in Sources */ = {isa = PBXBuildFile; fileRef = D72768201C9C19040022F8B2 /* RestClientPresence.swift */; }; + D7093C23219E466E00723F17 /* RestPaginated.swift in Sources */ = {isa = PBXBuildFile; fileRef = D74CBC09212EC02C00D090E4 /* RestPaginated.swift */; }; + D7093C24219E466E00723F17 /* RealtimeClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = D723046F1BB72CED00F1ABDA /* RealtimeClient.swift */; }; + D7093C25219E466E00723F17 /* RealtimeClientConnection.swift in Sources */ = {isa = PBXBuildFile; fileRef = D7EBE5A21BE8391E0086E675 /* RealtimeClientConnection.swift */; }; + D7093C26219E466E00723F17 /* RealtimeClientChannel.swift in Sources */ = {isa = PBXBuildFile; fileRef = D74EFAEA1C4D09B500CFF98E /* RealtimeClientChannel.swift */; }; + D7093C27219E466E00723F17 /* RealtimeClientChannels.swift in Sources */ = {isa = PBXBuildFile; fileRef = D71D30031C5F7B2F002115B0 /* RealtimeClientChannels.swift */; }; + D7093C28219E466E00723F17 /* RealtimeClientPresence.swift in Sources */ = {isa = PBXBuildFile; fileRef = D7CEF1311C8DD3BC004FB242 /* RealtimeClientPresence.swift */; }; + D7093C29219E466E00723F17 /* Stats.swift in Sources */ = {isa = PBXBuildFile; fileRef = 851674EE1B7BA5CD00D35169 /* Stats.swift */; }; + D7093C2A219E466E00723F17 /* Utilities.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB1AE0CD1C5C3A4900D62250 /* Utilities.swift */; }; + D7093C2B219E466E00723F17 /* Crypto.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB7913A71C6E54C3000ABF9B /* Crypto.swift */; }; + D7093C33219ED41A00723F17 /* Nimble.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D7093C30219ED41A00723F17 /* Nimble.framework */; }; + D7093C34219ED41A00723F17 /* Aspects.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D7093C31219ED41A00723F17 /* Aspects.framework */; }; + D7093C35219ED41A00723F17 /* Quick.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D7093C32219ED41A00723F17 /* Quick.framework */; }; + D7093C3B219EDBFC00723F17 /* SocketRocket.framework in Copy Carthage Frameworks to Test bundle */ = {isa = PBXBuildFile; fileRef = D710D6A52194A09D008F54AD /* SocketRocket.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + D7093C3C219EDC0900723F17 /* Nimble.framework in Copy Carthage Frameworks to Test bundle */ = {isa = PBXBuildFile; fileRef = D7093C30219ED41A00723F17 /* Nimble.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + D7093C3D219EDC1800723F17 /* Aspects.framework in Copy Carthage Frameworks to Test bundle */ = {isa = PBXBuildFile; fileRef = D7093C31219ED41A00723F17 /* Aspects.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + D7093C3E219EDC1800723F17 /* Quick.framework in Copy Carthage Frameworks to Test bundle */ = {isa = PBXBuildFile; fileRef = D7093C32219ED41A00723F17 /* Quick.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + D7093C40219EDC3C00723F17 /* SwiftyJSON.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D7093C3F219EDC3C00723F17 /* SwiftyJSON.framework */; }; + D7093C41219EDC5000723F17 /* SwiftyJSON.framework in Copy Carthage Frameworks to Test bundle */ = {isa = PBXBuildFile; fileRef = D7093C3F219EDC3C00723F17 /* SwiftyJSON.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + D7093C44219EDC6B00723F17 /* SAMKeychain.framework in Copy Carthage Frameworks to Test bundle */ = {isa = PBXBuildFile; fileRef = D710D6A22194A09C008F54AD /* SAMKeychain.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + D7093C47219EDC8A00723F17 /* KSCrash.framework in Copy Carthage Frameworks to Test bundle */ = {isa = PBXBuildFile; fileRef = D710D6A32194A09D008F54AD /* KSCrash.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + D7093C49219EDC9B00723F17 /* msgpack.framework in Copy Carthage Frameworks to Test bundle */ = {isa = PBXBuildFile; fileRef = D710D6A42194A09D008F54AD /* msgpack.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + D7093C4B219EDCAB00723F17 /* ULID.framework in Copy Carthage Frameworks to Test bundle */ = {isa = PBXBuildFile; fileRef = D710D6A62194A09D008F54AD /* ULID.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + D7093C5B219EDE3200723F17 /* ably-common in Resources */ = {isa = PBXBuildFile; fileRef = 856AAC9A1B6E326E00B07119 /* ably-common */; }; + D7093C65219EE1AE00723F17 /* Ably.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D710D475219495FC008F54AD /* Ably.framework */; }; + D7093C70219EE25400723F17 /* TestUtilities.swift in Sources */ = {isa = PBXBuildFile; fileRef = 856AAC961B6E30C800B07119 /* TestUtilities.swift */; }; + D7093C71219EE25800723F17 /* NSObject+TestSuite.m in Sources */ = {isa = PBXBuildFile; fileRef = D780846D1C68B3E50083009D /* NSObject+TestSuite.m */; }; + D7093C72219EE25B00723F17 /* NSObject+TestSuite.swift in Sources */ = {isa = PBXBuildFile; fileRef = D714A63D1C74D4B2002F2CA0 /* NSObject+TestSuite.swift */; }; + D7093C73219EE26000723F17 /* ReadmeExamples.swift in Sources */ = {isa = PBXBuildFile; fileRef = EBAB9A6E1C69702800AF036B /* ReadmeExamples.swift */; }; + D7093C74219EE26400723F17 /* Auth.swift in Sources */ = {isa = PBXBuildFile; fileRef = D7C1B8761BBEA81A0087B55F /* Auth.swift */; }; + D7093C75219EE26400723F17 /* RestClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 856AAC981B6E312F00B07119 /* RestClient.swift */; }; + D7093C76219EE26400723F17 /* RestClientStats.swift in Sources */ = {isa = PBXBuildFile; fileRef = 853ED7C31B7A1A3C006F1C6F /* RestClientStats.swift */; }; + D7093C77219EE26400723F17 /* RestClientChannel.swift in Sources */ = {isa = PBXBuildFile; fileRef = D746AE2A1BBB625E003ECEF8 /* RestClientChannel.swift */; }; + D7093C78219EE26400723F17 /* RestClientChannels.swift in Sources */ = {isa = PBXBuildFile; fileRef = D746AE2B1BBB625E003ECEF8 /* RestClientChannels.swift */; }; + D7093C79219EE26400723F17 /* RestClientPresence.swift in Sources */ = {isa = PBXBuildFile; fileRef = D72768201C9C19040022F8B2 /* RestClientPresence.swift */; }; + D7093C7A219EE26400723F17 /* RestPaginated.swift in Sources */ = {isa = PBXBuildFile; fileRef = D74CBC09212EC02C00D090E4 /* RestPaginated.swift */; }; + D7093C7B219EE26400723F17 /* RealtimeClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = D723046F1BB72CED00F1ABDA /* RealtimeClient.swift */; }; + D7093C7C219EE26400723F17 /* RealtimeClientConnection.swift in Sources */ = {isa = PBXBuildFile; fileRef = D7EBE5A21BE8391E0086E675 /* RealtimeClientConnection.swift */; }; + D7093C7D219EE26400723F17 /* RealtimeClientChannel.swift in Sources */ = {isa = PBXBuildFile; fileRef = D74EFAEA1C4D09B500CFF98E /* RealtimeClientChannel.swift */; }; + D7093C7E219EE26400723F17 /* RealtimeClientChannels.swift in Sources */ = {isa = PBXBuildFile; fileRef = D71D30031C5F7B2F002115B0 /* RealtimeClientChannels.swift */; }; + D7093C7F219EE26400723F17 /* RealtimeClientPresence.swift in Sources */ = {isa = PBXBuildFile; fileRef = D7CEF1311C8DD3BC004FB242 /* RealtimeClientPresence.swift */; }; + D7093C80219EE26400723F17 /* Stats.swift in Sources */ = {isa = PBXBuildFile; fileRef = 851674EE1B7BA5CD00D35169 /* Stats.swift */; }; + D7093C81219EE26400723F17 /* Utilities.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB1AE0CD1C5C3A4900D62250 /* Utilities.swift */; }; + D7093C82219EE26400723F17 /* Crypto.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB7913A71C6E54C3000ABF9B /* Crypto.swift */; }; + D7093C87219EE28100723F17 /* ably-common in Resources */ = {isa = PBXBuildFile; fileRef = 856AAC9A1B6E326E00B07119 /* ably-common */; }; + D7093C8B219EE3C900723F17 /* Quick.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D7093C88219EE3C900723F17 /* Quick.framework */; }; + D7093C8C219EE3C900723F17 /* Nimble.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D7093C89219EE3C900723F17 /* Nimble.framework */; }; + D7093C8D219EE3C900723F17 /* SwiftyJSON.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D7093C8A219EE3C900723F17 /* SwiftyJSON.framework */; }; + D7093C92219EE3E800723F17 /* Nimble.framework in Copy Carthage Frameworks to Test bundle */ = {isa = PBXBuildFile; fileRef = D7093C89219EE3C900723F17 /* Nimble.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + D7093C93219EE3E800723F17 /* Quick.framework in Copy Carthage Frameworks to Test bundle */ = {isa = PBXBuildFile; fileRef = D7093C88219EE3C900723F17 /* Quick.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + D7093C94219EE3E800723F17 /* SwiftyJSON.framework in Copy Carthage Frameworks to Test bundle */ = {isa = PBXBuildFile; fileRef = D7093C8A219EE3C900723F17 /* SwiftyJSON.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + D7093C98219EE3E800723F17 /* msgpack.framework in Copy Carthage Frameworks to Test bundle */ = {isa = PBXBuildFile; fileRef = D710D6B82194A1FD008F54AD /* msgpack.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + D7093C9A219EE3E800723F17 /* KSCrash.framework in Copy Carthage Frameworks to Test bundle */ = {isa = PBXBuildFile; fileRef = D710D6AF2194A0B2008F54AD /* KSCrash.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + D7093C9B219EE3E800723F17 /* SAMKeychain.framework in Copy Carthage Frameworks to Test bundle */ = {isa = PBXBuildFile; fileRef = D710D6AE2194A0B2008F54AD /* SAMKeychain.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + D7093C9C219EE3E800723F17 /* SocketRocket.framework in Copy Carthage Frameworks to Test bundle */ = {isa = PBXBuildFile; fileRef = D710D6AC2194A0B1008F54AD /* SocketRocket.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + D7093C9D219EE3E800723F17 /* ULID.framework in Copy Carthage Frameworks to Test bundle */ = {isa = PBXBuildFile; fileRef = D710D6AD2194A0B2008F54AD /* ULID.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + D7093CA9219EFA8A00723F17 /* MockDeviceStorage.swift in Sources */ = {isa = PBXBuildFile; fileRef = D7093CA8219EFA8A00723F17 /* MockDeviceStorage.swift */; }; D70EAAED1BC3376200CD8B9E /* ARTRestChannel.h in Headers */ = {isa = PBXBuildFile; fileRef = D70EAAEB1BC3376200CD8B9E /* ARTRestChannel.h */; settings = {ATTRIBUTES = (Public, ); }; }; D70EAAEE1BC3376200CD8B9E /* ARTRestChannel.m in Sources */ = {isa = PBXBuildFile; fileRef = D70EAAEC1BC3376200CD8B9E /* ARTRestChannel.m */; }; D70EECAC1FEAF331008A50CD /* ARTPendingMessage.h in Headers */ = {isa = PBXBuildFile; fileRef = D70EECAA1FEAF331008A50CD /* ARTPendingMessage.h */; settings = {ATTRIBUTES = (Public, ); }; }; D70EECAD1FEAF331008A50CD /* ARTPendingMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = D70EECAB1FEAF331008A50CD /* ARTPendingMessage.m */; }; + D710D47D21949A27008F54AD /* Ably.h in Headers */ = {isa = PBXBuildFile; fileRef = D7534C311D79E5C20054C182 /* Ably.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D47F21949A28008F54AD /* Ably.h in Headers */ = {isa = PBXBuildFile; fileRef = D7534C311D79E5C20054C182 /* Ably.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D48021949A42008F54AD /* ARTDefault.h in Headers */ = {isa = PBXBuildFile; fileRef = 1CD8DC9D1B1C7315007EAF36 /* ARTDefault.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D48221949A43008F54AD /* ARTDefault.h in Headers */ = {isa = PBXBuildFile; fileRef = 1CD8DC9D1B1C7315007EAF36 /* ARTDefault.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D48321949A4E008F54AD /* ARTDefault+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = D7DC8AF01C6A9FFC005AF165 /* ARTDefault+Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; + D710D48521949A4F008F54AD /* ARTDefault+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = D7DC8AF01C6A9FFC005AF165 /* ARTDefault+Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; + D710D48621949A5B008F54AD /* ARTDefault.m in Sources */ = {isa = PBXBuildFile; fileRef = 1CD8DC9E1B1C7315007EAF36 /* ARTDefault.m */; }; + D710D48821949A5C008F54AD /* ARTDefault.m in Sources */ = {isa = PBXBuildFile; fileRef = 1CD8DC9E1B1C7315007EAF36 /* ARTDefault.m */; }; + D710D48921949A85008F54AD /* ARTConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = D74CBC0C212F076000D090E4 /* ARTConstants.h */; settings = {ATTRIBUTES = (Private, ); }; }; + D710D48B21949A86008F54AD /* ARTConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = D74CBC0C212F076000D090E4 /* ARTConstants.h */; settings = {ATTRIBUTES = (Private, ); }; }; + D710D48C21949A97008F54AD /* ARTConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = D74CBC0D212F076000D090E4 /* ARTConstants.m */; }; + D710D48E21949A98008F54AD /* ARTConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = D74CBC0D212F076000D090E4 /* ARTConstants.m */; }; + D710D48F21949AAE008F54AD /* ARTRest.h in Headers */ = {isa = PBXBuildFile; fileRef = 96BF61511A35B39C004CF2B3 /* ARTRest.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D49121949AAF008F54AD /* ARTRest.h in Headers */ = {isa = PBXBuildFile; fileRef = 96BF61511A35B39C004CF2B3 /* ARTRest.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D49221949AB7008F54AD /* ARTRest+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 960D07951A46FFC300ED8C8C /* ARTRest+Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; + D710D49421949AB8008F54AD /* ARTRest+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 960D07951A46FFC300ED8C8C /* ARTRest+Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; + D710D49521949AC2008F54AD /* ARTRest.m in Sources */ = {isa = PBXBuildFile; fileRef = 96BF61521A35B39C004CF2B3 /* ARTRest.m */; }; + D710D49721949AC3008F54AD /* ARTRest.m in Sources */ = {isa = PBXBuildFile; fileRef = 96BF61521A35B39C004CF2B3 /* ARTRest.m */; }; + D710D49821949ACA008F54AD /* ARTRestChannel.m in Sources */ = {isa = PBXBuildFile; fileRef = D70EAAEC1BC3376200CD8B9E /* ARTRestChannel.m */; }; + D710D49921949ACA008F54AD /* ARTAuth.m in Sources */ = {isa = PBXBuildFile; fileRef = 96BF616F1A35FB7C004CF2B3 /* ARTAuth.m */; }; + D710D49A21949ACA008F54AD /* ARTRestPresence.m in Sources */ = {isa = PBXBuildFile; fileRef = D7F1D3721BF4DE07001A4B5E /* ARTRestPresence.m */; }; + D710D49B21949ACA008F54AD /* ARTRestChannels.m in Sources */ = {isa = PBXBuildFile; fileRef = EB89D4031C61C1A4007FA5B7 /* ARTRestChannels.m */; }; + D710D49C21949ACA008F54AD /* ARTNSMutableRequest+ARTRest.m in Sources */ = {isa = PBXBuildFile; fileRef = D7E0FEB7211DE94700659FAA /* ARTNSMutableRequest+ARTRest.m */; }; + D710D4A221949ACB008F54AD /* ARTRestChannel.m in Sources */ = {isa = PBXBuildFile; fileRef = D70EAAEC1BC3376200CD8B9E /* ARTRestChannel.m */; }; + D710D4A321949ACB008F54AD /* ARTAuth.m in Sources */ = {isa = PBXBuildFile; fileRef = 96BF616F1A35FB7C004CF2B3 /* ARTAuth.m */; }; + D710D4A421949ACB008F54AD /* ARTRestPresence.m in Sources */ = {isa = PBXBuildFile; fileRef = D7F1D3721BF4DE07001A4B5E /* ARTRestPresence.m */; }; + D710D4A521949ACB008F54AD /* ARTRestChannels.m in Sources */ = {isa = PBXBuildFile; fileRef = EB89D4031C61C1A4007FA5B7 /* ARTRestChannels.m */; }; + D710D4A621949ACB008F54AD /* ARTNSMutableRequest+ARTRest.m in Sources */ = {isa = PBXBuildFile; fileRef = D7E0FEB7211DE94700659FAA /* ARTNSMutableRequest+ARTRest.m */; }; + D710D4A721949ADF008F54AD /* ARTRestChannel.h in Headers */ = {isa = PBXBuildFile; fileRef = D70EAAEB1BC3376200CD8B9E /* ARTRestChannel.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D4A821949ADF008F54AD /* ARTRestPresence.h in Headers */ = {isa = PBXBuildFile; fileRef = D7F1D3711BF4DE07001A4B5E /* ARTRestPresence.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D4A921949ADF008F54AD /* ARTRestChannels.h in Headers */ = {isa = PBXBuildFile; fileRef = EB89D4021C61C1A4007FA5B7 /* ARTRestChannels.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D4AD21949AE0008F54AD /* ARTRestChannel.h in Headers */ = {isa = PBXBuildFile; fileRef = D70EAAEB1BC3376200CD8B9E /* ARTRestChannel.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D4AE21949AE0008F54AD /* ARTRestPresence.h in Headers */ = {isa = PBXBuildFile; fileRef = D7F1D3711BF4DE07001A4B5E /* ARTRestPresence.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D4AF21949AE0008F54AD /* ARTRestChannels.h in Headers */ = {isa = PBXBuildFile; fileRef = EB89D4021C61C1A4007FA5B7 /* ARTRestChannels.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D4B021949AF8008F54AD /* ARTAuth.h in Headers */ = {isa = PBXBuildFile; fileRef = 96BF616E1A35FB7C004CF2B3 /* ARTAuth.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D4B221949AF9008F54AD /* ARTAuth.h in Headers */ = {isa = PBXBuildFile; fileRef = 96BF616E1A35FB7C004CF2B3 /* ARTAuth.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D4B321949B47008F54AD /* ARTRestChannel+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = D7F1D3791BF4E33A001A4B5E /* ARTRestChannel+Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; + D710D4B421949B47008F54AD /* ARTAuth+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = D7C1B8781BBF5F460087B55F /* ARTAuth+Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; + D710D4B521949B47008F54AD /* ARTRestPresence+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = EB7617701CB6C18C00D0981E /* ARTRestPresence+Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; + D710D4B921949B48008F54AD /* ARTRestChannel+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = D7F1D3791BF4E33A001A4B5E /* ARTRestChannel+Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; + D710D4BA21949B48008F54AD /* ARTAuth+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = D7C1B8781BBF5F460087B55F /* ARTAuth+Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; + D710D4BB21949B48008F54AD /* ARTRestPresence+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = EB7617701CB6C18C00D0981E /* ARTRestPresence+Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; + D710D4BC21949B59008F54AD /* ARTRestChannels+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = EB4B1A0B1F2190BB00467F07 /* ARTRestChannels+Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; + D710D4BE21949B5A008F54AD /* ARTRestChannels+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = EB4B1A0B1F2190BB00467F07 /* ARTRestChannels+Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; + D710D4BF21949B6C008F54AD /* ARTNSMutableRequest+ARTRest.h in Headers */ = {isa = PBXBuildFile; fileRef = D7E0FEB6211DE94700659FAA /* ARTNSMutableRequest+ARTRest.h */; settings = {ATTRIBUTES = (Private, ); }; }; + D710D4C121949B6D008F54AD /* ARTNSMutableRequest+ARTRest.h in Headers */ = {isa = PBXBuildFile; fileRef = D7E0FEB6211DE94700659FAA /* ARTNSMutableRequest+ARTRest.h */; settings = {ATTRIBUTES = (Private, ); }; }; + D710D4C221949B9C008F54AD /* ARTRealtimeTransport.h in Headers */ = {isa = PBXBuildFile; fileRef = 96E4083D1A3892C700087F77 /* ARTRealtimeTransport.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D4C321949B9C008F54AD /* ARTWebSocketTransport.h in Headers */ = {isa = PBXBuildFile; fileRef = 96E408451A3895E800087F77 /* ARTWebSocketTransport.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D4C621949B9D008F54AD /* ARTRealtimeTransport.h in Headers */ = {isa = PBXBuildFile; fileRef = 96E4083D1A3892C700087F77 /* ARTRealtimeTransport.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D4C721949B9D008F54AD /* ARTWebSocketTransport.h in Headers */ = {isa = PBXBuildFile; fileRef = 96E408451A3895E800087F77 /* ARTWebSocketTransport.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D4C821949BAA008F54AD /* ARTRealtimeTransport.m in Sources */ = {isa = PBXBuildFile; fileRef = EB2D5A901CC941A700AD1A67 /* ARTRealtimeTransport.m */; }; + D710D4C921949BAA008F54AD /* ARTWebSocketTransport.m in Sources */ = {isa = PBXBuildFile; fileRef = 96E408461A3895E800087F77 /* ARTWebSocketTransport.m */; }; + D710D4CC21949BAB008F54AD /* ARTRealtimeTransport.m in Sources */ = {isa = PBXBuildFile; fileRef = EB2D5A901CC941A700AD1A67 /* ARTRealtimeTransport.m */; }; + D710D4CD21949BAB008F54AD /* ARTWebSocketTransport.m in Sources */ = {isa = PBXBuildFile; fileRef = 96E408461A3895E800087F77 /* ARTWebSocketTransport.m */; }; + D710D4CE21949BB2008F54AD /* ARTWebSocketTransport+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = D714A63F1C75F0C5002F2CA0 /* ARTWebSocketTransport+Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; + D710D4D021949BB3008F54AD /* ARTWebSocketTransport+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = D714A63F1C75F0C5002F2CA0 /* ARTWebSocketTransport+Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; + D710D4D121949BC0008F54AD /* ARTPresence+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = EB20F8D61C653F1E00EF3978 /* ARTPresence+Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; + D710D4D321949BC1008F54AD /* ARTPresence+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = EB20F8D61C653F1E00EF3978 /* ARTPresence+Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; + D710D4D421949BF9008F54AD /* ARTRealtime.h in Headers */ = {isa = PBXBuildFile; fileRef = 96A507BB1A3791490077CDF8 /* ARTRealtime.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D4D521949BF9008F54AD /* ARTRealtimeChannel.h in Headers */ = {isa = PBXBuildFile; fileRef = D746AE3A1BBC5AE1003ECEF8 /* ARTRealtimeChannel.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D4D621949BF9008F54AD /* ARTConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = D7D29B401BE3DD0600374295 /* ARTConnection.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D4D721949BF9008F54AD /* ARTConnectionDetails.h in Headers */ = {isa = PBXBuildFile; fileRef = D7B17EE11C07208B00A6958E /* ARTConnectionDetails.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D4D821949BF9008F54AD /* ARTRealtimePresence.h in Headers */ = {isa = PBXBuildFile; fileRef = D7F1D3751BF4DE72001A4B5E /* ARTRealtimePresence.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D4D921949BF9008F54AD /* ARTQueuedMessage.h in Headers */ = {isa = PBXBuildFile; fileRef = D746AE451BBD6FE9003ECEF8 /* ARTQueuedMessage.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D4DA21949BF9008F54AD /* ARTPendingMessage.h in Headers */ = {isa = PBXBuildFile; fileRef = D70EECAA1FEAF331008A50CD /* ARTPendingMessage.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D4DB21949BF9008F54AD /* ARTRealtimeChannels.h in Headers */ = {isa = PBXBuildFile; fileRef = EB89D4081C61C5ED007FA5B7 /* ARTRealtimeChannels.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D4E421949BFB008F54AD /* ARTRealtime.h in Headers */ = {isa = PBXBuildFile; fileRef = 96A507BB1A3791490077CDF8 /* ARTRealtime.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D4E521949BFB008F54AD /* ARTRealtimeChannel.h in Headers */ = {isa = PBXBuildFile; fileRef = D746AE3A1BBC5AE1003ECEF8 /* ARTRealtimeChannel.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D4E621949BFB008F54AD /* ARTConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = D7D29B401BE3DD0600374295 /* ARTConnection.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D4E721949BFB008F54AD /* ARTConnectionDetails.h in Headers */ = {isa = PBXBuildFile; fileRef = D7B17EE11C07208B00A6958E /* ARTConnectionDetails.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D4E821949BFB008F54AD /* ARTRealtimePresence.h in Headers */ = {isa = PBXBuildFile; fileRef = D7F1D3751BF4DE72001A4B5E /* ARTRealtimePresence.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D4E921949BFB008F54AD /* ARTQueuedMessage.h in Headers */ = {isa = PBXBuildFile; fileRef = D746AE451BBD6FE9003ECEF8 /* ARTQueuedMessage.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D4EA21949BFB008F54AD /* ARTPendingMessage.h in Headers */ = {isa = PBXBuildFile; fileRef = D70EECAA1FEAF331008A50CD /* ARTPendingMessage.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D4EB21949BFB008F54AD /* ARTRealtimeChannels.h in Headers */ = {isa = PBXBuildFile; fileRef = EB89D4081C61C5ED007FA5B7 /* ARTRealtimeChannels.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D4EC21949C0D008F54AD /* ARTRealtime.m in Sources */ = {isa = PBXBuildFile; fileRef = 96A507BC1A3791490077CDF8 /* ARTRealtime.m */; }; + D710D4ED21949C0D008F54AD /* ARTRealtimeChannel.m in Sources */ = {isa = PBXBuildFile; fileRef = D746AE3B1BBC5AE1003ECEF8 /* ARTRealtimeChannel.m */; }; + D710D4EE21949C0D008F54AD /* ARTConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = D7D29B411BE3DEB300374295 /* ARTConnection.m */; }; + D710D4EF21949C0D008F54AD /* ARTConnectionDetails.m in Sources */ = {isa = PBXBuildFile; fileRef = D7B17EE21C07208B00A6958E /* ARTConnectionDetails.m */; }; + D710D4F021949C0D008F54AD /* ARTRealtimePresence.m in Sources */ = {isa = PBXBuildFile; fileRef = D7F1D3761BF4DE72001A4B5E /* ARTRealtimePresence.m */; }; + D710D4F121949C0D008F54AD /* ARTQueuedMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = D746AE461BBD6FE9003ECEF8 /* ARTQueuedMessage.m */; }; + D710D4F221949C0D008F54AD /* ARTPendingMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = D70EECAB1FEAF331008A50CD /* ARTPendingMessage.m */; }; + D710D4F321949C0D008F54AD /* ARTRealtimeChannels.m in Sources */ = {isa = PBXBuildFile; fileRef = EB89D40A1C61C6EA007FA5B7 /* ARTRealtimeChannels.m */; }; + D710D4FC21949C0E008F54AD /* ARTRealtime.m in Sources */ = {isa = PBXBuildFile; fileRef = 96A507BC1A3791490077CDF8 /* ARTRealtime.m */; }; + D710D4FD21949C0E008F54AD /* ARTRealtimeChannel.m in Sources */ = {isa = PBXBuildFile; fileRef = D746AE3B1BBC5AE1003ECEF8 /* ARTRealtimeChannel.m */; }; + D710D4FE21949C0E008F54AD /* ARTConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = D7D29B411BE3DEB300374295 /* ARTConnection.m */; }; + D710D4FF21949C0E008F54AD /* ARTConnectionDetails.m in Sources */ = {isa = PBXBuildFile; fileRef = D7B17EE21C07208B00A6958E /* ARTConnectionDetails.m */; }; + D710D50021949C0E008F54AD /* ARTRealtimePresence.m in Sources */ = {isa = PBXBuildFile; fileRef = D7F1D3761BF4DE72001A4B5E /* ARTRealtimePresence.m */; }; + D710D50121949C0E008F54AD /* ARTQueuedMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = D746AE461BBD6FE9003ECEF8 /* ARTQueuedMessage.m */; }; + D710D50221949C0E008F54AD /* ARTPendingMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = D70EECAB1FEAF331008A50CD /* ARTPendingMessage.m */; }; + D710D50321949C0E008F54AD /* ARTRealtimeChannels.m in Sources */ = {isa = PBXBuildFile; fileRef = EB89D40A1C61C6EA007FA5B7 /* ARTRealtimeChannels.m */; }; + D710D50421949C18008F54AD /* ARTRealtime+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C05CF1E1AC1D7EB00687AC9 /* ARTRealtime+Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; + D710D50521949C18008F54AD /* ARTRealtimeChannel+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = D746AE421BBC5CD0003ECEF8 /* ARTRealtimeChannel+Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; + D710D50621949C18008F54AD /* ARTConnection+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = EB89D40E1C62303E007FA5B7 /* ARTConnection+Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; + D710D50721949C18008F54AD /* ARTConnectionDetails+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = D7D5A69B1CA40C350071BD6D /* ARTConnectionDetails+Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; + D710D50821949C18008F54AD /* ARTRealtimePresence+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = EB7617711CB6CBFE00D0981E /* ARTRealtimePresence+Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; + D710D50921949C18008F54AD /* ARTRealtimeChannels+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = D7CEF12C1C8D821D004FB242 /* ARTRealtimeChannels+Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; + D710D51021949C19008F54AD /* ARTRealtime+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C05CF1E1AC1D7EB00687AC9 /* ARTRealtime+Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; + D710D51121949C19008F54AD /* ARTRealtimeChannel+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = D746AE421BBC5CD0003ECEF8 /* ARTRealtimeChannel+Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; + D710D51221949C19008F54AD /* ARTConnection+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = EB89D40E1C62303E007FA5B7 /* ARTConnection+Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; + D710D51321949C19008F54AD /* ARTConnectionDetails+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = D7D5A69B1CA40C350071BD6D /* ARTConnectionDetails+Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; + D710D51421949C19008F54AD /* ARTRealtimePresence+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = EB7617711CB6CBFE00D0981E /* ARTRealtimePresence+Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; + D710D51521949C19008F54AD /* ARTRealtimeChannels+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = D7CEF12C1C8D821D004FB242 /* ARTRealtimeChannels+Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; + D710D51621949C42008F54AD /* ARTPush.h in Headers */ = {isa = PBXBuildFile; fileRef = D7B6218E1E4A6E0200684474 /* ARTPush.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D51721949C42008F54AD /* ARTPushChannel.h in Headers */ = {isa = PBXBuildFile; fileRef = D7B621961E4A762A00684474 /* ARTPushChannel.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D51821949C42008F54AD /* ARTPushChannelSubscription.h in Headers */ = {isa = PBXBuildFile; fileRef = D785C4271E549E33008FEC05 /* ARTPushChannelSubscription.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D51921949C42008F54AD /* ARTDeviceDetails.h in Headers */ = {isa = PBXBuildFile; fileRef = D7B621921E4A6FE600684474 /* ARTDeviceDetails.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D51A21949C42008F54AD /* ARTDevicePushDetails.h in Headers */ = {isa = PBXBuildFile; fileRef = D768C6AA1E4B5B0200436011 /* ARTDevicePushDetails.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D51B21949C42008F54AD /* ARTDeviceIdentityTokenDetails.h in Headers */ = {isa = PBXBuildFile; fileRef = D777EEDE206285CF002EBA03 /* ARTDeviceIdentityTokenDetails.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D51C21949C42008F54AD /* ARTLocalDevice.h in Headers */ = {isa = PBXBuildFile; fileRef = D7DEAFCF1E65926D00D23F24 /* ARTLocalDevice.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D51D21949C42008F54AD /* ARTDeviceStorage.h in Headers */ = {isa = PBXBuildFile; fileRef = D75F49C2205ACFEC003DE04F /* ARTDeviceStorage.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D51E21949C42008F54AD /* ARTLocalDeviceStorage.h in Headers */ = {isa = PBXBuildFile; fileRef = D7DF73881EA645300013CD36 /* ARTLocalDeviceStorage.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D52821949C44008F54AD /* ARTPush.h in Headers */ = {isa = PBXBuildFile; fileRef = D7B6218E1E4A6E0200684474 /* ARTPush.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D52921949C44008F54AD /* ARTPushChannel.h in Headers */ = {isa = PBXBuildFile; fileRef = D7B621961E4A762A00684474 /* ARTPushChannel.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D52A21949C44008F54AD /* ARTPushChannelSubscription.h in Headers */ = {isa = PBXBuildFile; fileRef = D785C4271E549E33008FEC05 /* ARTPushChannelSubscription.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D52B21949C44008F54AD /* ARTDeviceDetails.h in Headers */ = {isa = PBXBuildFile; fileRef = D7B621921E4A6FE600684474 /* ARTDeviceDetails.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D52C21949C44008F54AD /* ARTDevicePushDetails.h in Headers */ = {isa = PBXBuildFile; fileRef = D768C6AA1E4B5B0200436011 /* ARTDevicePushDetails.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D52D21949C44008F54AD /* ARTDeviceIdentityTokenDetails.h in Headers */ = {isa = PBXBuildFile; fileRef = D777EEDE206285CF002EBA03 /* ARTDeviceIdentityTokenDetails.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D52E21949C44008F54AD /* ARTLocalDevice.h in Headers */ = {isa = PBXBuildFile; fileRef = D7DEAFCF1E65926D00D23F24 /* ARTLocalDevice.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D52F21949C44008F54AD /* ARTDeviceStorage.h in Headers */ = {isa = PBXBuildFile; fileRef = D75F49C2205ACFEC003DE04F /* ARTDeviceStorage.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D53021949C44008F54AD /* ARTLocalDeviceStorage.h in Headers */ = {isa = PBXBuildFile; fileRef = D7DF73881EA645300013CD36 /* ARTLocalDeviceStorage.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D53121949C54008F54AD /* ARTPush.m in Sources */ = {isa = PBXBuildFile; fileRef = D7B6218F1E4A6E0200684474 /* ARTPush.m */; }; + D710D53221949C54008F54AD /* ARTPushChannel.m in Sources */ = {isa = PBXBuildFile; fileRef = D7B621971E4A762A00684474 /* ARTPushChannel.m */; }; + D710D53321949C54008F54AD /* ARTPushChannelSubscription.m in Sources */ = {isa = PBXBuildFile; fileRef = D785C4281E549E33008FEC05 /* ARTPushChannelSubscription.m */; }; + D710D53421949C54008F54AD /* ARTDeviceDetails.m in Sources */ = {isa = PBXBuildFile; fileRef = D7B621931E4A6FE600684474 /* ARTDeviceDetails.m */; }; + D710D53521949C54008F54AD /* ARTDevicePushDetails.m in Sources */ = {isa = PBXBuildFile; fileRef = D768C6AB1E4B5B0200436011 /* ARTDevicePushDetails.m */; }; + D710D53621949C54008F54AD /* ARTDeviceIdentityTokenDetails.m in Sources */ = {isa = PBXBuildFile; fileRef = D777EEDF206285CF002EBA03 /* ARTDeviceIdentityTokenDetails.m */; }; + D710D53721949C54008F54AD /* ARTLocalDevice.m in Sources */ = {isa = PBXBuildFile; fileRef = D7DEAFD01E65926D00D23F24 /* ARTLocalDevice.m */; }; + D710D53821949C54008F54AD /* ARTLocalDeviceStorage.m in Sources */ = {isa = PBXBuildFile; fileRef = D7DF73891EA645300013CD36 /* ARTLocalDeviceStorage.m */; }; + D710D53921949C54008F54AD /* ARTNSMutableRequest+ARTPush.m in Sources */ = {isa = PBXBuildFile; fileRef = D777EEE32063A64E002EBA03 /* ARTNSMutableRequest+ARTPush.m */; }; + D710D54321949C55008F54AD /* ARTPush.m in Sources */ = {isa = PBXBuildFile; fileRef = D7B6218F1E4A6E0200684474 /* ARTPush.m */; }; + D710D54421949C55008F54AD /* ARTPushChannel.m in Sources */ = {isa = PBXBuildFile; fileRef = D7B621971E4A762A00684474 /* ARTPushChannel.m */; }; + D710D54521949C55008F54AD /* ARTPushChannelSubscription.m in Sources */ = {isa = PBXBuildFile; fileRef = D785C4281E549E33008FEC05 /* ARTPushChannelSubscription.m */; }; + D710D54621949C55008F54AD /* ARTDeviceDetails.m in Sources */ = {isa = PBXBuildFile; fileRef = D7B621931E4A6FE600684474 /* ARTDeviceDetails.m */; }; + D710D54721949C55008F54AD /* ARTDevicePushDetails.m in Sources */ = {isa = PBXBuildFile; fileRef = D768C6AB1E4B5B0200436011 /* ARTDevicePushDetails.m */; }; + D710D54821949C55008F54AD /* ARTDeviceIdentityTokenDetails.m in Sources */ = {isa = PBXBuildFile; fileRef = D777EEDF206285CF002EBA03 /* ARTDeviceIdentityTokenDetails.m */; }; + D710D54921949C55008F54AD /* ARTLocalDevice.m in Sources */ = {isa = PBXBuildFile; fileRef = D7DEAFD01E65926D00D23F24 /* ARTLocalDevice.m */; }; + D710D54A21949C55008F54AD /* ARTLocalDeviceStorage.m in Sources */ = {isa = PBXBuildFile; fileRef = D7DF73891EA645300013CD36 /* ARTLocalDeviceStorage.m */; }; + D710D54B21949C55008F54AD /* ARTNSMutableRequest+ARTPush.m in Sources */ = {isa = PBXBuildFile; fileRef = D777EEE32063A64E002EBA03 /* ARTNSMutableRequest+ARTPush.m */; }; + D710D54C21949C66008F54AD /* ARTPush+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = EBFFAC1C1E97FB23003E7326 /* ARTPush+Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; + D710D54D21949C66008F54AD /* ARTLocalDevice+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = EBFFAC181E97919C003E7326 /* ARTLocalDevice+Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; + D710D54E21949C66008F54AD /* ARTNSMutableRequest+ARTPush.h in Headers */ = {isa = PBXBuildFile; fileRef = D777EEE22063A64E002EBA03 /* ARTNSMutableRequest+ARTPush.h */; settings = {ATTRIBUTES = (Private, ); }; }; + D710D55221949C67008F54AD /* ARTPush+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = EBFFAC1C1E97FB23003E7326 /* ARTPush+Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; + D710D55321949C67008F54AD /* ARTLocalDevice+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = EBFFAC181E97919C003E7326 /* ARTLocalDevice+Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; + D710D55421949C67008F54AD /* ARTNSMutableRequest+ARTPush.h in Headers */ = {isa = PBXBuildFile; fileRef = D777EEE22063A64E002EBA03 /* ARTNSMutableRequest+ARTPush.h */; settings = {ATTRIBUTES = (Private, ); }; }; + D710D55521949C8C008F54AD /* ARTPushActivationStateMachine.h in Headers */ = {isa = PBXBuildFile; fileRef = D71966E21E5DF360000974DD /* ARTPushActivationStateMachine.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D55621949C8C008F54AD /* ARTPushActivationState.h in Headers */ = {isa = PBXBuildFile; fileRef = D71966E81E5E006E000974DD /* ARTPushActivationState.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D55721949C8C008F54AD /* ARTPushActivationEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = D71966EC1E5E0081000974DD /* ARTPushActivationEvent.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D55B21949C8D008F54AD /* ARTPushActivationStateMachine.h in Headers */ = {isa = PBXBuildFile; fileRef = D71966E21E5DF360000974DD /* ARTPushActivationStateMachine.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D55C21949C8D008F54AD /* ARTPushActivationState.h in Headers */ = {isa = PBXBuildFile; fileRef = D71966E81E5E006E000974DD /* ARTPushActivationState.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D55D21949C8D008F54AD /* ARTPushActivationEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = D71966EC1E5E0081000974DD /* ARTPushActivationEvent.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D55E21949C97008F54AD /* ARTPushActivationStateMachine.m in Sources */ = {isa = PBXBuildFile; fileRef = D71966E31E5DF360000974DD /* ARTPushActivationStateMachine.m */; }; + D710D55F21949C97008F54AD /* ARTPushActivationState.m in Sources */ = {isa = PBXBuildFile; fileRef = D71966E91E5E006E000974DD /* ARTPushActivationState.m */; }; + D710D56021949C97008F54AD /* ARTPushActivationEvent.m in Sources */ = {isa = PBXBuildFile; fileRef = D71966ED1E5E0081000974DD /* ARTPushActivationEvent.m */; }; + D710D56421949C98008F54AD /* ARTPushActivationStateMachine.m in Sources */ = {isa = PBXBuildFile; fileRef = D71966E31E5DF360000974DD /* ARTPushActivationStateMachine.m */; }; + D710D56521949C98008F54AD /* ARTPushActivationState.m in Sources */ = {isa = PBXBuildFile; fileRef = D71966E91E5E006E000974DD /* ARTPushActivationState.m */; }; + D710D56621949C98008F54AD /* ARTPushActivationEvent.m in Sources */ = {isa = PBXBuildFile; fileRef = D71966ED1E5E0081000974DD /* ARTPushActivationEvent.m */; }; + D710D56721949CA1008F54AD /* ARTPushActivationStateMachine+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = D72C67DE201AB74000978EBB /* ARTPushActivationStateMachine+Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; + D710D56921949CA2008F54AD /* ARTPushActivationStateMachine+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = D72C67DE201AB74000978EBB /* ARTPushActivationStateMachine+Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; + D710D56A21949CB9008F54AD /* ARTPushAdmin.h in Headers */ = {isa = PBXBuildFile; fileRef = D7AE18C71E5B40C900478D82 /* ARTPushAdmin.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D56B21949CB9008F54AD /* ARTPushDeviceRegistrations.h in Headers */ = {isa = PBXBuildFile; fileRef = D7AE18CC1E5B40FE00478D82 /* ARTPushDeviceRegistrations.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D56C21949CB9008F54AD /* ARTPushChannelSubscriptions.h in Headers */ = {isa = PBXBuildFile; fileRef = D7AE18D01E5B410F00478D82 /* ARTPushChannelSubscriptions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D57021949CBA008F54AD /* ARTPushAdmin.h in Headers */ = {isa = PBXBuildFile; fileRef = D7AE18C71E5B40C900478D82 /* ARTPushAdmin.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D57121949CBA008F54AD /* ARTPushDeviceRegistrations.h in Headers */ = {isa = PBXBuildFile; fileRef = D7AE18CC1E5B40FE00478D82 /* ARTPushDeviceRegistrations.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D57221949CBA008F54AD /* ARTPushChannelSubscriptions.h in Headers */ = {isa = PBXBuildFile; fileRef = D7AE18D01E5B410F00478D82 /* ARTPushChannelSubscriptions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D57321949CC4008F54AD /* ARTPushAdmin.m in Sources */ = {isa = PBXBuildFile; fileRef = D7AE18C81E5B40C900478D82 /* ARTPushAdmin.m */; }; + D710D57421949CC4008F54AD /* ARTPushDeviceRegistrations.m in Sources */ = {isa = PBXBuildFile; fileRef = D7AE18CD1E5B40FE00478D82 /* ARTPushDeviceRegistrations.m */; }; + D710D57521949CC4008F54AD /* ARTPushChannelSubscriptions.m in Sources */ = {isa = PBXBuildFile; fileRef = D7AE18D11E5B410F00478D82 /* ARTPushChannelSubscriptions.m */; }; + D710D57921949CC5008F54AD /* ARTPushAdmin.m in Sources */ = {isa = PBXBuildFile; fileRef = D7AE18C81E5B40C900478D82 /* ARTPushAdmin.m */; }; + D710D57A21949CC5008F54AD /* ARTPushDeviceRegistrations.m in Sources */ = {isa = PBXBuildFile; fileRef = D7AE18CD1E5B40FE00478D82 /* ARTPushDeviceRegistrations.m */; }; + D710D57B21949CC5008F54AD /* ARTPushChannelSubscriptions.m in Sources */ = {isa = PBXBuildFile; fileRef = D7AE18D11E5B410F00478D82 /* ARTPushChannelSubscriptions.m */; }; + D710D57C21949CC8008F54AD /* ARTPushAdmin+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = EBFFAC1A1E97EF5C003E7326 /* ARTPushAdmin+Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; + D710D57E21949CC9008F54AD /* ARTPushAdmin+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = EBFFAC1A1E97EF5C003E7326 /* ARTPushAdmin+Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; + D710D57F21949D28008F54AD /* ARTAuthOptions.h in Headers */ = {isa = PBXBuildFile; fileRef = D7D8F81F1BC2BE15009718F2 /* ARTAuthOptions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D58021949D28008F54AD /* ARTAuthDetails.h in Headers */ = {isa = PBXBuildFile; fileRef = D73691FD1DB788C40062C150 /* ARTAuthDetails.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D58121949D28008F54AD /* ARTTokenRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = D7D8F8271BC2C706009718F2 /* ARTTokenRequest.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D58221949D28008F54AD /* ARTTokenParams.h in Headers */ = {isa = PBXBuildFile; fileRef = D7D8F8291BC2C706009718F2 /* ARTTokenParams.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D58321949D28008F54AD /* ARTTokenDetails.h in Headers */ = {isa = PBXBuildFile; fileRef = D7D8F8231BC2C691009718F2 /* ARTTokenDetails.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D58421949D28008F54AD /* ARTClientOptions.h in Headers */ = {isa = PBXBuildFile; fileRef = 961343D61A42E0B7006DC822 /* ARTClientOptions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D58521949D28008F54AD /* ARTChannel.h in Headers */ = {isa = PBXBuildFile; fileRef = D746AE201BBB60EE003ECEF8 /* ARTChannel.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D58621949D29008F54AD /* ARTChannels.h in Headers */ = {isa = PBXBuildFile; fileRef = D746AE511BBD85C5003ECEF8 /* ARTChannels.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D58721949D29008F54AD /* ARTChannelOptions.h in Headers */ = {isa = PBXBuildFile; fileRef = D746AE4D1BBD84E7003ECEF8 /* ARTChannelOptions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D58821949D29008F54AD /* ARTProtocolMessage.h in Headers */ = {isa = PBXBuildFile; fileRef = 96E408411A38939E00087F77 /* ARTProtocolMessage.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D58921949D29008F54AD /* ARTBaseMessage.h in Headers */ = {isa = PBXBuildFile; fileRef = 96BF61621A35CDE1004CF2B3 /* ARTBaseMessage.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D58A21949D29008F54AD /* ARTMessage.h in Headers */ = {isa = PBXBuildFile; fileRef = D746AE361BBC3201003ECEF8 /* ARTMessage.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D58B21949D29008F54AD /* ARTPresence.h in Headers */ = {isa = PBXBuildFile; fileRef = D746AE261BBB61C9003ECEF8 /* ARTPresence.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D58C21949D29008F54AD /* ARTPresenceMessage.h in Headers */ = {isa = PBXBuildFile; fileRef = 96A5079F1A377AA50077CDF8 /* ARTPresenceMessage.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D58D21949D29008F54AD /* ARTPresenceMap.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C2B0FFB1B136A6D00E3633C /* ARTPresenceMap.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D58E21949D29008F54AD /* ARTDataEncoder.h in Headers */ = {isa = PBXBuildFile; fileRef = EB3239461C59AB2C00892664 /* ARTDataEncoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D58F21949D29008F54AD /* ARTStats.h in Headers */ = {isa = PBXBuildFile; fileRef = 96A507931A370F860077CDF8 /* ARTStats.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D59021949D29008F54AD /* ARTStatus.h in Headers */ = {isa = PBXBuildFile; fileRef = 96BF61551A35B40E004CF2B3 /* ARTStatus.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D59121949D29008F54AD /* ARTTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = 96BF615C1A35C1C8004CF2B3 /* ARTTypes.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D5A521949D2A008F54AD /* ARTAuthOptions.h in Headers */ = {isa = PBXBuildFile; fileRef = D7D8F81F1BC2BE15009718F2 /* ARTAuthOptions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D5A621949D2A008F54AD /* ARTAuthDetails.h in Headers */ = {isa = PBXBuildFile; fileRef = D73691FD1DB788C40062C150 /* ARTAuthDetails.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D5A721949D2A008F54AD /* ARTTokenRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = D7D8F8271BC2C706009718F2 /* ARTTokenRequest.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D5A821949D2A008F54AD /* ARTTokenParams.h in Headers */ = {isa = PBXBuildFile; fileRef = D7D8F8291BC2C706009718F2 /* ARTTokenParams.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D5A921949D2A008F54AD /* ARTTokenDetails.h in Headers */ = {isa = PBXBuildFile; fileRef = D7D8F8231BC2C691009718F2 /* ARTTokenDetails.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D5AA21949D2A008F54AD /* ARTClientOptions.h in Headers */ = {isa = PBXBuildFile; fileRef = 961343D61A42E0B7006DC822 /* ARTClientOptions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D5AB21949D2A008F54AD /* ARTChannel.h in Headers */ = {isa = PBXBuildFile; fileRef = D746AE201BBB60EE003ECEF8 /* ARTChannel.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D5AC21949D2A008F54AD /* ARTChannels.h in Headers */ = {isa = PBXBuildFile; fileRef = D746AE511BBD85C5003ECEF8 /* ARTChannels.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D5AD21949D2A008F54AD /* ARTChannelOptions.h in Headers */ = {isa = PBXBuildFile; fileRef = D746AE4D1BBD84E7003ECEF8 /* ARTChannelOptions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D5AE21949D2A008F54AD /* ARTProtocolMessage.h in Headers */ = {isa = PBXBuildFile; fileRef = 96E408411A38939E00087F77 /* ARTProtocolMessage.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D5AF21949D2A008F54AD /* ARTBaseMessage.h in Headers */ = {isa = PBXBuildFile; fileRef = 96BF61621A35CDE1004CF2B3 /* ARTBaseMessage.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D5B021949D2A008F54AD /* ARTMessage.h in Headers */ = {isa = PBXBuildFile; fileRef = D746AE361BBC3201003ECEF8 /* ARTMessage.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D5B121949D2A008F54AD /* ARTPresence.h in Headers */ = {isa = PBXBuildFile; fileRef = D746AE261BBB61C9003ECEF8 /* ARTPresence.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D5B221949D2A008F54AD /* ARTPresenceMessage.h in Headers */ = {isa = PBXBuildFile; fileRef = 96A5079F1A377AA50077CDF8 /* ARTPresenceMessage.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D5B321949D2A008F54AD /* ARTPresenceMap.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C2B0FFB1B136A6D00E3633C /* ARTPresenceMap.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D5B421949D2A008F54AD /* ARTDataEncoder.h in Headers */ = {isa = PBXBuildFile; fileRef = EB3239461C59AB2C00892664 /* ARTDataEncoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D5B521949D2A008F54AD /* ARTStats.h in Headers */ = {isa = PBXBuildFile; fileRef = 96A507931A370F860077CDF8 /* ARTStats.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D5B621949D2A008F54AD /* ARTStatus.h in Headers */ = {isa = PBXBuildFile; fileRef = 96BF61551A35B40E004CF2B3 /* ARTStatus.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D5B721949D2A008F54AD /* ARTTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = 96BF615C1A35C1C8004CF2B3 /* ARTTypes.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D5B821949D4F008F54AD /* ARTAuthOptions+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = D7D5A6991CA3D9040071BD6D /* ARTAuthOptions+Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; + D710D5B921949D4F008F54AD /* ARTTokenParams+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = EB8AC6421C6515ED002ABA92 /* ARTTokenParams+Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; + D710D5BA21949D4F008F54AD /* ARTClientOptions+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = EB503C871C7E4A090053AF00 /* ARTClientOptions+Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; + D710D5BB21949D4F008F54AD /* ARTChannel+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = D746AE241BBB611C003ECEF8 /* ARTChannel+Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; + D710D5BC21949D4F008F54AD /* ARTChannels+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = D746AE551BBD8622003ECEF8 /* ARTChannels+Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; + D710D5BD21949D4F008F54AD /* ARTProtocolMessage+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = D77394021C6F6FFE00F5478F /* ARTProtocolMessage+Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; + D710D5BE21949D4F008F54AD /* ARTBaseMessage+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = EB0505FB1C5BD7C4006BA7E2 /* ARTBaseMessage+Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; + D710D5BF21949D4F008F54AD /* ARTPresenceMessage+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = D7F2B8B11E42410D00B65151 /* ARTPresenceMessage+Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; + D710D5C821949D50008F54AD /* ARTAuthOptions+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = D7D5A6991CA3D9040071BD6D /* ARTAuthOptions+Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; + D710D5C921949D50008F54AD /* ARTTokenParams+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = EB8AC6421C6515ED002ABA92 /* ARTTokenParams+Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; + D710D5CA21949D50008F54AD /* ARTClientOptions+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = EB503C871C7E4A090053AF00 /* ARTClientOptions+Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; + D710D5CB21949D50008F54AD /* ARTChannel+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = D746AE241BBB611C003ECEF8 /* ARTChannel+Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; + D710D5CC21949D50008F54AD /* ARTChannels+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = D746AE551BBD8622003ECEF8 /* ARTChannels+Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; + D710D5CD21949D50008F54AD /* ARTProtocolMessage+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = D77394021C6F6FFE00F5478F /* ARTProtocolMessage+Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; + D710D5CE21949D50008F54AD /* ARTBaseMessage+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = EB0505FB1C5BD7C4006BA7E2 /* ARTBaseMessage+Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; + D710D5CF21949D50008F54AD /* ARTPresenceMessage+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = D7F2B8B11E42410D00B65151 /* ARTPresenceMessage+Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; + D710D5D021949D78008F54AD /* ARTAuthOptions.m in Sources */ = {isa = PBXBuildFile; fileRef = D7D8F8201BC2BE15009718F2 /* ARTAuthOptions.m */; }; + D710D5D121949D78008F54AD /* ARTAuthDetails.m in Sources */ = {isa = PBXBuildFile; fileRef = D73691FE1DB788C40062C150 /* ARTAuthDetails.m */; }; + D710D5D221949D78008F54AD /* ARTTokenRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = D7D8F8281BC2C706009718F2 /* ARTTokenRequest.m */; }; + D710D5D321949D78008F54AD /* ARTTokenParams.m in Sources */ = {isa = PBXBuildFile; fileRef = D7D8F82A1BC2C706009718F2 /* ARTTokenParams.m */; }; + D710D5D421949D78008F54AD /* ARTTokenDetails.m in Sources */ = {isa = PBXBuildFile; fileRef = D7D8F8241BC2C691009718F2 /* ARTTokenDetails.m */; }; + D710D5D521949D78008F54AD /* ARTClientOptions.m in Sources */ = {isa = PBXBuildFile; fileRef = 961343D71A42E0B7006DC822 /* ARTClientOptions.m */; }; + D710D5D621949D78008F54AD /* ARTChannel.m in Sources */ = {isa = PBXBuildFile; fileRef = D746AE211BBB60EE003ECEF8 /* ARTChannel.m */; }; + D710D5D721949D78008F54AD /* ARTChannels.m in Sources */ = {isa = PBXBuildFile; fileRef = D746AE521BBD85C5003ECEF8 /* ARTChannels.m */; }; + D710D5D821949D78008F54AD /* ARTChannelOptions.m in Sources */ = {isa = PBXBuildFile; fileRef = D746AE4E1BBD84E7003ECEF8 /* ARTChannelOptions.m */; }; + D710D5D921949D78008F54AD /* ARTProtocolMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = 96E408421A38939E00087F77 /* ARTProtocolMessage.m */; }; + D710D5DA21949D78008F54AD /* ARTBaseMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = 96BF61631A35CDE1004CF2B3 /* ARTBaseMessage.m */; }; + D710D5DB21949D78008F54AD /* ARTMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = D746AE371BBC3201003ECEF8 /* ARTMessage.m */; }; + D710D5DC21949D78008F54AD /* ARTPresence.m in Sources */ = {isa = PBXBuildFile; fileRef = D746AE271BBB61C9003ECEF8 /* ARTPresence.m */; }; + D710D5DD21949D78008F54AD /* ARTPresenceMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = 96A507A01A377AA50077CDF8 /* ARTPresenceMessage.m */; }; + D710D5DE21949D78008F54AD /* ARTPresenceMap.m in Sources */ = {isa = PBXBuildFile; fileRef = 1C2B0FFC1B136A6D00E3633C /* ARTPresenceMap.m */; }; + D710D5DF21949D78008F54AD /* ARTDataEncoder.m in Sources */ = {isa = PBXBuildFile; fileRef = EB3239421C59AB0400892664 /* ARTDataEncoder.m */; }; + D710D5E021949D78008F54AD /* ARTStats.m in Sources */ = {isa = PBXBuildFile; fileRef = 96A507941A370F860077CDF8 /* ARTStats.m */; }; + D710D5E121949D78008F54AD /* ARTStatus.m in Sources */ = {isa = PBXBuildFile; fileRef = 1C55427C1B148306003068DB /* ARTStatus.m */; }; + D710D5E221949D78008F54AD /* ARTTypes.m in Sources */ = {isa = PBXBuildFile; fileRef = 96BF615D1A35C1C8004CF2B3 /* ARTTypes.m */; }; + D710D5F621949D79008F54AD /* ARTAuthOptions.m in Sources */ = {isa = PBXBuildFile; fileRef = D7D8F8201BC2BE15009718F2 /* ARTAuthOptions.m */; }; + D710D5F721949D79008F54AD /* ARTAuthDetails.m in Sources */ = {isa = PBXBuildFile; fileRef = D73691FE1DB788C40062C150 /* ARTAuthDetails.m */; }; + D710D5F821949D79008F54AD /* ARTTokenRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = D7D8F8281BC2C706009718F2 /* ARTTokenRequest.m */; }; + D710D5F921949D79008F54AD /* ARTTokenParams.m in Sources */ = {isa = PBXBuildFile; fileRef = D7D8F82A1BC2C706009718F2 /* ARTTokenParams.m */; }; + D710D5FA21949D79008F54AD /* ARTTokenDetails.m in Sources */ = {isa = PBXBuildFile; fileRef = D7D8F8241BC2C691009718F2 /* ARTTokenDetails.m */; }; + D710D5FB21949D79008F54AD /* ARTClientOptions.m in Sources */ = {isa = PBXBuildFile; fileRef = 961343D71A42E0B7006DC822 /* ARTClientOptions.m */; }; + D710D5FC21949D79008F54AD /* ARTChannel.m in Sources */ = {isa = PBXBuildFile; fileRef = D746AE211BBB60EE003ECEF8 /* ARTChannel.m */; }; + D710D5FD21949D79008F54AD /* ARTChannels.m in Sources */ = {isa = PBXBuildFile; fileRef = D746AE521BBD85C5003ECEF8 /* ARTChannels.m */; }; + D710D5FE21949D79008F54AD /* ARTChannelOptions.m in Sources */ = {isa = PBXBuildFile; fileRef = D746AE4E1BBD84E7003ECEF8 /* ARTChannelOptions.m */; }; + D710D5FF21949D79008F54AD /* ARTProtocolMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = 96E408421A38939E00087F77 /* ARTProtocolMessage.m */; }; + D710D60021949D79008F54AD /* ARTBaseMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = 96BF61631A35CDE1004CF2B3 /* ARTBaseMessage.m */; }; + D710D60121949D79008F54AD /* ARTMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = D746AE371BBC3201003ECEF8 /* ARTMessage.m */; }; + D710D60221949D79008F54AD /* ARTPresence.m in Sources */ = {isa = PBXBuildFile; fileRef = D746AE271BBB61C9003ECEF8 /* ARTPresence.m */; }; + D710D60321949D79008F54AD /* ARTPresenceMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = 96A507A01A377AA50077CDF8 /* ARTPresenceMessage.m */; }; + D710D60421949D79008F54AD /* ARTPresenceMap.m in Sources */ = {isa = PBXBuildFile; fileRef = 1C2B0FFC1B136A6D00E3633C /* ARTPresenceMap.m */; }; + D710D60521949D79008F54AD /* ARTDataEncoder.m in Sources */ = {isa = PBXBuildFile; fileRef = EB3239421C59AB0400892664 /* ARTDataEncoder.m */; }; + D710D60621949D79008F54AD /* ARTStats.m in Sources */ = {isa = PBXBuildFile; fileRef = 96A507941A370F860077CDF8 /* ARTStats.m */; }; + D710D60721949D79008F54AD /* ARTStatus.m in Sources */ = {isa = PBXBuildFile; fileRef = 1C55427C1B148306003068DB /* ARTStatus.m */; }; + D710D60821949D79008F54AD /* ARTTypes.m in Sources */ = {isa = PBXBuildFile; fileRef = 96BF615D1A35C1C8004CF2B3 /* ARTTypes.m */; }; + D710D60921949DA9008F54AD /* ARTURLSessionServerTrust.h in Headers */ = {isa = PBXBuildFile; fileRef = D7588AF11BFF91B800BB8279 /* ARTURLSessionServerTrust.h */; settings = {ATTRIBUTES = (Private, ); }; }; + D710D60B21949DAA008F54AD /* ARTURLSessionServerTrust.h in Headers */ = {isa = PBXBuildFile; fileRef = D7588AF11BFF91B800BB8279 /* ARTURLSessionServerTrust.h */; settings = {ATTRIBUTES = (Private, ); }; }; + D710D60C21949DDB008F54AD /* ARTHttp.h in Headers */ = {isa = PBXBuildFile; fileRef = 96BF61561A35B52C004CF2B3 /* ARTHttp.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D60D21949DDB008F54AD /* ARTDataQuery.h in Headers */ = {isa = PBXBuildFile; fileRef = D746AE1A1BBB5207003ECEF8 /* ARTDataQuery.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D60E21949DDB008F54AD /* ARTPaginatedResult.h in Headers */ = {isa = PBXBuildFile; fileRef = 850BFB4A1B79323C009D0ADD /* ARTPaginatedResult.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D60F21949DDB008F54AD /* ARTHTTPPaginatedResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = D769E15121270F3400DC5CD1 /* ARTHTTPPaginatedResponse.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D61021949DDB008F54AD /* ARTFallback.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C578E1D1B3435CA00EF46EC /* ARTFallback.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D61621949DDC008F54AD /* ARTHttp.h in Headers */ = {isa = PBXBuildFile; fileRef = 96BF61561A35B52C004CF2B3 /* ARTHttp.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D61721949DDC008F54AD /* ARTDataQuery.h in Headers */ = {isa = PBXBuildFile; fileRef = D746AE1A1BBB5207003ECEF8 /* ARTDataQuery.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D61821949DDC008F54AD /* ARTPaginatedResult.h in Headers */ = {isa = PBXBuildFile; fileRef = 850BFB4A1B79323C009D0ADD /* ARTPaginatedResult.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D61921949DDC008F54AD /* ARTHTTPPaginatedResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = D769E15121270F3400DC5CD1 /* ARTHTTPPaginatedResponse.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D61A21949DDC008F54AD /* ARTFallback.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C578E1D1B3435CA00EF46EC /* ARTFallback.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D61B21949DEC008F54AD /* ARTDataQuery+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = D746AE1B1BBB5207003ECEF8 /* ARTDataQuery+Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; + D710D61C21949DEC008F54AD /* ARTPaginatedResult+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = D746AE2E1BBBE7D7003ECEF8 /* ARTPaginatedResult+Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; + D710D61D21949DEC008F54AD /* ARTHTTPPaginatedResponse+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = D78D780821271FB10016808B /* ARTHTTPPaginatedResponse+Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; + D710D61E21949DEC008F54AD /* ARTFallback+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = D77F02A71DAF8099001B3FF9 /* ARTFallback+Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; + D710D61F21949DEC008F54AD /* ARTNSHTTPURLResponse+ARTPaginated.h in Headers */ = {isa = PBXBuildFile; fileRef = D74CBC01212EB58700D090E4 /* ARTNSHTTPURLResponse+ARTPaginated.h */; settings = {ATTRIBUTES = (Private, ); }; }; + D710D62021949DEC008F54AD /* ARTNSMutableURLRequest+ARTPaginated.h in Headers */ = {isa = PBXBuildFile; fileRef = D74CBC05212EB5B900D090E4 /* ARTNSMutableURLRequest+ARTPaginated.h */; settings = {ATTRIBUTES = (Private, ); }; }; + D710D62721949DED008F54AD /* ARTDataQuery+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = D746AE1B1BBB5207003ECEF8 /* ARTDataQuery+Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; + D710D62821949DED008F54AD /* ARTPaginatedResult+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = D746AE2E1BBBE7D7003ECEF8 /* ARTPaginatedResult+Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; + D710D62921949DED008F54AD /* ARTHTTPPaginatedResponse+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = D78D780821271FB10016808B /* ARTHTTPPaginatedResponse+Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; + D710D62A21949DED008F54AD /* ARTFallback+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = D77F02A71DAF8099001B3FF9 /* ARTFallback+Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; + D710D62B21949DED008F54AD /* ARTNSHTTPURLResponse+ARTPaginated.h in Headers */ = {isa = PBXBuildFile; fileRef = D74CBC01212EB58700D090E4 /* ARTNSHTTPURLResponse+ARTPaginated.h */; settings = {ATTRIBUTES = (Private, ); }; }; + D710D62C21949DED008F54AD /* ARTNSMutableURLRequest+ARTPaginated.h in Headers */ = {isa = PBXBuildFile; fileRef = D74CBC05212EB5B900D090E4 /* ARTNSMutableURLRequest+ARTPaginated.h */; settings = {ATTRIBUTES = (Private, ); }; }; + D710D62D21949E03008F54AD /* ARTHttp.m in Sources */ = {isa = PBXBuildFile; fileRef = 96BF61571A35B52C004CF2B3 /* ARTHttp.m */; }; + D710D62E21949E03008F54AD /* ARTURLSessionServerTrust.m in Sources */ = {isa = PBXBuildFile; fileRef = D7588AF21BFF91B800BB8279 /* ARTURLSessionServerTrust.m */; }; + D710D62F21949E03008F54AD /* ARTDataQuery.m in Sources */ = {isa = PBXBuildFile; fileRef = D746AE1C1BBB5207003ECEF8 /* ARTDataQuery.m */; }; + D710D63021949E03008F54AD /* ARTPaginatedResult.m in Sources */ = {isa = PBXBuildFile; fileRef = 850BFB4B1B79323C009D0ADD /* ARTPaginatedResult.m */; }; + D710D63121949E03008F54AD /* ARTHTTPPaginatedResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = D769E15221270F3400DC5CD1 /* ARTHTTPPaginatedResponse.m */; }; + D710D63221949E03008F54AD /* ARTFallback.m in Sources */ = {isa = PBXBuildFile; fileRef = 1C578E1E1B3435CA00EF46EC /* ARTFallback.m */; }; + D710D63321949E03008F54AD /* ARTNSHTTPURLResponse+ARTPaginated.m in Sources */ = {isa = PBXBuildFile; fileRef = D74CBC02212EB58700D090E4 /* ARTNSHTTPURLResponse+ARTPaginated.m */; }; + D710D63421949E03008F54AD /* ARTNSMutableURLRequest+ARTPaginated.m in Sources */ = {isa = PBXBuildFile; fileRef = D74CBC06212EB5B900D090E4 /* ARTNSMutableURLRequest+ARTPaginated.m */; }; + D710D63D21949E04008F54AD /* ARTHttp.m in Sources */ = {isa = PBXBuildFile; fileRef = 96BF61571A35B52C004CF2B3 /* ARTHttp.m */; }; + D710D63E21949E04008F54AD /* ARTURLSessionServerTrust.m in Sources */ = {isa = PBXBuildFile; fileRef = D7588AF21BFF91B800BB8279 /* ARTURLSessionServerTrust.m */; }; + D710D63F21949E04008F54AD /* ARTDataQuery.m in Sources */ = {isa = PBXBuildFile; fileRef = D746AE1C1BBB5207003ECEF8 /* ARTDataQuery.m */; }; + D710D64021949E04008F54AD /* ARTPaginatedResult.m in Sources */ = {isa = PBXBuildFile; fileRef = 850BFB4B1B79323C009D0ADD /* ARTPaginatedResult.m */; }; + D710D64121949E04008F54AD /* ARTHTTPPaginatedResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = D769E15221270F3400DC5CD1 /* ARTHTTPPaginatedResponse.m */; }; + D710D64221949E04008F54AD /* ARTFallback.m in Sources */ = {isa = PBXBuildFile; fileRef = 1C578E1E1B3435CA00EF46EC /* ARTFallback.m */; }; + D710D64321949E04008F54AD /* ARTNSHTTPURLResponse+ARTPaginated.m in Sources */ = {isa = PBXBuildFile; fileRef = D74CBC02212EB58700D090E4 /* ARTNSHTTPURLResponse+ARTPaginated.m */; }; + D710D64421949E04008F54AD /* ARTNSMutableURLRequest+ARTPaginated.m in Sources */ = {isa = PBXBuildFile; fileRef = D74CBC06212EB5B900D090E4 /* ARTNSMutableURLRequest+ARTPaginated.m */; }; + D710D64521949E61008F54AD /* ARTEventEmitter+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = EB1AE0CB1C5C1EB200D62250 /* ARTEventEmitter+Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; + D710D64621949E61008F54AD /* ARTCrypto+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = EB5E058C1C77027600A48B39 /* ARTCrypto+Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; + D710D64721949E61008F54AD /* ARTLog+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = EB503C891C7F1FE40053AF00 /* ARTLog+Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; + D710D64B21949E62008F54AD /* ARTEventEmitter+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = EB1AE0CB1C5C1EB200D62250 /* ARTEventEmitter+Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; + D710D64C21949E62008F54AD /* ARTCrypto+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = EB5E058C1C77027600A48B39 /* ARTCrypto+Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; + D710D64D21949E62008F54AD /* ARTLog+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = EB503C891C7F1FE40053AF00 /* ARTLog+Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; + D710D64E21949E77008F54AD /* ARTEventEmitter.m in Sources */ = {isa = PBXBuildFile; fileRef = D746AE3F1BBC5B14003ECEF8 /* ARTEventEmitter.m */; }; + D710D64F21949E77008F54AD /* ARTCrypto.m in Sources */ = {isa = PBXBuildFile; fileRef = 960D07921A45F1D800ED8C8C /* ARTCrypto.m */; }; + D710D65021949E77008F54AD /* ARTJsonLikeEncoder.m in Sources */ = {isa = PBXBuildFile; fileRef = EB9C530C1CD7BFF300.8.557 /* ARTJsonLikeEncoder.m */; }; + D710D65121949E77008F54AD /* ARTJsonEncoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 96A507AC1A3780F60077CDF8 /* ARTJsonEncoder.m */; }; + D710D65221949E77008F54AD /* ARTMsgPackEncoder.m in Sources */ = {isa = PBXBuildFile; fileRef = EB91213F1CA0AD8200BA0A40 /* ARTMsgPackEncoder.m */; }; + D710D65321949E77008F54AD /* ARTLog.m in Sources */ = {isa = PBXBuildFile; fileRef = 1C6C18A21ADFDAB100AB79E4 /* ARTLog.m */; }; + D710D65421949E77008F54AD /* ARTNSDate+ARTUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = 96A507B41A37881C0077CDF8 /* ARTNSDate+ARTUtil.m */; }; + D710D65521949E77008F54AD /* ARTNSArray+ARTFunctional.m in Sources */ = {isa = PBXBuildFile; fileRef = 967A43201A39AEAF00E4CE23 /* ARTNSArray+ARTFunctional.m */; }; + D710D65621949E77008F54AD /* ARTNSDictionary+ARTDictionaryUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = 96A507A41A377DE90077CDF8 /* ARTNSDictionary+ARTDictionaryUtil.m */; }; + D710D65721949E77008F54AD /* ARTOSReachability.m in Sources */ = {isa = PBXBuildFile; fileRef = EB2D84FC1CD769B700F23CDA /* ARTOSReachability.m */; }; + D710D65821949E77008F54AD /* ARTGCD.m in Sources */ = {isa = PBXBuildFile; fileRef = D75A3F1A1DDE5B62002A4AAD /* ARTGCD.m */; }; + D710D65921949E77008F54AD /* ARTSentry.m in Sources */ = {isa = PBXBuildFile; fileRef = EBD947B51EBB8F2B0005DD16 /* ARTSentry.m */; }; + D710D65A21949E77008F54AD /* ARTNSString+ARTUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = D3AD0EBC215E2FB000312105 /* ARTNSString+ARTUtil.m */; }; + D710D66821949E78008F54AD /* ARTEventEmitter.m in Sources */ = {isa = PBXBuildFile; fileRef = D746AE3F1BBC5B14003ECEF8 /* ARTEventEmitter.m */; }; + D710D66921949E78008F54AD /* ARTCrypto.m in Sources */ = {isa = PBXBuildFile; fileRef = 960D07921A45F1D800ED8C8C /* ARTCrypto.m */; }; + D710D66A21949E78008F54AD /* ARTJsonLikeEncoder.m in Sources */ = {isa = PBXBuildFile; fileRef = EB9C530C1CD7BFF300.8.557 /* ARTJsonLikeEncoder.m */; }; + D710D66B21949E78008F54AD /* ARTJsonEncoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 96A507AC1A3780F60077CDF8 /* ARTJsonEncoder.m */; }; + D710D66C21949E78008F54AD /* ARTMsgPackEncoder.m in Sources */ = {isa = PBXBuildFile; fileRef = EB91213F1CA0AD8200BA0A40 /* ARTMsgPackEncoder.m */; }; + D710D66D21949E78008F54AD /* ARTLog.m in Sources */ = {isa = PBXBuildFile; fileRef = 1C6C18A21ADFDAB100AB79E4 /* ARTLog.m */; }; + D710D66E21949E78008F54AD /* ARTNSDate+ARTUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = 96A507B41A37881C0077CDF8 /* ARTNSDate+ARTUtil.m */; }; + D710D66F21949E78008F54AD /* ARTNSArray+ARTFunctional.m in Sources */ = {isa = PBXBuildFile; fileRef = 967A43201A39AEAF00E4CE23 /* ARTNSArray+ARTFunctional.m */; }; + D710D67021949E78008F54AD /* ARTNSDictionary+ARTDictionaryUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = 96A507A41A377DE90077CDF8 /* ARTNSDictionary+ARTDictionaryUtil.m */; }; + D710D67121949E79008F54AD /* ARTOSReachability.m in Sources */ = {isa = PBXBuildFile; fileRef = EB2D84FC1CD769B700F23CDA /* ARTOSReachability.m */; }; + D710D67221949E79008F54AD /* ARTGCD.m in Sources */ = {isa = PBXBuildFile; fileRef = D75A3F1A1DDE5B62002A4AAD /* ARTGCD.m */; }; + D710D67321949E79008F54AD /* ARTSentry.m in Sources */ = {isa = PBXBuildFile; fileRef = EBD947B51EBB8F2B0005DD16 /* ARTSentry.m */; }; + D710D67421949E79008F54AD /* ARTNSString+ARTUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = D3AD0EBC215E2FB000312105 /* ARTNSString+ARTUtil.m */; }; + D710D67521949E80008F54AD /* ARTNSString+ARTUtil.h in Headers */ = {isa = PBXBuildFile; fileRef = D3AD0EBB215E2FB000312105 /* ARTNSString+ARTUtil.h */; }; + D710D67721949E81008F54AD /* ARTNSString+ARTUtil.h in Headers */ = {isa = PBXBuildFile; fileRef = D3AD0EBB215E2FB000312105 /* ARTNSString+ARTUtil.h */; }; + D710D67821949E8F008F54AD /* ARTSentry.h in Headers */ = {isa = PBXBuildFile; fileRef = EBD947B31EBB8F160005DD16 /* ARTSentry.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D67A21949E90008F54AD /* ARTSentry.h in Headers */ = {isa = PBXBuildFile; fileRef = EBD947B31EBB8F160005DD16 /* ARTSentry.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D67B21949E99008F54AD /* ARTGCD.h in Headers */ = {isa = PBXBuildFile; fileRef = D75A3F191DDE5B62002A4AAD /* ARTGCD.h */; }; + D710D67D21949E99008F54AD /* ARTGCD.h in Headers */ = {isa = PBXBuildFile; fileRef = D75A3F191DDE5B62002A4AAD /* ARTGCD.h */; }; + D710D67E21949EA2008F54AD /* ARTOSReachability.h in Headers */ = {isa = PBXBuildFile; fileRef = EB2D85001CD769C800F23CDA /* ARTOSReachability.h */; }; + D710D68021949EA3008F54AD /* ARTOSReachability.h in Headers */ = {isa = PBXBuildFile; fileRef = EB2D85001CD769C800F23CDA /* ARTOSReachability.h */; }; + D710D68121949EB3008F54AD /* ARTReachability.h in Headers */ = {isa = PBXBuildFile; fileRef = EB2D84F61CD75CCE00F23CDA /* ARTReachability.h */; settings = {ATTRIBUTES = (Private, ); }; }; + D710D68321949EB4008F54AD /* ARTReachability.h in Headers */ = {isa = PBXBuildFile; fileRef = EB2D84F61CD75CCE00F23CDA /* ARTReachability.h */; settings = {ATTRIBUTES = (Private, ); }; }; + D710D68421949ECE008F54AD /* ARTNSDictionary+ARTDictionaryUtil.h in Headers */ = {isa = PBXBuildFile; fileRef = 96A507A31A377DE90077CDF8 /* ARTNSDictionary+ARTDictionaryUtil.h */; }; + D710D68621949ECF008F54AD /* ARTNSDictionary+ARTDictionaryUtil.h in Headers */ = {isa = PBXBuildFile; fileRef = 96A507A31A377DE90077CDF8 /* ARTNSDictionary+ARTDictionaryUtil.h */; }; + D710D68721949ED5008F54AD /* ARTNSArray+ARTFunctional.h in Headers */ = {isa = PBXBuildFile; fileRef = 967A431F1A39AEAF00E4CE23 /* ARTNSArray+ARTFunctional.h */; }; + D710D68921949ED6008F54AD /* ARTNSArray+ARTFunctional.h in Headers */ = {isa = PBXBuildFile; fileRef = 967A431F1A39AEAF00E4CE23 /* ARTNSArray+ARTFunctional.h */; }; + D710D68A21949EDA008F54AD /* ARTNSDate+ARTUtil.h in Headers */ = {isa = PBXBuildFile; fileRef = 96A507B31A37881C0077CDF8 /* ARTNSDate+ARTUtil.h */; settings = {ATTRIBUTES = (Private, ); }; }; + D710D68C21949EDB008F54AD /* ARTNSDate+ARTUtil.h in Headers */ = {isa = PBXBuildFile; fileRef = 96A507B31A37881C0077CDF8 /* ARTNSDate+ARTUtil.h */; settings = {ATTRIBUTES = (Private, ); }; }; + D710D68D21949EED008F54AD /* ARTEventEmitter.h in Headers */ = {isa = PBXBuildFile; fileRef = D746AE3E1BBC5B14003ECEF8 /* ARTEventEmitter.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D68F21949EEE008F54AD /* ARTEventEmitter.h in Headers */ = {isa = PBXBuildFile; fileRef = D746AE3E1BBC5B14003ECEF8 /* ARTEventEmitter.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D69021949EFF008F54AD /* ARTCrypto.h in Headers */ = {isa = PBXBuildFile; fileRef = 960D07911A45F1D800ED8C8C /* ARTCrypto.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D69121949EFF008F54AD /* ARTEncoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 96A507A71A37806A0077CDF8 /* ARTEncoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D69221949EFF008F54AD /* ARTJsonEncoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 96A507AB1A3780F60077CDF8 /* ARTJsonEncoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D69321949EFF008F54AD /* ARTMsgPackEncoder.h in Headers */ = {isa = PBXBuildFile; fileRef = EB91213D1CA0AD6600BA0A40 /* ARTMsgPackEncoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D69421949EFF008F54AD /* ARTLog.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C6C18A11ADFDAB100AB79E4 /* ARTLog.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D69A21949F00008F54AD /* ARTCrypto.h in Headers */ = {isa = PBXBuildFile; fileRef = 960D07911A45F1D800ED8C8C /* ARTCrypto.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D69B21949F00008F54AD /* ARTEncoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 96A507A71A37806A0077CDF8 /* ARTEncoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D69C21949F00008F54AD /* ARTJsonEncoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 96A507AB1A3780F60077CDF8 /* ARTJsonEncoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D69D21949F00008F54AD /* ARTMsgPackEncoder.h in Headers */ = {isa = PBXBuildFile; fileRef = EB91213D1CA0AD6600BA0A40 /* ARTMsgPackEncoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D69E21949F00008F54AD /* ARTLog.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C6C18A11ADFDAB100AB79E4 /* ARTLog.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D69F21949F0D008F54AD /* ARTJsonLikeEncoder.h in Headers */ = {isa = PBXBuildFile; fileRef = EB9C530A1CD7BEB100.8.557 /* ARTJsonLikeEncoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D6A121949F0E008F54AD /* ARTJsonLikeEncoder.h in Headers */ = {isa = PBXBuildFile; fileRef = EB9C530A1CD7BEB100.8.557 /* ARTJsonLikeEncoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D710D6A72194A09D008F54AD /* SAMKeychain.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D710D6A22194A09C008F54AD /* SAMKeychain.framework */; }; + D710D6A82194A09D008F54AD /* KSCrash.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D710D6A32194A09D008F54AD /* KSCrash.framework */; }; + D710D6A92194A09D008F54AD /* msgpack.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D710D6A42194A09D008F54AD /* msgpack.framework */; }; + D710D6AA2194A09D008F54AD /* SocketRocket.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D710D6A52194A09D008F54AD /* SocketRocket.framework */; }; + D710D6AB2194A09D008F54AD /* ULID.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D710D6A62194A09D008F54AD /* ULID.framework */; }; + D710D6B42194A1FD008F54AD /* KSCrash.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D710D6AF2194A0B2008F54AD /* KSCrash.framework */; }; + D710D6B52194A1FD008F54AD /* SAMKeychain.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D710D6AE2194A0B2008F54AD /* SAMKeychain.framework */; }; + D710D6B62194A1FD008F54AD /* SocketRocket.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D710D6AC2194A0B1008F54AD /* SocketRocket.framework */; }; + D710D6B72194A1FD008F54AD /* ULID.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D710D6AD2194A0B2008F54AD /* ULID.framework */; }; + D710D6B92194A1FD008F54AD /* msgpack.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D710D6B82194A1FD008F54AD /* msgpack.framework */; }; D714A63E1C74D4B2002F2CA0 /* NSObject+TestSuite.swift in Sources */ = {isa = PBXBuildFile; fileRef = D714A63D1C74D4B2002F2CA0 /* NSObject+TestSuite.swift */; }; D71966E41E5DF360000974DD /* ARTPushActivationStateMachine.h in Headers */ = {isa = PBXBuildFile; fileRef = D71966E21E5DF360000974DD /* ARTPushActivationStateMachine.h */; settings = {ATTRIBUTES = (Public, ); }; }; D71966E51E5DF360000974DD /* ARTPushActivationStateMachine.m in Sources */ = {isa = PBXBuildFile; fileRef = D71966E31E5DF360000974DD /* ARTPushActivationStateMachine.m */; }; @@ -86,9 +528,6 @@ D736A0C91F916553005ABE81 /* KSCrash.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D736A0C61F916553005ABE81 /* KSCrash.framework */; }; D736A0CA1F916553005ABE81 /* msgpack.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D736A0C71F916553005ABE81 /* msgpack.framework */; }; D736A0CB1F916553005ABE81 /* SocketRocket.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D736A0C81F916553005ABE81 /* SocketRocket.framework */; }; - D736A0CC1F916577005ABE81 /* KSCrash.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D736A0C61F916553005ABE81 /* KSCrash.framework */; }; - D736A0CD1F916577005ABE81 /* msgpack.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D736A0C71F916553005ABE81 /* msgpack.framework */; }; - D736A0CE1F916577005ABE81 /* SocketRocket.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D736A0C81F916553005ABE81 /* SocketRocket.framework */; }; D736A1231F9178B0005ABE81 /* KSCrash.framework in Copy Carthage Frameworks to Test bundle */ = {isa = PBXBuildFile; fileRef = D736A0C61F916553005ABE81 /* KSCrash.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; D736A1241F9178B0005ABE81 /* msgpack.framework in Copy Carthage Frameworks to Test bundle */ = {isa = PBXBuildFile; fileRef = D736A0C71F916553005ABE81 /* msgpack.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; D736A1251F9178B0005ABE81 /* SocketRocket.framework in Copy Carthage Frameworks to Test bundle */ = {isa = PBXBuildFile; fileRef = D736A0C81F916553005ABE81 /* SocketRocket.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; @@ -128,8 +567,10 @@ D7534C321D79E5C20054C182 /* Ably.h in Headers */ = {isa = PBXBuildFile; fileRef = D7534C311D79E5C20054C182 /* Ably.h */; settings = {ATTRIBUTES = (Public, ); }; }; D7588AF31BFF91B800BB8279 /* ARTURLSessionServerTrust.h in Headers */ = {isa = PBXBuildFile; fileRef = D7588AF11BFF91B800BB8279 /* ARTURLSessionServerTrust.h */; settings = {ATTRIBUTES = (Private, ); }; }; D7588AF41BFF91B800BB8279 /* ARTURLSessionServerTrust.m in Sources */ = {isa = PBXBuildFile; fileRef = D7588AF21BFF91B800BB8279 /* ARTURLSessionServerTrust.m */; }; - D75A3F1B1DDE5B62002A4AAD /* ARTGCD.h in Headers */ = {isa = PBXBuildFile; fileRef = D75A3F191DDE5B62002A4AAD /* ARTGCD.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D75A3F1B1DDE5B62002A4AAD /* ARTGCD.h in Headers */ = {isa = PBXBuildFile; fileRef = D75A3F191DDE5B62002A4AAD /* ARTGCD.h */; }; D75A3F1C1DDE5B62002A4AAD /* ARTGCD.m in Sources */ = {isa = PBXBuildFile; fileRef = D75A3F1A1DDE5B62002A4AAD /* ARTGCD.m */; }; + D75B861621BB48C900FD8DD2 /* Aspects.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D75B861521BB48C900FD8DD2 /* Aspects.framework */; }; + D75B861721BB48E200FD8DD2 /* Aspects.framework in Copy Carthage Frameworks to Test bundle */ = {isa = PBXBuildFile; fileRef = D75B861521BB48C900FD8DD2 /* Aspects.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; D75F49C4205ACFEC003DE04F /* ARTDeviceStorage.h in Headers */ = {isa = PBXBuildFile; fileRef = D75F49C2205ACFEC003DE04F /* ARTDeviceStorage.h */; settings = {ATTRIBUTES = (Public, ); }; }; D75F49C7205AD4D4003DE04F /* SAMKeychain.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D75F49C6205AD4D4003DE04F /* SAMKeychain.framework */; }; D75F49C8205AD525003DE04F /* SAMKeychain.framework in Copy Carthage Frameworks to Test bundle */ = {isa = PBXBuildFile; fileRef = D75F49C6205AD4D4003DE04F /* SAMKeychain.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; @@ -163,6 +604,8 @@ D7B621951E4A6FE600684474 /* ARTDeviceDetails.m in Sources */ = {isa = PBXBuildFile; fileRef = D7B621931E4A6FE600684474 /* ARTDeviceDetails.m */; }; D7B621981E4A762A00684474 /* ARTPushChannel.h in Headers */ = {isa = PBXBuildFile; fileRef = D7B621961E4A762A00684474 /* ARTPushChannel.h */; settings = {ATTRIBUTES = (Public, ); }; }; D7B621991E4A762A00684474 /* ARTPushChannel.m in Sources */ = {isa = PBXBuildFile; fileRef = D7B621971E4A762A00684474 /* ARTPushChannel.m */; }; + D7BDDD3E21959CC100CC0632 /* CompatibilityMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 85B2C2181B6FE8DE00EA5254 /* CompatibilityMacros.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D7BDDD3F21959CC200CC0632 /* CompatibilityMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 85B2C2181B6FE8DE00EA5254 /* CompatibilityMacros.h */; settings = {ATTRIBUTES = (Public, ); }; }; D7C1B8771BBEA81A0087B55F /* Auth.swift in Sources */ = {isa = PBXBuildFile; fileRef = D7C1B8761BBEA81A0087B55F /* Auth.swift */; }; D7C1B8791BBF5F810087B55F /* ARTAuth+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = D7C1B8781BBF5F460087B55F /* ARTAuth+Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; D7CEF12D1C8D821D004FB242 /* ARTRealtimeChannels+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = D7CEF12C1C8D821D004FB242 /* ARTRealtimeChannels+Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; @@ -188,6 +631,14 @@ D7E0FEB9211DE94700659FAA /* ARTNSMutableRequest+ARTRest.m in Sources */ = {isa = PBXBuildFile; fileRef = D7E0FEB7211DE94700659FAA /* ARTNSMutableRequest+ARTRest.m */; }; D7EBE5A31BE8391E0086E675 /* RealtimeClientConnection.swift in Sources */ = {isa = PBXBuildFile; fileRef = D7EBE5A21BE8391E0086E675 /* RealtimeClientConnection.swift */; }; D7EBE5A41BE9F6900086E675 /* ARTConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = D7D29B401BE3DD0600374295 /* ARTConnection.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D7EEE6AA21A6E048000E8474 /* Aspects.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D7093C8E219EE3D800723F17 /* Aspects.framework */; }; + D7EEE6AE21A6E048000E8474 /* SwiftyJSON.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D7EEE6AB21A6E048000E8474 /* SwiftyJSON.framework */; }; + D7EEE6AF21A6E048000E8474 /* Nimble.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D7EEE6AC21A6E048000E8474 /* Nimble.framework */; }; + D7EEE6B021A6E048000E8474 /* Quick.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D7EEE6AD21A6E048000E8474 /* Quick.framework */; }; + D7EEE6B121A6E068000E8474 /* Aspects.framework in Copy Carthage Frameworks to Test bundle */ = {isa = PBXBuildFile; fileRef = D7093C8E219EE3D800723F17 /* Aspects.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + D7EEE6B221A6E070000E8474 /* Nimble.framework in Copy Carthage Frameworks to Test bundle */ = {isa = PBXBuildFile; fileRef = D7EEE6AC21A6E048000E8474 /* Nimble.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + D7EEE6B321A6E075000E8474 /* Quick.framework in Copy Carthage Frameworks to Test bundle */ = {isa = PBXBuildFile; fileRef = D7EEE6AD21A6E048000E8474 /* Quick.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + D7EEE6B421A6E082000E8474 /* SwiftyJSON.framework in Copy Carthage Frameworks to Test bundle */ = {isa = PBXBuildFile; fileRef = D7EEE6AB21A6E048000E8474 /* SwiftyJSON.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; D7F1D3731BF4DE07001A4B5E /* ARTRestPresence.h in Headers */ = {isa = PBXBuildFile; fileRef = D7F1D3711BF4DE07001A4B5E /* ARTRestPresence.h */; settings = {ATTRIBUTES = (Public, ); }; }; D7F1D3741BF4DE07001A4B5E /* ARTRestPresence.m in Sources */ = {isa = PBXBuildFile; fileRef = D7F1D3721BF4DE07001A4B5E /* ARTRestPresence.m */; }; D7F1D3771BF4DE72001A4B5E /* ARTRealtimePresence.h in Headers */ = {isa = PBXBuildFile; fileRef = D7F1D3751BF4DE72001A4B5E /* ARTRealtimePresence.h */; settings = {ATTRIBUTES = (Public, ); }; }; @@ -198,12 +649,12 @@ EB0505FC1C5BD7C4006BA7E2 /* ARTBaseMessage+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = EB0505FB1C5BD7C4006BA7E2 /* ARTBaseMessage+Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; EB1AE0CC1C5C1EB200D62250 /* ARTEventEmitter+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = EB1AE0CB1C5C1EB200D62250 /* ARTEventEmitter+Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; EB1AE0CE1C5C3A4900D62250 /* Utilities.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB1AE0CD1C5C3A4900D62250 /* Utilities.swift */; }; - EB20F8D71C653F2300EF3978 /* ARTPresence+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = EB20F8D61C653F1E00EF3978 /* ARTPresence+Private.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EB20F8D71C653F2300EF3978 /* ARTPresence+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = EB20F8D61C653F1E00EF3978 /* ARTPresence+Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; EB2D5A911CC941A700AD1A67 /* ARTRealtimeTransport.m in Sources */ = {isa = PBXBuildFile; fileRef = EB2D5A901CC941A700AD1A67 /* ARTRealtimeTransport.m */; }; - EB2D84F71CD75CCE00F23CDA /* ARTReachability.h in Headers */ = {isa = PBXBuildFile; fileRef = EB2D84F61CD75CCE00F23CDA /* ARTReachability.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EB2D84F71CD75CCE00F23CDA /* ARTReachability.h in Headers */ = {isa = PBXBuildFile; fileRef = EB2D84F61CD75CCE00F23CDA /* ARTReachability.h */; settings = {ATTRIBUTES = (Private, ); }; }; EB2D84FD1CD769B800F23CDA /* ARTOSReachability.m in Sources */ = {isa = PBXBuildFile; fileRef = EB2D84FC1CD769B700F23CDA /* ARTOSReachability.m */; }; - EB2D85011CD769C800F23CDA /* ARTOSReachability.h in Headers */ = {isa = PBXBuildFile; fileRef = EB2D85001CD769C800F23CDA /* ARTOSReachability.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EB4B1A0C1F2190BB00467F07 /* ARTRestChannels+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = EB4B1A0B1F2190BB00467F07 /* ARTRestChannels+Private.h */; }; + EB2D85011CD769C800F23CDA /* ARTOSReachability.h in Headers */ = {isa = PBXBuildFile; fileRef = EB2D85001CD769C800F23CDA /* ARTOSReachability.h */; }; + EB4B1A0C1F2190BB00467F07 /* ARTRestChannels+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = EB4B1A0B1F2190BB00467F07 /* ARTRestChannels+Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; EB503C881C7E4A090053AF00 /* ARTClientOptions+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = EB503C871C7E4A090053AF00 /* ARTClientOptions+Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; EB503C8A1C7F1FE40053AF00 /* ARTLog+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = EB503C891C7F1FE40053AF00 /* ARTLog+Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; EB5E058D1C77027600A48B39 /* ARTCrypto+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = EB5E058C1C77027600A48B39 /* ARTCrypto+Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; @@ -211,13 +662,13 @@ EB7913A81C6E54C3000ABF9B /* Crypto.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB7913A71C6E54C3000ABF9B /* Crypto.swift */; }; EB82F8511C59D29B00661917 /* ARTDataEncoder.h in Headers */ = {isa = PBXBuildFile; fileRef = EB3239461C59AB2C00892664 /* ARTDataEncoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; EB82F8521C59D30500661917 /* ARTDataEncoder.m in Sources */ = {isa = PBXBuildFile; fileRef = EB3239421C59AB0400892664 /* ARTDataEncoder.m */; }; - EB89D4011C61C10E007FA5B7 /* ARTChannels+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = D746AE551BBD8622003ECEF8 /* ARTChannels+Private.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EB89D4011C61C10E007FA5B7 /* ARTChannels+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = D746AE551BBD8622003ECEF8 /* ARTChannels+Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; EB89D4041C61C1A4007FA5B7 /* ARTRestChannels.h in Headers */ = {isa = PBXBuildFile; fileRef = EB89D4021C61C1A4007FA5B7 /* ARTRestChannels.h */; settings = {ATTRIBUTES = (Public, ); }; }; EB89D4051C61C1A4007FA5B7 /* ARTRestChannels.m in Sources */ = {isa = PBXBuildFile; fileRef = EB89D4031C61C1A4007FA5B7 /* ARTRestChannels.m */; }; EB89D4091C61C5ED007FA5B7 /* ARTRealtimeChannels.h in Headers */ = {isa = PBXBuildFile; fileRef = EB89D4081C61C5ED007FA5B7 /* ARTRealtimeChannels.h */; settings = {ATTRIBUTES = (Public, ); }; }; EB89D40B1C61C6EA007FA5B7 /* ARTRealtimeChannels.m in Sources */ = {isa = PBXBuildFile; fileRef = EB89D40A1C61C6EA007FA5B7 /* ARTRealtimeChannels.m */; }; - EB89D40F1C62303E007FA5B7 /* ARTConnection+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = EB89D40E1C62303E007FA5B7 /* ARTConnection+Private.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EB8AC6431C6515ED002ABA92 /* ARTTokenParams+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = EB8AC6421C6515ED002ABA92 /* ARTTokenParams+Private.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EB89D40F1C62303E007FA5B7 /* ARTConnection+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = EB89D40E1C62303E007FA5B7 /* ARTConnection+Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; + EB8AC6431C6515ED002ABA92 /* ARTTokenParams+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = EB8AC6421C6515ED002ABA92 /* ARTTokenParams+Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; EB91213E1CA0AD6600BA0A40 /* ARTMsgPackEncoder.h in Headers */ = {isa = PBXBuildFile; fileRef = EB91213D1CA0AD6600BA0A40 /* ARTMsgPackEncoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; EB9121401CA0AD8200BA0A40 /* ARTMsgPackEncoder.m in Sources */ = {isa = PBXBuildFile; fileRef = EB91213F1CA0AD8200BA0A40 /* ARTMsgPackEncoder.m */; }; EB9C530B1CD7BEB100.8.557 /* ARTJsonLikeEncoder.h in Headers */ = {isa = PBXBuildFile; fileRef = EB9C530A1CD7BEB100.8.557 /* ARTJsonLikeEncoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; @@ -240,15 +691,71 @@ remoteGlobalIDString = 96BF61301A35B2AB004CF2B3; remoteInfo = ably; }; + D7093C10219E2DB200723F17 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 96BF61281A35B2AB004CF2B3 /* Project object */; + proxyType = 1; + remoteGlobalIDString = D710D45A219495E2008F54AD; + remoteInfo = "Ably-macOS"; + }; + D7093C66219EE1AE00723F17 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 96BF61281A35B2AB004CF2B3 /* Project object */; + proxyType = 1; + remoteGlobalIDString = D710D474219495FC008F54AD; + remoteInfo = "Ably-tvOS"; + }; /* End PBXContainerItemProxy section */ /* Begin PBXCopyFilesBuildPhase section */ + D7093C36219EDB4400723F17 /* Copy Carthage Frameworks to Test bundle */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + D7093C4B219EDCAB00723F17 /* ULID.framework in Copy Carthage Frameworks to Test bundle */, + D7093C49219EDC9B00723F17 /* msgpack.framework in Copy Carthage Frameworks to Test bundle */, + D7093C47219EDC8A00723F17 /* KSCrash.framework in Copy Carthage Frameworks to Test bundle */, + D7093C44219EDC6B00723F17 /* SAMKeychain.framework in Copy Carthage Frameworks to Test bundle */, + D7093C41219EDC5000723F17 /* SwiftyJSON.framework in Copy Carthage Frameworks to Test bundle */, + D7093C3D219EDC1800723F17 /* Aspects.framework in Copy Carthage Frameworks to Test bundle */, + D7093C3E219EDC1800723F17 /* Quick.framework in Copy Carthage Frameworks to Test bundle */, + D7093C3C219EDC0900723F17 /* Nimble.framework in Copy Carthage Frameworks to Test bundle */, + D7093C3B219EDBFC00723F17 /* SocketRocket.framework in Copy Carthage Frameworks to Test bundle */, + ); + name = "Copy Carthage Frameworks to Test bundle"; + runOnlyForDeploymentPostprocessing = 0; + }; + D7093C6F219EE23700723F17 /* Copy Carthage Frameworks to Test bundle */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + D75B861721BB48E200FD8DD2 /* Aspects.framework in Copy Carthage Frameworks to Test bundle */, + D7093C92219EE3E800723F17 /* Nimble.framework in Copy Carthage Frameworks to Test bundle */, + D7093C93219EE3E800723F17 /* Quick.framework in Copy Carthage Frameworks to Test bundle */, + D7093C94219EE3E800723F17 /* SwiftyJSON.framework in Copy Carthage Frameworks to Test bundle */, + D7093C98219EE3E800723F17 /* msgpack.framework in Copy Carthage Frameworks to Test bundle */, + D7093C9A219EE3E800723F17 /* KSCrash.framework in Copy Carthage Frameworks to Test bundle */, + D7093C9B219EE3E800723F17 /* SAMKeychain.framework in Copy Carthage Frameworks to Test bundle */, + D7093C9C219EE3E800723F17 /* SocketRocket.framework in Copy Carthage Frameworks to Test bundle */, + D7093C9D219EE3E800723F17 /* ULID.framework in Copy Carthage Frameworks to Test bundle */, + ); + name = "Copy Carthage Frameworks to Test bundle"; + runOnlyForDeploymentPostprocessing = 0; + }; D736A1221F917830005ABE81 /* Copy Carthage Frameworks to Test bundle */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; dstPath = ""; dstSubfolderSpec = 10; files = ( + D7EEE6B421A6E082000E8474 /* SwiftyJSON.framework in Copy Carthage Frameworks to Test bundle */, + D7EEE6B321A6E075000E8474 /* Quick.framework in Copy Carthage Frameworks to Test bundle */, + D7EEE6B221A6E070000E8474 /* Nimble.framework in Copy Carthage Frameworks to Test bundle */, + D7EEE6B121A6E068000E8474 /* Aspects.framework in Copy Carthage Frameworks to Test bundle */, D38D22F220FDFD9900194B40 /* ULID.framework in Copy Carthage Frameworks to Test bundle */, D736A1231F9178B0005ABE81 /* KSCrash.framework in Copy Carthage Frameworks to Test bundle */, D736A1241F9178B0005ABE81 /* msgpack.framework in Copy Carthage Frameworks to Test bundle */, @@ -262,7 +769,7 @@ /* Begin PBXFileReference section */ 1C05CF1E1AC1D7EB00687AC9 /* ARTRealtime+Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "ARTRealtime+Private.h"; sourceTree = ""; }; - 1C118A5B1AE63D89006AD19E /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 1C118A5B1AE63D89006AD19E /* Info-iOS.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "Info-iOS.plist"; sourceTree = ""; }; 1C2B0FFB1B136A6D00E3633C /* ARTPresenceMap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ARTPresenceMap.h; sourceTree = ""; }; 1C2B0FFC1B136A6D00E3633C /* ARTPresenceMap.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ARTPresenceMap.m; sourceTree = ""; }; 1C55427C1B148306003068DB /* ARTStatus.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ARTStatus.m; sourceTree = ""; }; @@ -273,14 +780,12 @@ 1CD8DC9D1B1C7315007EAF36 /* ARTDefault.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ARTDefault.h; sourceTree = ""; }; 1CD8DC9E1B1C7315007EAF36 /* ARTDefault.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ARTDefault.m; sourceTree = ""; }; 3F3D07905A62187E022923A8 /* Pods.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 5E500FB9167E550DE1AE7F51 /* Pods-AblySpec.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AblySpec.debug.xcconfig"; path = "Pods/Target Support Files/Pods-AblySpec/Pods-AblySpec.debug.xcconfig"; sourceTree = ""; }; - 835951C92224788FBB2948C4 /* Pods-AblySpec.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AblySpec.release.xcconfig"; path = "Pods/Target Support Files/Pods-AblySpec/Pods-AblySpec.release.xcconfig"; sourceTree = ""; }; 850BFB4A1B79323C009D0ADD /* ARTPaginatedResult.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ARTPaginatedResult.h; sourceTree = ""; }; 850BFB4B1B79323C009D0ADD /* ARTPaginatedResult.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ARTPaginatedResult.m; sourceTree = ""; }; 851674EE1B7BA5CD00D35169 /* Stats.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Stats.swift; sourceTree = ""; }; 853ED7C31B7A1A3C006F1C6F /* RestClientStats.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RestClientStats.swift; sourceTree = ""; }; - 856AAC8A1B6E304B00B07119 /* AblySpec.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = AblySpec.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; - 856AAC8E1B6E304B00B07119 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 856AAC8A1B6E304B00B07119 /* Ably-iOS-Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "Ably-iOS-Tests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; + 856AAC8E1B6E304B00B07119 /* Info-iOS.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "Info-iOS.plist"; sourceTree = ""; }; 856AAC951B6E30C800B07119 /* AblySpec-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "AblySpec-Bridging-Header.h"; sourceTree = ""; }; 856AAC961B6E30C800B07119 /* TestUtilities.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TestUtilities.swift; sourceTree = ""; }; 856AAC981B6E312F00B07119 /* RestClient.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RestClient.swift; sourceTree = ""; }; @@ -292,14 +797,14 @@ 960D07951A46FFC300ED8C8C /* ARTRest+Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "ARTRest+Private.h"; sourceTree = ""; }; 961343D61A42E0B7006DC822 /* ARTClientOptions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ARTClientOptions.h; sourceTree = ""; }; 961343D71A42E0B7006DC822 /* ARTClientOptions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ARTClientOptions.m; sourceTree = ""; }; - 967A431F1A39AEAF00E4CE23 /* ARTNSArray+ARTFunctional.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "ARTNSArray+ARTFunctional.h"; sourceTree = ""; }; - 967A43201A39AEAF00E4CE23 /* ARTNSArray+ARTFunctional.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "ARTNSArray+ARTFunctional.m"; sourceTree = ""; }; + 967A431F1A39AEAF00E4CE23 /* ARTNSArray+ARTFunctional.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "ARTNSArray+ARTFunctional.h"; path = "Private/ARTNSArray+ARTFunctional.h"; sourceTree = ""; }; + 967A43201A39AEAF00E4CE23 /* ARTNSArray+ARTFunctional.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "ARTNSArray+ARTFunctional.m"; path = "Private/ARTNSArray+ARTFunctional.m"; sourceTree = ""; }; 96A507931A370F860077CDF8 /* ARTStats.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ARTStats.h; sourceTree = ""; }; 96A507941A370F860077CDF8 /* ARTStats.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ARTStats.m; sourceTree = ""; }; 96A5079F1A377AA50077CDF8 /* ARTPresenceMessage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ARTPresenceMessage.h; sourceTree = ""; }; 96A507A01A377AA50077CDF8 /* ARTPresenceMessage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ARTPresenceMessage.m; sourceTree = ""; }; - 96A507A31A377DE90077CDF8 /* ARTNSDictionary+ARTDictionaryUtil.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "ARTNSDictionary+ARTDictionaryUtil.h"; sourceTree = ""; }; - 96A507A41A377DE90077CDF8 /* ARTNSDictionary+ARTDictionaryUtil.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "ARTNSDictionary+ARTDictionaryUtil.m"; sourceTree = ""; }; + 96A507A31A377DE90077CDF8 /* ARTNSDictionary+ARTDictionaryUtil.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "ARTNSDictionary+ARTDictionaryUtil.h"; path = "Private/ARTNSDictionary+ARTDictionaryUtil.h"; sourceTree = ""; }; + 96A507A41A377DE90077CDF8 /* ARTNSDictionary+ARTDictionaryUtil.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "ARTNSDictionary+ARTDictionaryUtil.m"; path = "Private/ARTNSDictionary+ARTDictionaryUtil.m"; sourceTree = ""; }; 96A507A71A37806A0077CDF8 /* ARTEncoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ARTEncoder.h; sourceTree = ""; }; 96A507AB1A3780F60077CDF8 /* ARTJsonEncoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ARTJsonEncoder.h; sourceTree = ""; }; 96A507AC1A3780F60077CDF8 /* ARTJsonEncoder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ARTJsonEncoder.m; sourceTree = ""; }; @@ -324,12 +829,39 @@ 96E408421A38939E00087F77 /* ARTProtocolMessage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ARTProtocolMessage.m; sourceTree = ""; }; 96E408451A3895E800087F77 /* ARTWebSocketTransport.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ARTWebSocketTransport.h; sourceTree = ""; }; 96E408461A3895E800087F77 /* ARTWebSocketTransport.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ARTWebSocketTransport.m; sourceTree = ""; }; - D3AD0EBB215E2FB000312105 /* ARTNSString+ARTUtil.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "ARTNSString+ARTUtil.h"; sourceTree = ""; }; - D3AD0EBC215E2FB000312105 /* ARTNSString+ARTUtil.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "ARTNSString+ARTUtil.m"; sourceTree = ""; }; + D3AD0EBB215E2FB000312105 /* ARTNSString+ARTUtil.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "ARTNSString+ARTUtil.h"; path = "Private/ARTNSString+ARTUtil.h"; sourceTree = ""; }; + D3AD0EBC215E2FB000312105 /* ARTNSString+ARTUtil.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = "ARTNSString+ARTUtil.m"; path = "Private/ARTNSString+ARTUtil.m"; sourceTree = ""; }; + D7093C0A219E2DB200723F17 /* Ably-macOS-Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "Ably-macOS-Tests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; + D7093C0E219E2DB200723F17 /* Info-macOS.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "Info-macOS.plist"; sourceTree = ""; }; + D7093C30219ED41A00723F17 /* Nimble.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Nimble.framework; path = Carthage/Build/Mac/Nimble.framework; sourceTree = ""; }; + D7093C31219ED41A00723F17 /* Aspects.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Aspects.framework; path = Carthage/Build/Mac/Aspects.framework; sourceTree = ""; }; + D7093C32219ED41A00723F17 /* Quick.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Quick.framework; path = Carthage/Build/Mac/Quick.framework; sourceTree = ""; }; + D7093C3F219EDC3C00723F17 /* SwiftyJSON.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SwiftyJSON.framework; path = Carthage/Build/Mac/SwiftyJSON.framework; sourceTree = ""; }; + D7093C60219EE1AE00723F17 /* Ably-tvOS-Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "Ably-tvOS-Tests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; + D7093C64219EE1AE00723F17 /* Info-tvOS.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "Info-tvOS.plist"; sourceTree = ""; }; + D7093C88219EE3C900723F17 /* Quick.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Quick.framework; path = Carthage/Build/tvOS/Quick.framework; sourceTree = ""; }; + D7093C89219EE3C900723F17 /* Nimble.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Nimble.framework; path = Carthage/Build/tvOS/Nimble.framework; sourceTree = ""; }; + D7093C8A219EE3C900723F17 /* SwiftyJSON.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SwiftyJSON.framework; path = Carthage/Build/tvOS/SwiftyJSON.framework; sourceTree = ""; }; + D7093C8E219EE3D800723F17 /* Aspects.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Aspects.framework; path = Carthage/Build/iOS/Aspects.framework; sourceTree = ""; }; + D7093CA8219EFA8A00723F17 /* MockDeviceStorage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockDeviceStorage.swift; sourceTree = ""; }; D70EAAEB1BC3376200CD8B9E /* ARTRestChannel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ARTRestChannel.h; sourceTree = ""; }; D70EAAEC1BC3376200CD8B9E /* ARTRestChannel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ARTRestChannel.m; sourceTree = ""; }; D70EECAA1FEAF331008A50CD /* ARTPendingMessage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ARTPendingMessage.h; sourceTree = ""; }; D70EECAB1FEAF331008A50CD /* ARTPendingMessage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ARTPendingMessage.m; sourceTree = ""; }; + D710D45B219495E2008F54AD /* Ably.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Ably.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D710D45E219495E2008F54AD /* Info-macOS.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "Info-macOS.plist"; sourceTree = ""; }; + D710D475219495FC008F54AD /* Ably.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Ably.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D710D478219495FC008F54AD /* Info-tvOS.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "Info-tvOS.plist"; sourceTree = ""; }; + D710D6A22194A09C008F54AD /* SAMKeychain.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SAMKeychain.framework; path = Carthage/Build/Mac/SAMKeychain.framework; sourceTree = ""; }; + D710D6A32194A09D008F54AD /* KSCrash.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = KSCrash.framework; path = Carthage/Build/Mac/KSCrash.framework; sourceTree = ""; }; + D710D6A42194A09D008F54AD /* msgpack.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = msgpack.framework; path = Carthage/Build/Mac/msgpack.framework; sourceTree = ""; }; + D710D6A52194A09D008F54AD /* SocketRocket.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SocketRocket.framework; path = Carthage/Build/Mac/SocketRocket.framework; sourceTree = ""; }; + D710D6A62194A09D008F54AD /* ULID.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ULID.framework; path = Carthage/Build/Mac/ULID.framework; sourceTree = ""; }; + D710D6AC2194A0B1008F54AD /* SocketRocket.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SocketRocket.framework; path = Carthage/Build/tvOS/SocketRocket.framework; sourceTree = ""; }; + D710D6AD2194A0B2008F54AD /* ULID.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ULID.framework; path = Carthage/Build/tvOS/ULID.framework; sourceTree = ""; }; + D710D6AE2194A0B2008F54AD /* SAMKeychain.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SAMKeychain.framework; path = Carthage/Build/tvOS/SAMKeychain.framework; sourceTree = ""; }; + D710D6AF2194A0B2008F54AD /* KSCrash.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = KSCrash.framework; path = Carthage/Build/tvOS/KSCrash.framework; sourceTree = ""; }; + D710D6B82194A1FD008F54AD /* msgpack.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = msgpack.framework; path = Carthage/Build/tvOS/msgpack.framework; sourceTree = ""; }; D714A63D1C74D4B2002F2CA0 /* NSObject+TestSuite.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "NSObject+TestSuite.swift"; sourceTree = ""; }; D714A63F1C75F0C5002F2CA0 /* ARTWebSocketTransport+Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "ARTWebSocketTransport+Private.h"; sourceTree = ""; }; D71966E21E5DF360000974DD /* ARTPushActivationStateMachine.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ARTPushActivationStateMachine.h; sourceTree = ""; }; @@ -384,8 +916,10 @@ D7534C311D79E5C20054C182 /* Ably.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Ably.h; sourceTree = ""; }; D7588AF11BFF91B800BB8279 /* ARTURLSessionServerTrust.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ARTURLSessionServerTrust.h; sourceTree = ""; }; D7588AF21BFF91B800BB8279 /* ARTURLSessionServerTrust.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ARTURLSessionServerTrust.m; sourceTree = ""; }; - D75A3F191DDE5B62002A4AAD /* ARTGCD.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ARTGCD.h; sourceTree = ""; }; - D75A3F1A1DDE5B62002A4AAD /* ARTGCD.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ARTGCD.m; sourceTree = ""; }; + D75A3F191DDE5B62002A4AAD /* ARTGCD.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ARTGCD.h; path = Private/ARTGCD.h; sourceTree = ""; }; + D75A3F1A1DDE5B62002A4AAD /* ARTGCD.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ARTGCD.m; path = Private/ARTGCD.m; sourceTree = ""; }; + D75B85F921BAF8F900FD8DD2 /* Ably.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Ably.xcconfig; sourceTree = ""; }; + D75B861521BB48C900FD8DD2 /* Aspects.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Aspects.framework; path = Carthage/Build/tvOS/Aspects.framework; sourceTree = ""; }; D75F49C2205ACFEC003DE04F /* ARTDeviceStorage.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ARTDeviceStorage.h; sourceTree = ""; }; D75F49C6205AD4D4003DE04F /* SAMKeychain.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SAMKeychain.framework; path = Carthage/Build/iOS/SAMKeychain.framework; sourceTree = ""; }; D768C6AA1E4B5B0200436011 /* ARTDevicePushDetails.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ARTDevicePushDetails.h; sourceTree = ""; }; @@ -445,6 +979,9 @@ D7E0FEB7211DE94700659FAA /* ARTNSMutableRequest+ARTRest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "ARTNSMutableRequest+ARTRest.m"; sourceTree = ""; }; D7EBE5A21BE8391E0086E675 /* RealtimeClientConnection.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RealtimeClientConnection.swift; sourceTree = ""; }; D7EE14F51F07964500C178D5 /* Version.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Version.xcconfig; sourceTree = ""; }; + D7EEE6AB21A6E048000E8474 /* SwiftyJSON.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SwiftyJSON.framework; path = Carthage/Build/iOS/SwiftyJSON.framework; sourceTree = ""; }; + D7EEE6AC21A6E048000E8474 /* Nimble.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Nimble.framework; path = Carthage/Build/iOS/Nimble.framework; sourceTree = ""; }; + D7EEE6AD21A6E048000E8474 /* Quick.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Quick.framework; path = Carthage/Build/iOS/Quick.framework; sourceTree = ""; }; D7F1D3711BF4DE07001A4B5E /* ARTRestPresence.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ARTRestPresence.h; sourceTree = ""; }; D7F1D3721BF4DE07001A4B5E /* ARTRestPresence.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ARTRestPresence.m; sourceTree = ""; }; D7F1D3751BF4DE72001A4B5E /* ARTRealtimePresence.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ARTRealtimePresence.h; sourceTree = ""; }; @@ -458,8 +995,8 @@ EB20F8D61C653F1E00EF3978 /* ARTPresence+Private.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "ARTPresence+Private.h"; sourceTree = ""; }; EB2D5A901CC941A700AD1A67 /* ARTRealtimeTransport.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ARTRealtimeTransport.m; sourceTree = ""; }; EB2D84F61CD75CCE00F23CDA /* ARTReachability.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ARTReachability.h; sourceTree = ""; }; - EB2D84FC1CD769B700F23CDA /* ARTOSReachability.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ARTOSReachability.m; sourceTree = ""; }; - EB2D85001CD769C800F23CDA /* ARTOSReachability.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ARTOSReachability.h; sourceTree = ""; }; + EB2D84FC1CD769B700F23CDA /* ARTOSReachability.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ARTOSReachability.m; path = Private/ARTOSReachability.m; sourceTree = ""; }; + EB2D85001CD769C800F23CDA /* ARTOSReachability.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ARTOSReachability.h; path = Private/ARTOSReachability.h; sourceTree = ""; }; EB3239421C59AB0400892664 /* ARTDataEncoder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ARTDataEncoder.m; sourceTree = ""; }; EB3239461C59AB2C00892664 /* ARTDataEncoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ARTDataEncoder.h; sourceTree = ""; }; EB4B1A0B1F2190BB00467F07 /* ARTRestChannels+Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "ARTRestChannels+Private.h"; sourceTree = ""; }; @@ -485,7 +1022,6 @@ EBFFAC181E97919C003E7326 /* ARTLocalDevice+Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "ARTLocalDevice+Private.h"; sourceTree = ""; }; EBFFAC1A1E97EF5C003E7326 /* ARTPushAdmin+Private.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "ARTPushAdmin+Private.h"; sourceTree = ""; }; EBFFAC1C1E97FB23003E7326 /* ARTPush+Private.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "ARTPush+Private.h"; sourceTree = ""; }; - F8F23F59DB2791861CD541BF /* Pods_AblySpec.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_AblySpec.framework; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -493,11 +1029,11 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - D736A0CC1F916577005ABE81 /* KSCrash.framework in Frameworks */, - D736A0CD1F916577005ABE81 /* msgpack.framework in Frameworks */, - D736A0CE1F916577005ABE81 /* SocketRocket.framework in Frameworks */, 856AAC8F1B6E304B00B07119 /* Ably.framework in Frameworks */, - 6CF25F641B2BC9583DA0598F /* Pods_AblySpec.framework in Frameworks */, + D7EEE6AA21A6E048000E8474 /* Aspects.framework in Frameworks */, + D7EEE6B021A6E048000E8474 /* Quick.framework in Frameworks */, + D7EEE6AF21A6E048000E8474 /* Nimble.framework in Frameworks */, + D7EEE6AE21A6E048000E8474 /* SwiftyJSON.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -513,6 +1049,54 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + D7093C07219E2DB200723F17 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + D7093C0F219E2DB200723F17 /* Ably.framework in Frameworks */, + D7093C34219ED41A00723F17 /* Aspects.framework in Frameworks */, + D7093C35219ED41A00723F17 /* Quick.framework in Frameworks */, + D7093C33219ED41A00723F17 /* Nimble.framework in Frameworks */, + D7093C40219EDC3C00723F17 /* SwiftyJSON.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + D7093C5D219EE1AE00723F17 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + D7093C65219EE1AE00723F17 /* Ably.framework in Frameworks */, + D75B861621BB48C900FD8DD2 /* Aspects.framework in Frameworks */, + D7093C8B219EE3C900723F17 /* Quick.framework in Frameworks */, + D7093C8C219EE3C900723F17 /* Nimble.framework in Frameworks */, + D7093C8D219EE3C900723F17 /* SwiftyJSON.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + D710D458219495E2008F54AD /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + D710D6A72194A09D008F54AD /* SAMKeychain.framework in Frameworks */, + D710D6A82194A09D008F54AD /* KSCrash.framework in Frameworks */, + D710D6A92194A09D008F54AD /* msgpack.framework in Frameworks */, + D710D6AA2194A09D008F54AD /* SocketRocket.framework in Frameworks */, + D710D6AB2194A09D008F54AD /* ULID.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + D710D472219495FC008F54AD /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + D710D6B92194A1FD008F54AD /* msgpack.framework in Frameworks */, + D710D6B42194A1FD008F54AD /* KSCrash.framework in Frameworks */, + D710D6B52194A1FD008F54AD /* SAMKeychain.framework in Frameworks */, + D710D6B62194A1FD008F54AD /* SocketRocket.framework in Frameworks */, + D710D6B72194A1FD008F54AD /* ULID.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ @@ -520,8 +1104,11 @@ isa = PBXGroup; children = ( 856AAC9A1B6E326E00B07119 /* ably-common */, - 856AAC8E1B6E304B00B07119 /* Info.plist */, + 856AAC8E1B6E304B00B07119 /* Info-iOS.plist */, + D7093C0E219E2DB200723F17 /* Info-macOS.plist */, + D7093C64219EE1AE00723F17 /* Info-tvOS.plist */, 856AAC961B6E30C800B07119 /* TestUtilities.swift */, + D7093CA8219EFA8A00723F17 /* MockDeviceStorage.swift */, D780846C1C68B3E50083009D /* NSObject+TestSuite.h */, D780846D1C68B3E50083009D /* NSObject+TestSuite.m */, D714A63D1C74D4B2002F2CA0 /* NSObject+TestSuite.swift */, @@ -553,12 +1140,12 @@ 96BF61271A35B2AB004CF2B3 = { isa = PBXGroup; children = ( + D75B85F921BAF8F900FD8DD2 /* Ably.xcconfig */, D7EE14F51F07964500C178D5 /* Version.xcconfig */, 96BF61331A35B2AB004CF2B3 /* Source */, 856AAC8B1B6E304B00B07119 /* Spec */, 96BF61321A35B2AB004CF2B3 /* Products */, FAFEC5BB8312EB69E84C28D4 /* Frameworks */, - C2844A182B571552271C6EE2 /* Pods */, ); indentWidth = 4; sourceTree = ""; @@ -568,7 +1155,11 @@ isa = PBXGroup; children = ( 96BF61311A35B2AB004CF2B3 /* Ably.framework */, - 856AAC8A1B6E304B00B07119 /* AblySpec.xctest */, + 856AAC8A1B6E304B00B07119 /* Ably-iOS-Tests.xctest */, + D710D45B219495E2008F54AD /* Ably.framework */, + D710D475219495FC008F54AD /* Ably.framework */, + D7093C0A219E2DB200723F17 /* Ably-macOS-Tests.xctest */, + D7093C60219EE1AE00723F17 /* Ably-tvOS-Tests.xctest */, ); name = Products; sourceTree = ""; @@ -598,20 +1189,13 @@ isa = PBXGroup; children = ( 85F0A60C1B6D03B700EFF45A /* Ably.modulemap */, - 1C118A5B1AE63D89006AD19E /* Info.plist */, + 1C118A5B1AE63D89006AD19E /* Info-iOS.plist */, + D710D45E219495E2008F54AD /* Info-macOS.plist */, + D710D478219495FC008F54AD /* Info-tvOS.plist */, ); name = "Supporting Files"; sourceTree = ""; }; - C2844A182B571552271C6EE2 /* Pods */ = { - isa = PBXGroup; - children = ( - 5E500FB9167E550DE1AE7F51 /* Pods-AblySpec.debug.xcconfig */, - 835951C92224788FBB2948C4 /* Pods-AblySpec.release.xcconfig */, - ); - name = Pods; - sourceTree = ""; - }; D71966E61E5DFFB2000974DD /* Admin */ = { isa = PBXGroup; children = ( @@ -748,8 +1332,8 @@ 96A507A01A377AA50077CDF8 /* ARTPresenceMessage.m */, 1C2B0FFB1B136A6D00E3633C /* ARTPresenceMap.h */, 1C2B0FFC1B136A6D00E3633C /* ARTPresenceMap.m */, - EB3239421C59AB0400892664 /* ARTDataEncoder.m */, EB3239461C59AB2C00892664 /* ARTDataEncoder.h */, + EB3239421C59AB0400892664 /* ARTDataEncoder.m */, 96A507931A370F860077CDF8 /* ARTStats.h */, 96A507941A370F860077CDF8 /* ARTStats.m */, 96BF61551A35B40E004CF2B3 /* ARTStatus.h */, @@ -763,8 +1347,8 @@ D746AE341BBC2B60003ECEF8 /* Utilities */ = { isa = PBXGroup; children = ( - EB1AE0CB1C5C1EB200D62250 /* ARTEventEmitter+Private.h */, D746AE3E1BBC5B14003ECEF8 /* ARTEventEmitter.h */, + EB1AE0CB1C5C1EB200D62250 /* ARTEventEmitter+Private.h */, D746AE3F1BBC5B14003ECEF8 /* ARTEventEmitter.m */, 960D07911A45F1D800ED8C8C /* ARTCrypto.h */, EB5E058C1C77027600A48B39 /* ARTCrypto+Private.h */, @@ -858,13 +1442,34 @@ FAFEC5BB8312EB69E84C28D4 /* Frameworks */ = { isa = PBXGroup; children = ( + D75B861521BB48C900FD8DD2 /* Aspects.framework */, + D7EEE6AC21A6E048000E8474 /* Nimble.framework */, + D7EEE6AD21A6E048000E8474 /* Quick.framework */, + D7EEE6AB21A6E048000E8474 /* SwiftyJSON.framework */, + D7093C8E219EE3D800723F17 /* Aspects.framework */, + D7093C3F219EDC3C00723F17 /* SwiftyJSON.framework */, + D7093C89219EE3C900723F17 /* Nimble.framework */, + D7093C88219EE3C900723F17 /* Quick.framework */, + D7093C8A219EE3C900723F17 /* SwiftyJSON.framework */, + D7093C31219ED41A00723F17 /* Aspects.framework */, + D7093C30219ED41A00723F17 /* Nimble.framework */, + D7093C32219ED41A00723F17 /* Quick.framework */, + D710D6B82194A1FD008F54AD /* msgpack.framework */, + D710D6A32194A09D008F54AD /* KSCrash.framework */, + D710D6AF2194A0B2008F54AD /* KSCrash.framework */, + D710D6AE2194A0B2008F54AD /* SAMKeychain.framework */, + D710D6AC2194A0B1008F54AD /* SocketRocket.framework */, + D710D6AD2194A0B2008F54AD /* ULID.framework */, + D710D6A42194A09D008F54AD /* msgpack.framework */, D75F49C6205AD4D4003DE04F /* SAMKeychain.framework */, D77A0C951FFEEF0300711131 /* ULID.framework */, D736A0C61F916553005ABE81 /* KSCrash.framework */, D736A0C71F916553005ABE81 /* msgpack.framework */, D736A0C81F916553005ABE81 /* SocketRocket.framework */, + D710D6A22194A09C008F54AD /* SAMKeychain.framework */, + D710D6A52194A09D008F54AD /* SocketRocket.framework */, + D710D6A62194A09D008F54AD /* ULID.framework */, 3F3D07905A62187E022923A8 /* Pods.framework */, - F8F23F59DB2791861CD541BF /* Pods_AblySpec.framework */, ); name = Frameworks; sourceTree = ""; @@ -990,33 +1595,267 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + D710D456219495E2008F54AD /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + D710D51C21949C42008F54AD /* ARTLocalDevice.h in Headers */, + D710D4DA21949BF9008F54AD /* ARTPendingMessage.h in Headers */, + D710D4B321949B47008F54AD /* ARTRestChannel+Private.h in Headers */, + D710D67B21949E99008F54AD /* ARTGCD.h in Headers */, + D710D61C21949DEC008F54AD /* ARTPaginatedResult+Private.h in Headers */, + D710D58621949D29008F54AD /* ARTChannels.h in Headers */, + D710D64621949E61008F54AD /* ARTCrypto+Private.h in Headers */, + D710D59121949D29008F54AD /* ARTTypes.h in Headers */, + D710D55621949C8C008F54AD /* ARTPushActivationState.h in Headers */, + D710D50921949C18008F54AD /* ARTRealtimeChannels+Private.h in Headers */, + D710D58421949D28008F54AD /* ARTClientOptions.h in Headers */, + D710D69121949EFF008F54AD /* ARTEncoder.h in Headers */, + D710D5BB21949D4F008F54AD /* ARTChannel+Private.h in Headers */, + D710D5BF21949D4F008F54AD /* ARTPresenceMessage+Private.h in Headers */, + D710D69421949EFF008F54AD /* ARTLog.h in Headers */, + D710D5BC21949D4F008F54AD /* ARTChannels+Private.h in Headers */, + D710D60F21949DDB008F54AD /* ARTHTTPPaginatedResponse.h in Headers */, + D710D58A21949D29008F54AD /* ARTMessage.h in Headers */, + D710D68721949ED5008F54AD /* ARTNSArray+ARTFunctional.h in Headers */, + D710D5BA21949D4F008F54AD /* ARTClientOptions+Private.h in Headers */, + D710D58521949D28008F54AD /* ARTChannel.h in Headers */, + D710D67E21949EA2008F54AD /* ARTOSReachability.h in Headers */, + D710D55521949C8C008F54AD /* ARTPushActivationStateMachine.h in Headers */, + D710D58C21949D29008F54AD /* ARTPresenceMessage.h in Headers */, + D710D50521949C18008F54AD /* ARTRealtimeChannel+Private.h in Headers */, + D710D58E21949D29008F54AD /* ARTDataEncoder.h in Headers */, + D710D49221949AB7008F54AD /* ARTRest+Private.h in Headers */, + D710D58721949D29008F54AD /* ARTChannelOptions.h in Headers */, + D710D64521949E61008F54AD /* ARTEventEmitter+Private.h in Headers */, + D710D4D121949BC0008F54AD /* ARTPresence+Private.h in Headers */, + D710D69021949EFF008F54AD /* ARTCrypto.h in Headers */, + D710D68121949EB3008F54AD /* ARTReachability.h in Headers */, + D710D58921949D29008F54AD /* ARTBaseMessage.h in Headers */, + D710D55721949C8C008F54AD /* ARTPushActivationEvent.h in Headers */, + D710D4CE21949BB2008F54AD /* ARTWebSocketTransport+Private.h in Headers */, + D710D56C21949CB9008F54AD /* ARTPushChannelSubscriptions.h in Headers */, + D710D56721949CA1008F54AD /* ARTPushActivationStateMachine+Private.h in Headers */, + D710D68D21949EED008F54AD /* ARTEventEmitter.h in Headers */, + D710D60C21949DDB008F54AD /* ARTHttp.h in Headers */, + D710D69321949EFF008F54AD /* ARTMsgPackEncoder.h in Headers */, + D710D69221949EFF008F54AD /* ARTJsonEncoder.h in Headers */, + D710D5B921949D4F008F54AD /* ARTTokenParams+Private.h in Headers */, + D710D51821949C42008F54AD /* ARTPushChannelSubscription.h in Headers */, + D710D4B421949B47008F54AD /* ARTAuth+Private.h in Headers */, + D710D4C221949B9C008F54AD /* ARTRealtimeTransport.h in Headers */, + D710D58121949D28008F54AD /* ARTTokenRequest.h in Headers */, + D710D68421949ECE008F54AD /* ARTNSDictionary+ARTDictionaryUtil.h in Headers */, + D710D50821949C18008F54AD /* ARTRealtimePresence+Private.h in Headers */, + D710D4A821949ADF008F54AD /* ARTRestPresence.h in Headers */, + D710D5BD21949D4F008F54AD /* ARTProtocolMessage+Private.h in Headers */, + D710D4BC21949B59008F54AD /* ARTRestChannels+Private.h in Headers */, + D710D57F21949D28008F54AD /* ARTAuthOptions.h in Headers */, + D710D51A21949C42008F54AD /* ARTDevicePushDetails.h in Headers */, + D710D58F21949D29008F54AD /* ARTStats.h in Headers */, + D710D4B521949B47008F54AD /* ARTRestPresence+Private.h in Headers */, + D710D4A921949ADF008F54AD /* ARTRestChannels.h in Headers */, + D710D4D821949BF9008F54AD /* ARTRealtimePresence.h in Headers */, + D710D48F21949AAE008F54AD /* ARTRest.h in Headers */, + D710D5B821949D4F008F54AD /* ARTAuthOptions+Private.h in Headers */, + D710D51D21949C42008F54AD /* ARTDeviceStorage.h in Headers */, + D710D60D21949DDB008F54AD /* ARTDataQuery.h in Headers */, + D710D58221949D28008F54AD /* ARTTokenParams.h in Headers */, + D710D51921949C42008F54AD /* ARTDeviceDetails.h in Headers */, + D710D50621949C18008F54AD /* ARTConnection+Private.h in Headers */, + D710D54E21949C66008F54AD /* ARTNSMutableRequest+ARTPush.h in Headers */, + D710D67821949E8F008F54AD /* ARTSentry.h in Headers */, + D710D48921949A85008F54AD /* ARTConstants.h in Headers */, + D710D60921949DA9008F54AD /* ARTURLSessionServerTrust.h in Headers */, + D710D51621949C42008F54AD /* ARTPush.h in Headers */, + D710D4D521949BF9008F54AD /* ARTRealtimeChannel.h in Headers */, + D710D51721949C42008F54AD /* ARTPushChannel.h in Headers */, + D710D51E21949C42008F54AD /* ARTLocalDeviceStorage.h in Headers */, + D710D50721949C18008F54AD /* ARTConnectionDetails+Private.h in Headers */, + D7BDDD3E21959CC100CC0632 /* CompatibilityMacros.h in Headers */, + D710D51B21949C42008F54AD /* ARTDeviceIdentityTokenDetails.h in Headers */, + D710D48021949A42008F54AD /* ARTDefault.h in Headers */, + D710D58021949D28008F54AD /* ARTAuthDetails.h in Headers */, + D710D54D21949C66008F54AD /* ARTLocalDevice+Private.h in Headers */, + D710D4D421949BF9008F54AD /* ARTRealtime.h in Headers */, + D710D58821949D29008F54AD /* ARTProtocolMessage.h in Headers */, + D710D47D21949A27008F54AD /* Ably.h in Headers */, + D710D56A21949CB9008F54AD /* ARTPushAdmin.h in Headers */, + D710D48321949A4E008F54AD /* ARTDefault+Private.h in Headers */, + D710D59021949D29008F54AD /* ARTStatus.h in Headers */, + D710D61D21949DEC008F54AD /* ARTHTTPPaginatedResponse+Private.h in Headers */, + D710D58321949D28008F54AD /* ARTTokenDetails.h in Headers */, + D710D54C21949C66008F54AD /* ARTPush+Private.h in Headers */, + D710D68A21949EDA008F54AD /* ARTNSDate+ARTUtil.h in Headers */, + D710D4D721949BF9008F54AD /* ARTConnectionDetails.h in Headers */, + D710D4DB21949BF9008F54AD /* ARTRealtimeChannels.h in Headers */, + D710D61021949DDB008F54AD /* ARTFallback.h in Headers */, + D710D4C321949B9C008F54AD /* ARTWebSocketTransport.h in Headers */, + D710D4D621949BF9008F54AD /* ARTConnection.h in Headers */, + D710D50421949C18008F54AD /* ARTRealtime+Private.h in Headers */, + D710D58D21949D29008F54AD /* ARTPresenceMap.h in Headers */, + D710D56B21949CB9008F54AD /* ARTPushDeviceRegistrations.h in Headers */, + D710D62021949DEC008F54AD /* ARTNSMutableURLRequest+ARTPaginated.h in Headers */, + D710D4B021949AF8008F54AD /* ARTAuth.h in Headers */, + D710D58B21949D29008F54AD /* ARTPresence.h in Headers */, + D710D4D921949BF9008F54AD /* ARTQueuedMessage.h in Headers */, + D710D61F21949DEC008F54AD /* ARTNSHTTPURLResponse+ARTPaginated.h in Headers */, + D710D69F21949F0D008F54AD /* ARTJsonLikeEncoder.h in Headers */, + D710D4A721949ADF008F54AD /* ARTRestChannel.h in Headers */, + D710D64721949E61008F54AD /* ARTLog+Private.h in Headers */, + D710D57C21949CC8008F54AD /* ARTPushAdmin+Private.h in Headers */, + D710D67521949E80008F54AD /* ARTNSString+ARTUtil.h in Headers */, + D710D61B21949DEC008F54AD /* ARTDataQuery+Private.h in Headers */, + D710D61E21949DEC008F54AD /* ARTFallback+Private.h in Headers */, + D710D60E21949DDB008F54AD /* ARTPaginatedResult.h in Headers */, + D710D4BF21949B6C008F54AD /* ARTNSMutableRequest+ARTRest.h in Headers */, + D710D5BE21949D4F008F54AD /* ARTBaseMessage+Private.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + D710D470219495FC008F54AD /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + D710D52E21949C44008F54AD /* ARTLocalDevice.h in Headers */, + D710D4EA21949BFB008F54AD /* ARTPendingMessage.h in Headers */, + D710D4B921949B48008F54AD /* ARTRestChannel+Private.h in Headers */, + D710D67D21949E99008F54AD /* ARTGCD.h in Headers */, + D710D62821949DED008F54AD /* ARTPaginatedResult+Private.h in Headers */, + D710D5AC21949D2A008F54AD /* ARTChannels.h in Headers */, + D710D64C21949E62008F54AD /* ARTCrypto+Private.h in Headers */, + D710D5B721949D2A008F54AD /* ARTTypes.h in Headers */, + D710D55C21949C8D008F54AD /* ARTPushActivationState.h in Headers */, + D710D51521949C19008F54AD /* ARTRealtimeChannels+Private.h in Headers */, + D710D5AA21949D2A008F54AD /* ARTClientOptions.h in Headers */, + D710D69B21949F00008F54AD /* ARTEncoder.h in Headers */, + D710D5CB21949D50008F54AD /* ARTChannel+Private.h in Headers */, + D710D5CF21949D50008F54AD /* ARTPresenceMessage+Private.h in Headers */, + D710D69E21949F00008F54AD /* ARTLog.h in Headers */, + D710D5CC21949D50008F54AD /* ARTChannels+Private.h in Headers */, + D710D61921949DDC008F54AD /* ARTHTTPPaginatedResponse.h in Headers */, + D710D5B021949D2A008F54AD /* ARTMessage.h in Headers */, + D710D68921949ED6008F54AD /* ARTNSArray+ARTFunctional.h in Headers */, + D710D5CA21949D50008F54AD /* ARTClientOptions+Private.h in Headers */, + D710D5AB21949D2A008F54AD /* ARTChannel.h in Headers */, + D710D68021949EA3008F54AD /* ARTOSReachability.h in Headers */, + D710D55B21949C8D008F54AD /* ARTPushActivationStateMachine.h in Headers */, + D710D5B221949D2A008F54AD /* ARTPresenceMessage.h in Headers */, + D710D51121949C19008F54AD /* ARTRealtimeChannel+Private.h in Headers */, + D710D5B421949D2A008F54AD /* ARTDataEncoder.h in Headers */, + D710D49421949AB8008F54AD /* ARTRest+Private.h in Headers */, + D710D5AD21949D2A008F54AD /* ARTChannelOptions.h in Headers */, + D710D64B21949E62008F54AD /* ARTEventEmitter+Private.h in Headers */, + D710D4D321949BC1008F54AD /* ARTPresence+Private.h in Headers */, + D710D69A21949F00008F54AD /* ARTCrypto.h in Headers */, + D710D68321949EB4008F54AD /* ARTReachability.h in Headers */, + D710D5AF21949D2A008F54AD /* ARTBaseMessage.h in Headers */, + D710D55D21949C8D008F54AD /* ARTPushActivationEvent.h in Headers */, + D710D4D021949BB3008F54AD /* ARTWebSocketTransport+Private.h in Headers */, + D710D57221949CBA008F54AD /* ARTPushChannelSubscriptions.h in Headers */, + D710D56921949CA2008F54AD /* ARTPushActivationStateMachine+Private.h in Headers */, + D710D68F21949EEE008F54AD /* ARTEventEmitter.h in Headers */, + D710D61621949DDC008F54AD /* ARTHttp.h in Headers */, + D710D69D21949F00008F54AD /* ARTMsgPackEncoder.h in Headers */, + D710D69C21949F00008F54AD /* ARTJsonEncoder.h in Headers */, + D710D5C921949D50008F54AD /* ARTTokenParams+Private.h in Headers */, + D710D52A21949C44008F54AD /* ARTPushChannelSubscription.h in Headers */, + D710D4BA21949B48008F54AD /* ARTAuth+Private.h in Headers */, + D710D4C621949B9D008F54AD /* ARTRealtimeTransport.h in Headers */, + D710D5A721949D2A008F54AD /* ARTTokenRequest.h in Headers */, + D710D68621949ECF008F54AD /* ARTNSDictionary+ARTDictionaryUtil.h in Headers */, + D710D51421949C19008F54AD /* ARTRealtimePresence+Private.h in Headers */, + D710D4AE21949AE0008F54AD /* ARTRestPresence.h in Headers */, + D710D5CD21949D50008F54AD /* ARTProtocolMessage+Private.h in Headers */, + D710D4BE21949B5A008F54AD /* ARTRestChannels+Private.h in Headers */, + D710D5A521949D2A008F54AD /* ARTAuthOptions.h in Headers */, + D710D52C21949C44008F54AD /* ARTDevicePushDetails.h in Headers */, + D710D5B521949D2A008F54AD /* ARTStats.h in Headers */, + D710D4BB21949B48008F54AD /* ARTRestPresence+Private.h in Headers */, + D710D4AF21949AE0008F54AD /* ARTRestChannels.h in Headers */, + D710D4E821949BFB008F54AD /* ARTRealtimePresence.h in Headers */, + D710D49121949AAF008F54AD /* ARTRest.h in Headers */, + D710D5C821949D50008F54AD /* ARTAuthOptions+Private.h in Headers */, + D710D52F21949C44008F54AD /* ARTDeviceStorage.h in Headers */, + D710D61721949DDC008F54AD /* ARTDataQuery.h in Headers */, + D710D5A821949D2A008F54AD /* ARTTokenParams.h in Headers */, + D710D52B21949C44008F54AD /* ARTDeviceDetails.h in Headers */, + D710D51221949C19008F54AD /* ARTConnection+Private.h in Headers */, + D710D55421949C67008F54AD /* ARTNSMutableRequest+ARTPush.h in Headers */, + D710D67A21949E90008F54AD /* ARTSentry.h in Headers */, + D710D48B21949A86008F54AD /* ARTConstants.h in Headers */, + D710D60B21949DAA008F54AD /* ARTURLSessionServerTrust.h in Headers */, + D710D52821949C44008F54AD /* ARTPush.h in Headers */, + D710D4E521949BFB008F54AD /* ARTRealtimeChannel.h in Headers */, + D710D52921949C44008F54AD /* ARTPushChannel.h in Headers */, + D710D53021949C44008F54AD /* ARTLocalDeviceStorage.h in Headers */, + D710D51321949C19008F54AD /* ARTConnectionDetails+Private.h in Headers */, + D7BDDD3F21959CC200CC0632 /* CompatibilityMacros.h in Headers */, + D710D52D21949C44008F54AD /* ARTDeviceIdentityTokenDetails.h in Headers */, + D710D48221949A43008F54AD /* ARTDefault.h in Headers */, + D710D5A621949D2A008F54AD /* ARTAuthDetails.h in Headers */, + D710D55321949C67008F54AD /* ARTLocalDevice+Private.h in Headers */, + D710D4E421949BFB008F54AD /* ARTRealtime.h in Headers */, + D710D5AE21949D2A008F54AD /* ARTProtocolMessage.h in Headers */, + D710D47F21949A28008F54AD /* Ably.h in Headers */, + D710D57021949CBA008F54AD /* ARTPushAdmin.h in Headers */, + D710D48521949A4F008F54AD /* ARTDefault+Private.h in Headers */, + D710D5B621949D2A008F54AD /* ARTStatus.h in Headers */, + D710D62921949DED008F54AD /* ARTHTTPPaginatedResponse+Private.h in Headers */, + D710D5A921949D2A008F54AD /* ARTTokenDetails.h in Headers */, + D710D55221949C67008F54AD /* ARTPush+Private.h in Headers */, + D710D68C21949EDB008F54AD /* ARTNSDate+ARTUtil.h in Headers */, + D710D4E721949BFB008F54AD /* ARTConnectionDetails.h in Headers */, + D710D4EB21949BFB008F54AD /* ARTRealtimeChannels.h in Headers */, + D710D61A21949DDC008F54AD /* ARTFallback.h in Headers */, + D710D4C721949B9D008F54AD /* ARTWebSocketTransport.h in Headers */, + D710D4E621949BFB008F54AD /* ARTConnection.h in Headers */, + D710D51021949C19008F54AD /* ARTRealtime+Private.h in Headers */, + D710D5B321949D2A008F54AD /* ARTPresenceMap.h in Headers */, + D710D57121949CBA008F54AD /* ARTPushDeviceRegistrations.h in Headers */, + D710D62C21949DED008F54AD /* ARTNSMutableURLRequest+ARTPaginated.h in Headers */, + D710D4B221949AF9008F54AD /* ARTAuth.h in Headers */, + D710D5B121949D2A008F54AD /* ARTPresence.h in Headers */, + D710D4E921949BFB008F54AD /* ARTQueuedMessage.h in Headers */, + D710D62B21949DED008F54AD /* ARTNSHTTPURLResponse+ARTPaginated.h in Headers */, + D710D6A121949F0E008F54AD /* ARTJsonLikeEncoder.h in Headers */, + D710D4AD21949AE0008F54AD /* ARTRestChannel.h in Headers */, + D710D64D21949E62008F54AD /* ARTLog+Private.h in Headers */, + D710D57E21949CC9008F54AD /* ARTPushAdmin+Private.h in Headers */, + D710D67721949E81008F54AD /* ARTNSString+ARTUtil.h in Headers */, + D710D62721949DED008F54AD /* ARTDataQuery+Private.h in Headers */, + D710D62A21949DED008F54AD /* ARTFallback+Private.h in Headers */, + D710D61821949DDC008F54AD /* ARTPaginatedResult.h in Headers */, + D710D4C121949B6D008F54AD /* ARTNSMutableRequest+ARTRest.h in Headers */, + D710D5CE21949D50008F54AD /* ARTBaseMessage+Private.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ - 856AAC891B6E304B00B07119 /* AblySpec */ = { + 856AAC891B6E304B00B07119 /* Ably-iOS-Tests */ = { isa = PBXNativeTarget; - buildConfigurationList = 856AAC921B6E304B00B07119 /* Build configuration list for PBXNativeTarget "AblySpec" */; + buildConfigurationList = 856AAC921B6E304B00B07119 /* Build configuration list for PBXNativeTarget "Ably-iOS-Tests" */; buildPhases = ( - EA39671E05BE4925BF8905E0 /* [CP] Check Pods Manifest.lock */, 856AAC861B6E304B00B07119 /* Sources */, 856AAC871B6E304B00B07119 /* Frameworks */, 856AAC881B6E304B00B07119 /* Resources */, D736A1221F917830005ABE81 /* Copy Carthage Frameworks to Test bundle */, - A046D2806BAEA7E30AB4CEC9 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); dependencies = ( 856AAC911B6E304B00B07119 /* PBXTargetDependency */, ); - name = AblySpec; + name = "Ably-iOS-Tests"; productName = AblySpec; - productReference = 856AAC8A1B6E304B00B07119 /* AblySpec.xctest */; + productReference = 856AAC8A1B6E304B00B07119 /* Ably-iOS-Tests.xctest */; productType = "com.apple.product-type.bundle.unit-test"; }; - 96BF61301A35B2AB004CF2B3 /* Ably */ = { + 96BF61301A35B2AB004CF2B3 /* Ably-iOS */ = { isa = PBXNativeTarget; - buildConfigurationList = 96BF61471A35B2AB004CF2B3 /* Build configuration list for PBXNativeTarget "Ably" */; + buildConfigurationList = 96BF61471A35B2AB004CF2B3 /* Build configuration list for PBXNativeTarget "Ably-iOS" */; buildPhases = ( 96BF612C1A35B2AB004CF2B3 /* Sources */, 96BF612D1A35B2AB004CF2B3 /* Frameworks */, @@ -1027,11 +1866,85 @@ ); dependencies = ( ); - name = Ably; + name = "Ably-iOS"; productName = Ably; productReference = 96BF61311A35B2AB004CF2B3 /* Ably.framework */; productType = "com.apple.product-type.framework"; }; + D7093C09219E2DB200723F17 /* Ably-macOS-Tests */ = { + isa = PBXNativeTarget; + buildConfigurationList = D7093C12219E2DB200723F17 /* Build configuration list for PBXNativeTarget "Ably-macOS-Tests" */; + buildPhases = ( + D7093C06219E2DB200723F17 /* Sources */, + D7093C07219E2DB200723F17 /* Frameworks */, + D7093C08219E2DB200723F17 /* Resources */, + D7093C36219EDB4400723F17 /* Copy Carthage Frameworks to Test bundle */, + ); + buildRules = ( + ); + dependencies = ( + D7093C11219E2DB200723F17 /* PBXTargetDependency */, + ); + name = "Ably-macOS-Tests"; + productName = "Ably-macOS-Tests"; + productReference = D7093C0A219E2DB200723F17 /* Ably-macOS-Tests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; + D7093C5F219EE1AE00723F17 /* Ably-tvOS-Tests */ = { + isa = PBXNativeTarget; + buildConfigurationList = D7093C68219EE1AE00723F17 /* Build configuration list for PBXNativeTarget "Ably-tvOS-Tests" */; + buildPhases = ( + D7093C5C219EE1AE00723F17 /* Sources */, + D7093C5D219EE1AE00723F17 /* Frameworks */, + D7093C5E219EE1AE00723F17 /* Resources */, + D7093C6F219EE23700723F17 /* Copy Carthage Frameworks to Test bundle */, + ); + buildRules = ( + ); + dependencies = ( + D7093C67219EE1AE00723F17 /* PBXTargetDependency */, + ); + name = "Ably-tvOS-Tests"; + productName = "Ably-tvOS-Tests"; + productReference = D7093C60219EE1AE00723F17 /* Ably-tvOS-Tests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; + D710D45A219495E2008F54AD /* Ably-macOS */ = { + isa = PBXNativeTarget; + buildConfigurationList = D710D462219495E2008F54AD /* Build configuration list for PBXNativeTarget "Ably-macOS" */; + buildPhases = ( + D710D456219495E2008F54AD /* Headers */, + D710D457219495E2008F54AD /* Sources */, + D710D458219495E2008F54AD /* Frameworks */, + D710D459219495E2008F54AD /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "Ably-macOS"; + productName = "Ably-macOS"; + productReference = D710D45B219495E2008F54AD /* Ably.framework */; + productType = "com.apple.product-type.framework"; + }; + D710D474219495FC008F54AD /* Ably-tvOS */ = { + isa = PBXNativeTarget; + buildConfigurationList = D710D47A219495FC008F54AD /* Build configuration list for PBXNativeTarget "Ably-tvOS" */; + buildPhases = ( + D710D470219495FC008F54AD /* Headers */, + D710D471219495FC008F54AD /* Sources */, + D710D472219495FC008F54AD /* Frameworks */, + D710D473219495FC008F54AD /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "Ably-tvOS"; + productName = "Ably-tvOS"; + productReference = D710D475219495FC008F54AD /* Ably.framework */; + productType = "com.apple.product-type.framework"; + }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ @@ -1039,7 +1952,8 @@ isa = PBXProject; attributes = { CLASSPREFIX = ART; - LastSwiftUpdateCheck = 0730; + DefaultBuildSystemTypeForWorkspace = Original; + LastSwiftUpdateCheck = 1010; LastUpgradeCheck = 1000; ORGANIZATIONNAME = Ably; TargetAttributes = { @@ -1051,6 +1965,24 @@ CreatedOnToolsVersion = 6.1.1; LastSwiftMigration = 0920; }; + D7093C09219E2DB200723F17 = { + CreatedOnToolsVersion = 10.1; + LastSwiftMigration = 1010; + ProvisioningStyle = Automatic; + }; + D7093C5F219EE1AE00723F17 = { + CreatedOnToolsVersion = 10.1; + LastSwiftMigration = 1010; + ProvisioningStyle = Automatic; + }; + D710D45A219495E2008F54AD = { + CreatedOnToolsVersion = 10.1; + ProvisioningStyle = Automatic; + }; + D710D474219495FC008F54AD = { + CreatedOnToolsVersion = 10.1; + ProvisioningStyle = Automatic; + }; }; }; buildConfigurationList = 96BF612B1A35B2AB004CF2B3 /* Build configuration list for PBXProject "Ably" */; @@ -1065,8 +1997,12 @@ projectDirPath = ""; projectRoot = ""; targets = ( - 96BF61301A35B2AB004CF2B3 /* Ably */, - 856AAC891B6E304B00B07119 /* AblySpec */, + 96BF61301A35B2AB004CF2B3 /* Ably-iOS */, + 856AAC891B6E304B00B07119 /* Ably-iOS-Tests */, + D710D45A219495E2008F54AD /* Ably-macOS */, + D7093C09219E2DB200723F17 /* Ably-macOS-Tests */, + D710D474219495FC008F54AD /* Ably-tvOS */, + D7093C5F219EE1AE00723F17 /* Ably-tvOS-Tests */, ); }; /* End PBXProject section */ @@ -1087,52 +2023,37 @@ ); runOnlyForDeploymentPostprocessing = 0; }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXShellScriptBuildPhase section */ - A046D2806BAEA7E30AB4CEC9 /* [CP] Embed Pods Frameworks */ = { - isa = PBXShellScriptBuildPhase; + D7093C08219E2DB200723F17 /* Resources */ = { + isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - ); - inputPaths = ( - "${SRCROOT}/Pods/Target Support Files/Pods-AblySpec/Pods-AblySpec-frameworks.sh", - "${BUILT_PRODUCTS_DIR}/Aspects/Aspects.framework", - "${BUILT_PRODUCTS_DIR}/Nimble/Nimble.framework", - "${BUILT_PRODUCTS_DIR}/Quick/Quick.framework", - "${BUILT_PRODUCTS_DIR}/SwiftyJSON/SwiftyJSON.framework", - ); - name = "[CP] Embed Pods Frameworks"; - outputPaths = ( - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Aspects.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Nimble.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Quick.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SwiftyJSON.framework", + D7093C5B219EDE3200723F17 /* ably-common in Resources */, ); runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-AblySpec/Pods-AblySpec-frameworks.sh\"\n"; - showEnvVarsInLog = 0; }; - EA39671E05BE4925BF8905E0 /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; + D7093C5E219EE1AE00723F17 /* Resources */ = { + isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( + D7093C87219EE28100723F17 /* ably-common in Resources */, ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", + runOnlyForDeploymentPostprocessing = 0; + }; + D710D459219495E2008F54AD /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( ); - name = "[CP] Check Pods Manifest.lock"; - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-AblySpec-checkManifestLockResult.txt", + runOnlyForDeploymentPostprocessing = 0; + }; + D710D473219495FC008F54AD /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( ); runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; }; -/* End PBXShellScriptBuildPhase section */ +/* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ 856AAC861B6E304B00B07119 /* Sources */ = { @@ -1148,6 +2069,7 @@ 856AAC971B6E30C800B07119 /* TestUtilities.swift in Sources */, D72768211C9C19040022F8B2 /* RestClientPresence.swift in Sources */, D780846E1C68B3E50083009D /* NSObject+TestSuite.m in Sources */, + D7093CA9219EFA8A00723F17 /* MockDeviceStorage.swift in Sources */, D7CEF1321C8DD3BC004FB242 /* RealtimeClientPresence.swift in Sources */, 853ED7C41B7A1A3C006F1C6F /* RestClientStats.swift in Sources */, D74EFAEB1C4D09B500CFF98E /* RealtimeClientChannel.swift in Sources */, @@ -1245,20 +2167,241 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + D7093C06219E2DB200723F17 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + D7093C1B219E465F00723F17 /* NSObject+TestSuite.swift in Sources */, + D7093C29219E466E00723F17 /* Stats.swift in Sources */, + D7093C23219E466E00723F17 /* RestPaginated.swift in Sources */, + D7093C19219E465300723F17 /* TestUtilities.swift in Sources */, + D7093C1C219E466400723F17 /* ReadmeExamples.swift in Sources */, + D7093C27219E466E00723F17 /* RealtimeClientChannels.swift in Sources */, + D7093C28219E466E00723F17 /* RealtimeClientPresence.swift in Sources */, + D7093C24219E466E00723F17 /* RealtimeClient.swift in Sources */, + D7093C1F219E466E00723F17 /* RestClientStats.swift in Sources */, + D7093C1A219E465C00723F17 /* NSObject+TestSuite.m in Sources */, + D7093C1E219E466900723F17 /* RestClient.swift in Sources */, + D7093C2B219E466E00723F17 /* Crypto.swift in Sources */, + D7093C20219E466E00723F17 /* RestClientChannel.swift in Sources */, + D7093C2A219E466E00723F17 /* Utilities.swift in Sources */, + D7093C21219E466E00723F17 /* RestClientChannels.swift in Sources */, + D7093C26219E466E00723F17 /* RealtimeClientChannel.swift in Sources */, + D7093C22219E466E00723F17 /* RestClientPresence.swift in Sources */, + D7093C1D219E466600723F17 /* Auth.swift in Sources */, + D7093C25219E466E00723F17 /* RealtimeClientConnection.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + D7093C5C219EE1AE00723F17 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + D7093C75219EE26400723F17 /* RestClient.swift in Sources */, + D7093C7D219EE26400723F17 /* RealtimeClientChannel.swift in Sources */, + D7093C7F219EE26400723F17 /* RealtimeClientPresence.swift in Sources */, + D7093C73219EE26000723F17 /* ReadmeExamples.swift in Sources */, + D7093C71219EE25800723F17 /* NSObject+TestSuite.m in Sources */, + D7093C70219EE25400723F17 /* TestUtilities.swift in Sources */, + D7093C80219EE26400723F17 /* Stats.swift in Sources */, + D7093C77219EE26400723F17 /* RestClientChannel.swift in Sources */, + D7093C7E219EE26400723F17 /* RealtimeClientChannels.swift in Sources */, + D7093C79219EE26400723F17 /* RestClientPresence.swift in Sources */, + D7093C78219EE26400723F17 /* RestClientChannels.swift in Sources */, + D7093C76219EE26400723F17 /* RestClientStats.swift in Sources */, + D7093C82219EE26400723F17 /* Crypto.swift in Sources */, + D7093C7C219EE26400723F17 /* RealtimeClientConnection.swift in Sources */, + D7093C74219EE26400723F17 /* Auth.swift in Sources */, + D7093C72219EE25B00723F17 /* NSObject+TestSuite.swift in Sources */, + D7093C7B219EE26400723F17 /* RealtimeClient.swift in Sources */, + D7093C7A219EE26400723F17 /* RestPaginated.swift in Sources */, + D7093C81219EE26400723F17 /* Utilities.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + D710D457219495E2008F54AD /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + D710D4EF21949C0D008F54AD /* ARTConnectionDetails.m in Sources */, + D710D4F021949C0D008F54AD /* ARTRealtimePresence.m in Sources */, + D710D4F321949C0D008F54AD /* ARTRealtimeChannels.m in Sources */, + D710D53521949C54008F54AD /* ARTDevicePushDetails.m in Sources */, + D710D62F21949E03008F54AD /* ARTDataQuery.m in Sources */, + D710D53121949C54008F54AD /* ARTPush.m in Sources */, + D710D5E021949D78008F54AD /* ARTStats.m in Sources */, + D710D4F121949C0D008F54AD /* ARTQueuedMessage.m in Sources */, + D710D49521949AC2008F54AD /* ARTRest.m in Sources */, + D710D53921949C54008F54AD /* ARTNSMutableRequest+ARTPush.m in Sources */, + D710D66D21949E78008F54AD /* ARTLog.m in Sources */, + D710D5D721949D78008F54AD /* ARTChannels.m in Sources */, + D710D4F221949C0D008F54AD /* ARTPendingMessage.m in Sources */, + D710D55F21949C97008F54AD /* ARTPushActivationState.m in Sources */, + D710D67221949E79008F54AD /* ARTGCD.m in Sources */, + D710D63321949E03008F54AD /* ARTNSHTTPURLResponse+ARTPaginated.m in Sources */, + D710D5D021949D78008F54AD /* ARTAuthOptions.m in Sources */, + D710D5E221949D78008F54AD /* ARTTypes.m in Sources */, + D710D5DF21949D78008F54AD /* ARTDataEncoder.m in Sources */, + D710D4EE21949C0D008F54AD /* ARTConnection.m in Sources */, + D710D4C921949BAA008F54AD /* ARTWebSocketTransport.m in Sources */, + D710D5DD21949D78008F54AD /* ARTPresenceMessage.m in Sources */, + D710D63221949E03008F54AD /* ARTFallback.m in Sources */, + D710D5D221949D78008F54AD /* ARTTokenRequest.m in Sources */, + D710D66821949E78008F54AD /* ARTEventEmitter.m in Sources */, + D710D5D921949D78008F54AD /* ARTProtocolMessage.m in Sources */, + D710D53721949C54008F54AD /* ARTLocalDevice.m in Sources */, + D710D53621949C54008F54AD /* ARTDeviceIdentityTokenDetails.m in Sources */, + D710D4C821949BAA008F54AD /* ARTRealtimeTransport.m in Sources */, + D710D49821949ACA008F54AD /* ARTRestChannel.m in Sources */, + D710D5DE21949D78008F54AD /* ARTPresenceMap.m in Sources */, + D710D49A21949ACA008F54AD /* ARTRestPresence.m in Sources */, + D710D66E21949E78008F54AD /* ARTNSDate+ARTUtil.m in Sources */, + D710D57321949CC4008F54AD /* ARTPushAdmin.m in Sources */, + D710D53421949C54008F54AD /* ARTDeviceDetails.m in Sources */, + D710D66A21949E78008F54AD /* ARTJsonLikeEncoder.m in Sources */, + D710D57521949CC4008F54AD /* ARTPushChannelSubscriptions.m in Sources */, + D710D55E21949C97008F54AD /* ARTPushActivationStateMachine.m in Sources */, + D710D49C21949ACA008F54AD /* ARTNSMutableRequest+ARTRest.m in Sources */, + D710D66C21949E78008F54AD /* ARTMsgPackEncoder.m in Sources */, + D710D48621949A5B008F54AD /* ARTDefault.m in Sources */, + D710D5DB21949D78008F54AD /* ARTMessage.m in Sources */, + D710D66F21949E78008F54AD /* ARTNSArray+ARTFunctional.m in Sources */, + D710D67421949E79008F54AD /* ARTNSString+ARTUtil.m in Sources */, + D710D49921949ACA008F54AD /* ARTAuth.m in Sources */, + D710D5D321949D78008F54AD /* ARTTokenParams.m in Sources */, + D710D53221949C54008F54AD /* ARTPushChannel.m in Sources */, + D710D5D421949D78008F54AD /* ARTTokenDetails.m in Sources */, + D710D49B21949ACA008F54AD /* ARTRestChannels.m in Sources */, + D710D62E21949E03008F54AD /* ARTURLSessionServerTrust.m in Sources */, + D710D66B21949E78008F54AD /* ARTJsonEncoder.m in Sources */, + D710D67321949E79008F54AD /* ARTSentry.m in Sources */, + D710D5D521949D78008F54AD /* ARTClientOptions.m in Sources */, + D710D5D621949D78008F54AD /* ARTChannel.m in Sources */, + D710D5D121949D78008F54AD /* ARTAuthDetails.m in Sources */, + D710D4EC21949C0D008F54AD /* ARTRealtime.m in Sources */, + D710D4ED21949C0D008F54AD /* ARTRealtimeChannel.m in Sources */, + D710D67021949E78008F54AD /* ARTNSDictionary+ARTDictionaryUtil.m in Sources */, + D710D48C21949A97008F54AD /* ARTConstants.m in Sources */, + D710D5DA21949D78008F54AD /* ARTBaseMessage.m in Sources */, + D710D63421949E03008F54AD /* ARTNSMutableURLRequest+ARTPaginated.m in Sources */, + D710D57421949CC4008F54AD /* ARTPushDeviceRegistrations.m in Sources */, + D710D5D821949D78008F54AD /* ARTChannelOptions.m in Sources */, + D710D62D21949E03008F54AD /* ARTHttp.m in Sources */, + D710D63021949E03008F54AD /* ARTPaginatedResult.m in Sources */, + D710D5E121949D78008F54AD /* ARTStatus.m in Sources */, + D710D53321949C54008F54AD /* ARTPushChannelSubscription.m in Sources */, + D710D67121949E79008F54AD /* ARTOSReachability.m in Sources */, + D710D56021949C97008F54AD /* ARTPushActivationEvent.m in Sources */, + D710D66921949E78008F54AD /* ARTCrypto.m in Sources */, + D710D63121949E03008F54AD /* ARTHTTPPaginatedResponse.m in Sources */, + D710D5DC21949D78008F54AD /* ARTPresence.m in Sources */, + D710D53821949C54008F54AD /* ARTLocalDeviceStorage.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + D710D471219495FC008F54AD /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + D710D4FF21949C0E008F54AD /* ARTConnectionDetails.m in Sources */, + D710D50021949C0E008F54AD /* ARTRealtimePresence.m in Sources */, + D710D50321949C0E008F54AD /* ARTRealtimeChannels.m in Sources */, + D710D54721949C55008F54AD /* ARTDevicePushDetails.m in Sources */, + D710D63F21949E04008F54AD /* ARTDataQuery.m in Sources */, + D710D54321949C55008F54AD /* ARTPush.m in Sources */, + D710D60621949D79008F54AD /* ARTStats.m in Sources */, + D710D50121949C0E008F54AD /* ARTQueuedMessage.m in Sources */, + D710D49721949AC3008F54AD /* ARTRest.m in Sources */, + D710D54B21949C55008F54AD /* ARTNSMutableRequest+ARTPush.m in Sources */, + D710D65321949E77008F54AD /* ARTLog.m in Sources */, + D710D5FD21949D79008F54AD /* ARTChannels.m in Sources */, + D710D50221949C0E008F54AD /* ARTPendingMessage.m in Sources */, + D710D56521949C98008F54AD /* ARTPushActivationState.m in Sources */, + D710D65821949E77008F54AD /* ARTGCD.m in Sources */, + D710D64321949E04008F54AD /* ARTNSHTTPURLResponse+ARTPaginated.m in Sources */, + D710D5F621949D79008F54AD /* ARTAuthOptions.m in Sources */, + D710D60821949D79008F54AD /* ARTTypes.m in Sources */, + D710D60521949D79008F54AD /* ARTDataEncoder.m in Sources */, + D710D4FE21949C0E008F54AD /* ARTConnection.m in Sources */, + D710D4CD21949BAB008F54AD /* ARTWebSocketTransport.m in Sources */, + D710D60321949D79008F54AD /* ARTPresenceMessage.m in Sources */, + D710D64221949E04008F54AD /* ARTFallback.m in Sources */, + D710D5F821949D79008F54AD /* ARTTokenRequest.m in Sources */, + D710D64E21949E77008F54AD /* ARTEventEmitter.m in Sources */, + D710D5FF21949D79008F54AD /* ARTProtocolMessage.m in Sources */, + D710D54921949C55008F54AD /* ARTLocalDevice.m in Sources */, + D710D54821949C55008F54AD /* ARTDeviceIdentityTokenDetails.m in Sources */, + D710D4CC21949BAB008F54AD /* ARTRealtimeTransport.m in Sources */, + D710D4A221949ACB008F54AD /* ARTRestChannel.m in Sources */, + D710D60421949D79008F54AD /* ARTPresenceMap.m in Sources */, + D710D4A421949ACB008F54AD /* ARTRestPresence.m in Sources */, + D710D65421949E77008F54AD /* ARTNSDate+ARTUtil.m in Sources */, + D710D57921949CC5008F54AD /* ARTPushAdmin.m in Sources */, + D710D54621949C55008F54AD /* ARTDeviceDetails.m in Sources */, + D710D65021949E77008F54AD /* ARTJsonLikeEncoder.m in Sources */, + D710D57B21949CC5008F54AD /* ARTPushChannelSubscriptions.m in Sources */, + D710D56421949C98008F54AD /* ARTPushActivationStateMachine.m in Sources */, + D710D4A621949ACB008F54AD /* ARTNSMutableRequest+ARTRest.m in Sources */, + D710D65221949E77008F54AD /* ARTMsgPackEncoder.m in Sources */, + D710D48821949A5C008F54AD /* ARTDefault.m in Sources */, + D710D60121949D79008F54AD /* ARTMessage.m in Sources */, + D710D65521949E77008F54AD /* ARTNSArray+ARTFunctional.m in Sources */, + D710D65A21949E77008F54AD /* ARTNSString+ARTUtil.m in Sources */, + D710D4A321949ACB008F54AD /* ARTAuth.m in Sources */, + D710D5F921949D79008F54AD /* ARTTokenParams.m in Sources */, + D710D54421949C55008F54AD /* ARTPushChannel.m in Sources */, + D710D5FA21949D79008F54AD /* ARTTokenDetails.m in Sources */, + D710D4A521949ACB008F54AD /* ARTRestChannels.m in Sources */, + D710D63E21949E04008F54AD /* ARTURLSessionServerTrust.m in Sources */, + D710D65121949E77008F54AD /* ARTJsonEncoder.m in Sources */, + D710D65921949E77008F54AD /* ARTSentry.m in Sources */, + D710D5FB21949D79008F54AD /* ARTClientOptions.m in Sources */, + D710D5FC21949D79008F54AD /* ARTChannel.m in Sources */, + D710D5F721949D79008F54AD /* ARTAuthDetails.m in Sources */, + D710D4FC21949C0E008F54AD /* ARTRealtime.m in Sources */, + D710D4FD21949C0E008F54AD /* ARTRealtimeChannel.m in Sources */, + D710D65621949E77008F54AD /* ARTNSDictionary+ARTDictionaryUtil.m in Sources */, + D710D48E21949A98008F54AD /* ARTConstants.m in Sources */, + D710D60021949D79008F54AD /* ARTBaseMessage.m in Sources */, + D710D64421949E04008F54AD /* ARTNSMutableURLRequest+ARTPaginated.m in Sources */, + D710D57A21949CC5008F54AD /* ARTPushDeviceRegistrations.m in Sources */, + D710D5FE21949D79008F54AD /* ARTChannelOptions.m in Sources */, + D710D63D21949E04008F54AD /* ARTHttp.m in Sources */, + D710D64021949E04008F54AD /* ARTPaginatedResult.m in Sources */, + D710D60721949D79008F54AD /* ARTStatus.m in Sources */, + D710D54521949C55008F54AD /* ARTPushChannelSubscription.m in Sources */, + D710D65721949E77008F54AD /* ARTOSReachability.m in Sources */, + D710D56621949C98008F54AD /* ARTPushActivationEvent.m in Sources */, + D710D64F21949E77008F54AD /* ARTCrypto.m in Sources */, + D710D64121949E04008F54AD /* ARTHTTPPaginatedResponse.m in Sources */, + D710D60221949D79008F54AD /* ARTPresence.m in Sources */, + D710D54A21949C55008F54AD /* ARTLocalDeviceStorage.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ 856AAC911B6E304B00B07119 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - target = 96BF61301A35B2AB004CF2B3 /* Ably */; + target = 96BF61301A35B2AB004CF2B3 /* Ably-iOS */; targetProxy = 856AAC901B6E304B00B07119 /* PBXContainerItemProxy */; }; + D7093C11219E2DB200723F17 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = D710D45A219495E2008F54AD /* Ably-macOS */; + targetProxy = D7093C10219E2DB200723F17 /* PBXContainerItemProxy */; + }; + D7093C67219EE1AE00723F17 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = D710D474219495FC008F54AD /* Ably-tvOS */; + targetProxy = D7093C66219EE1AE00723F17 /* PBXContainerItemProxy */; + }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ 856AAC931B6E304B00B07119 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 5E500FB9167E550DE1AE7F51 /* Pods-AblySpec.debug.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = "$(inherited)"; CLANG_ENABLE_MODULES = YES; @@ -1273,11 +2416,12 @@ "$(inherited)", "TEST_SUITE=1", ); - INFOPLIST_FILE = Spec/Info.plist; + INFOPLIST_FILE = "Spec/Info-iOS.plist"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; - OTHER_SWIFT_FLAGS = "$(inherited) \"-D\" \"TEST_SUITE\""; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + OTHER_SWIFT_FLAGS = "$(inherited) -D TEST_SUITE -D TARGET_OS_IOS -D TARGET_OS_IPHONE -D TARGET_OS_MAC"; PRODUCT_BUNDLE_IDENTIFIER = "io.ably.$(PRODUCT_NAME)"; - PRODUCT_NAME = AblySpec; + PRODUCT_NAME = "Ably-iOS-Tests"; SWIFT_OBJC_BRIDGING_HEADER = "Spec/AblySpec-Bridging-Header.h"; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 4.2; @@ -1286,7 +2430,6 @@ }; 856AAC941B6E304B00B07119 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 835951C92224788FBB2948C4 /* Pods-AblySpec.release.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = "$(inherited)"; CLANG_ENABLE_MODULES = YES; @@ -1302,11 +2445,12 @@ "$(inherited)", "TEST_SUITE=1", ); - INFOPLIST_FILE = Spec/Info.plist; + INFOPLIST_FILE = "Spec/Info-iOS.plist"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; - OTHER_SWIFT_FLAGS = "$(inherited) \"-D\" \"TEST_SUITE\""; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + OTHER_SWIFT_FLAGS = "$(inherited) -D TEST_SUITE -D TARGET_OS_IOS -D TARGET_OS_IPHONE -D TARGET_OS_MAC"; PRODUCT_BUNDLE_IDENTIFIER = "io.ably.$(PRODUCT_NAME)"; - PRODUCT_NAME = AblySpec; + PRODUCT_NAME = "Ably-iOS-Tests"; SWIFT_OBJC_BRIDGING_HEADER = "Spec/AblySpec-Bridging-Header.h"; SWIFT_VERSION = 4.2; }; @@ -1314,6 +2458,7 @@ }; 96BF61451A35B2AB004CF2B3 /* Debug */ = { isa = XCBuildConfiguration; + baseConfigurationReference = D75B85F921BAF8F900FD8DD2 /* Ably.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = "$(inherited)"; ALWAYS_SEARCH_USER_PATHS = NO; @@ -1342,7 +2487,6 @@ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 1; DYLIB_COMPATIBILITY_VERSION = 1; ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_TESTABILITY = YES; @@ -1373,6 +2517,7 @@ }; 96BF61461A35B2AB004CF2B3 /* Release */ = { isa = XCBuildConfiguration; + baseConfigurationReference = D75B85F921BAF8F900FD8DD2 /* Ably.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = "$(inherited)"; ALWAYS_SEARCH_USER_PATHS = NO; @@ -1401,7 +2546,6 @@ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = YES; - CURRENT_PROJECT_VERSION = 1; DYLIB_COMPATIBILITY_VERSION = 1; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; @@ -1436,13 +2580,13 @@ "$(inherited)", "$(PROJECT_DIR)/Carthage/Build/iOS", ); - INFOPLIST_FILE = Source/Info.plist; + INFOPLIST_FILE = "Source/Info-iOS.plist"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; MACH_O_TYPE = mh_dylib; MODULEMAP_FILE = Source/Ably.modulemap; PRODUCT_BUNDLE_IDENTIFIER = "io.ably.$(PRODUCT_NAME)"; - PRODUCT_NAME = "$(TARGET_NAME)"; + PRODUCT_NAME = Ably; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_SWIFT3_OBJC_INFERENCE = On; SWIFT_VERSION = 4.0; @@ -1461,22 +2605,304 @@ "$(inherited)", "$(PROJECT_DIR)/Carthage/Build/iOS", ); - INFOPLIST_FILE = Source/Info.plist; + INFOPLIST_FILE = "Source/Info-iOS.plist"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; MACH_O_TYPE = mh_dylib; MODULEMAP_FILE = Source/Ably.modulemap; PRODUCT_BUNDLE_IDENTIFIER = "io.ably.$(PRODUCT_NAME)"; - PRODUCT_NAME = "$(TARGET_NAME)"; + PRODUCT_NAME = Ably; SWIFT_SWIFT3_OBJC_INFERENCE = On; SWIFT_VERSION = 4.0; }; name = Release; }; + D7093C13219E2DB200723F17 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_IDENTITY = "-"; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + DEBUG_INFORMATION_FORMAT = dwarf; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/Carthage/Build/Mac", + ); + GCC_C_LANGUAGE_STANDARD = gnu11; + INFOPLIST_FILE = "Spec/Info-macOS.plist"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks"; + MACOSX_DEPLOYMENT_TARGET = 10.14; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + OTHER_SWIFT_FLAGS = "-D TARGET_OS_OSX -D TARGET_OS_MAC"; + PRODUCT_BUNDLE_IDENTIFIER = "io.ably.Ably-macOS-Tests"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = macosx; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OBJC_BRIDGING_HEADER = "Spec/AblySpec-Bridging-Header.h"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 4.2; + }; + name = Debug; + }; + D7093C14219E2DB200723F17 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_IDENTITY = "-"; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/Carthage/Build/Mac", + ); + GCC_C_LANGUAGE_STANDARD = gnu11; + INFOPLIST_FILE = "Spec/Info-macOS.plist"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks"; + MACOSX_DEPLOYMENT_TARGET = 10.14; + MTL_FAST_MATH = YES; + OTHER_SWIFT_FLAGS = "-D TARGET_OS_OSX -D TARGET_OS_MAC"; + PRODUCT_BUNDLE_IDENTIFIER = "io.ably.Ably-macOS-Tests"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = macosx; + SWIFT_OBJC_BRIDGING_HEADER = "Spec/AblySpec-Bridging-Header.h"; + SWIFT_VERSION = 4.2; + }; + name = Release; + }; + D7093C69219EE1AE00723F17 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_STYLE = Automatic; + DEBUG_INFORMATION_FORMAT = dwarf; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/Carthage/Build/tvOS", + "$(PROJECT_DIR)/Carthage/Build/iOS", + ); + GCC_C_LANGUAGE_STANDARD = gnu11; + INFOPLIST_FILE = "Spec/Info-tvOS.plist"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + OTHER_SWIFT_FLAGS = "-D TARGET_OS_TV -D TARGET_OS_IPHONE -D TARGET_OS_MAC"; + PRODUCT_BUNDLE_IDENTIFIER = "io.ably.Ably-tvOS-Tests"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = appletvos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OBJC_BRIDGING_HEADER = "Spec/AblySpec-Bridging-Header.h"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 4.2; + TARGETED_DEVICE_FAMILY = 3; + TVOS_DEPLOYMENT_TARGET = 12.1; + }; + name = Debug; + }; + D7093C6A219EE1AE00723F17 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_STYLE = Automatic; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/Carthage/Build/tvOS", + "$(PROJECT_DIR)/Carthage/Build/iOS", + ); + GCC_C_LANGUAGE_STANDARD = gnu11; + INFOPLIST_FILE = "Spec/Info-tvOS.plist"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MTL_FAST_MATH = YES; + OTHER_SWIFT_FLAGS = "-D TARGET_OS_TV -D TARGET_OS_IPHONE -D TARGET_OS_MAC"; + PRODUCT_BUNDLE_IDENTIFIER = "io.ably.Ably-tvOS-Tests"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = appletvos; + SWIFT_OBJC_BRIDGING_HEADER = "Spec/AblySpec-Bridging-Header.h"; + SWIFT_VERSION = 4.2; + TARGETED_DEVICE_FAMILY = 3; + TVOS_DEPLOYMENT_TARGET = 12.1; + }; + name = Release; + }; + D710D460219495E2008F54AD /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_IDENTITY = "-"; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + DEBUG_INFORMATION_FORMAT = dwarf; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/Carthage/Build/Mac", + ); + FRAMEWORK_VERSION = A; + GCC_C_LANGUAGE_STANDARD = gnu11; + INFOPLIST_FILE = "Source/Info-macOS.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks"; + MACOSX_DEPLOYMENT_TARGET = 10.10; + MODULEMAP_FILE = Source/Ably.modulemap; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + PRODUCT_BUNDLE_IDENTIFIER = io.ably.Ably; + PRODUCT_NAME = Ably; + SDKROOT = macosx; + SKIP_INSTALL = YES; + }; + name = Debug; + }; + D710D461219495E2008F54AD /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_IDENTITY = "-"; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/Carthage/Build/Mac", + ); + FRAMEWORK_VERSION = A; + GCC_C_LANGUAGE_STANDARD = gnu11; + INFOPLIST_FILE = "Source/Info-macOS.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks"; + MACOSX_DEPLOYMENT_TARGET = 10.10; + MODULEMAP_FILE = Source/Ably.modulemap; + MTL_FAST_MATH = YES; + PRODUCT_BUNDLE_IDENTIFIER = io.ably.Ably; + PRODUCT_NAME = Ably; + SDKROOT = macosx; + SKIP_INSTALL = YES; + }; + name = Release; + }; + D710D47B219495FC008F54AD /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Automatic; + DEBUG_INFORMATION_FORMAT = dwarf; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/Carthage/Build/tvOS", + ); + GCC_C_LANGUAGE_STANDARD = gnu11; + INFOPLIST_FILE = "Source/Info-tvOS.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MODULEMAP_FILE = Source/Ably.modulemap; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + PRODUCT_BUNDLE_IDENTIFIER = io.ably.Ably; + PRODUCT_NAME = Ably; + SDKROOT = appletvos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = 3; + TVOS_DEPLOYMENT_TARGET = 10.0; + }; + name = Debug; + }; + D710D47C219495FC008F54AD /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Automatic; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/Carthage/Build/tvOS", + ); + GCC_C_LANGUAGE_STANDARD = gnu11; + INFOPLIST_FILE = "Source/Info-tvOS.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MODULEMAP_FILE = Source/Ably.modulemap; + MTL_FAST_MATH = YES; + PRODUCT_BUNDLE_IDENTIFIER = io.ably.Ably; + PRODUCT_NAME = Ably; + SDKROOT = appletvos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = 3; + TVOS_DEPLOYMENT_TARGET = 10.0; + }; + name = Release; + }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - 856AAC921B6E304B00B07119 /* Build configuration list for PBXNativeTarget "AblySpec" */ = { + 856AAC921B6E304B00B07119 /* Build configuration list for PBXNativeTarget "Ably-iOS-Tests" */ = { isa = XCConfigurationList; buildConfigurations = ( 856AAC931B6E304B00B07119 /* Debug */, @@ -1494,7 +2920,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 96BF61471A35B2AB004CF2B3 /* Build configuration list for PBXNativeTarget "Ably" */ = { + 96BF61471A35B2AB004CF2B3 /* Build configuration list for PBXNativeTarget "Ably-iOS" */ = { isa = XCConfigurationList; buildConfigurations = ( 96BF61481A35B2AB004CF2B3 /* Debug */, @@ -1503,6 +2929,42 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + D7093C12219E2DB200723F17 /* Build configuration list for PBXNativeTarget "Ably-macOS-Tests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + D7093C13219E2DB200723F17 /* Debug */, + D7093C14219E2DB200723F17 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + D7093C68219EE1AE00723F17 /* Build configuration list for PBXNativeTarget "Ably-tvOS-Tests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + D7093C69219EE1AE00723F17 /* Debug */, + D7093C6A219EE1AE00723F17 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + D710D462219495E2008F54AD /* Build configuration list for PBXNativeTarget "Ably-macOS" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + D710D460219495E2008F54AD /* Debug */, + D710D461219495E2008F54AD /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + D710D47A219495FC008F54AD /* Build configuration list for PBXNativeTarget "Ably-tvOS" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + D710D47B219495FC008F54AD /* Debug */, + D710D47C219495FC008F54AD /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; /* End XCConfigurationList section */ }; rootObject = 96BF61281A35B2AB004CF2B3 /* Project object */; diff --git a/Ably.xcodeproj/xcshareddata/xcschemes/AblySpec.xcscheme b/Ably.xcodeproj/xcshareddata/xcschemes/Ably-iOS-Tests.xcscheme similarity index 88% rename from Ably.xcodeproj/xcshareddata/xcschemes/AblySpec.xcscheme rename to Ably.xcodeproj/xcshareddata/xcschemes/Ably-iOS-Tests.xcscheme index 2ffcde956..171a49ca6 100644 --- a/Ably.xcodeproj/xcshareddata/xcschemes/AblySpec.xcscheme +++ b/Ably.xcodeproj/xcshareddata/xcschemes/Ably-iOS-Tests.xcscheme @@ -15,8 +15,8 @@ @@ -33,8 +33,8 @@ @@ -63,8 +63,8 @@ @@ -81,8 +81,8 @@ diff --git a/Ably.xcodeproj/xcshareddata/xcschemes/Ably.xcscheme b/Ably.xcodeproj/xcshareddata/xcschemes/Ably-iOS.xcscheme similarity index 93% rename from Ably.xcodeproj/xcshareddata/xcschemes/Ably.xcscheme rename to Ably.xcodeproj/xcshareddata/xcschemes/Ably-iOS.xcscheme index 38ac5b641..55a5fd61d 100644 --- a/Ably.xcodeproj/xcshareddata/xcschemes/Ably.xcscheme +++ b/Ably.xcodeproj/xcshareddata/xcschemes/Ably-iOS.xcscheme @@ -16,7 +16,7 @@ BuildableIdentifier = "primary" BlueprintIdentifier = "96BF61301A35B2AB004CF2B3" BuildableName = "Ably.framework" - BlueprintName = "Ably" + BlueprintName = "Ably-iOS" ReferencedContainer = "container:Ably.xcodeproj"> @@ -33,8 +33,8 @@ @@ -44,7 +44,7 @@ BuildableIdentifier = "primary" BlueprintIdentifier = "96BF61301A35B2AB004CF2B3" BuildableName = "Ably.framework" - BlueprintName = "Ably" + BlueprintName = "Ably-iOS" ReferencedContainer = "container:Ably.xcodeproj"> @@ -73,7 +73,7 @@ BuildableIdentifier = "primary" BlueprintIdentifier = "96BF61301A35B2AB004CF2B3" BuildableName = "Ably.framework" - BlueprintName = "Ably" + BlueprintName = "Ably-iOS" ReferencedContainer = "container:Ably.xcodeproj"> @@ -91,7 +91,7 @@ BuildableIdentifier = "primary" BlueprintIdentifier = "96BF61301A35B2AB004CF2B3" BuildableName = "Ably.framework" - BlueprintName = "Ably" + BlueprintName = "Ably-iOS" ReferencedContainer = "container:Ably.xcodeproj"> diff --git a/Ably.xcodeproj/xcshareddata/xcschemes/Ably-macOS-Tests.xcscheme b/Ably.xcodeproj/xcshareddata/xcschemes/Ably-macOS-Tests.xcscheme new file mode 100644 index 000000000..1cc306500 --- /dev/null +++ b/Ably.xcodeproj/xcshareddata/xcschemes/Ably-macOS-Tests.xcscheme @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Ably.xcodeproj/xcshareddata/xcschemes/Ably-macOS.xcscheme b/Ably.xcodeproj/xcshareddata/xcschemes/Ably-macOS.xcscheme new file mode 100644 index 000000000..d2c672137 --- /dev/null +++ b/Ably.xcodeproj/xcshareddata/xcschemes/Ably-macOS.xcscheme @@ -0,0 +1,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Ably.xcodeproj/xcshareddata/xcschemes/Ably-tvOS-Tests.xcscheme b/Ably.xcodeproj/xcshareddata/xcschemes/Ably-tvOS-Tests.xcscheme new file mode 100644 index 000000000..36198dc20 --- /dev/null +++ b/Ably.xcodeproj/xcshareddata/xcschemes/Ably-tvOS-Tests.xcscheme @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Ably.xcodeproj/xcshareddata/xcschemes/Ably-tvOS.xcscheme b/Ably.xcodeproj/xcshareddata/xcschemes/Ably-tvOS.xcscheme new file mode 100644 index 000000000..40749c357 --- /dev/null +++ b/Ably.xcodeproj/xcshareddata/xcschemes/Ably-tvOS.xcscheme @@ -0,0 +1,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/CHANGELOG.md b/CHANGELOG.md index 779b848c0..b58f2b3b6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,53 @@ # Change Log -## [1.1.1](/~https://github.com/ably/ably-ios/tree/1.1.1) (2018-09-29) +## [1.1.2](/~https://github.com/ably/ably-ios/tree/1.1.2) (2018-11-06) +[Full Changelog](/~https://github.com/ably/ably-ios/compare/1.1.1...1.1.2) + +**Implemented enhancements:** + +- Replace NSURL with URL in Swift code [\#794](/~https://github.com/ably/ably-ios/issues/794) +- Address SocketRocket warnings [\#688](/~https://github.com/ably/ably-ios/issues/688) +**Fixed bugs:** + +- Unable to submit to AppStore [\#803](/~https://github.com/ably/ably-ios/issues/803) +- After connection recovery, the client resets msgSerial [\#799](/~https://github.com/ably/ably-ios/issues/799) +- Investigate implementation of RTN15a [\#727](/~https://github.com/ably/ably-ios/issues/727) +- SocketRocket - missing required key when submitting to the App Store [\#701](/~https://github.com/ably/ably-ios/issues/701) + +**Closed issues:** + +- Issue while subscribe device for Push Notifications [\#796](/~https://github.com/ably/ably-ios/issues/796) +- Potential code that could stall some CI executions [\#758](/~https://github.com/ably/ably-ios/issues/758) +- Check use of `dev:push-device-auth` environment [\#781](/~https://github.com/ably/ably-ios/issues/781) +- Check behavior of RTN15h\* [\#731](/~https://github.com/ably/ably-ios/issues/731) +- Investigate implementation of RTN14b [\#730](/~https://github.com/ably/ably-ios/issues/730) + +**Merged pull requests:** + +- Update to Xcode10 Swift 4.2 [\#813](/~https://github.com/ably/ably-ios/pull/813) ([funkyboy](/~https://github.com/funkyboy)) +- Xcode 10 minimal support [\#812](/~https://github.com/ably/ably-ios/pull/812) ([ricardopereira](/~https://github.com/ricardopereira)) +- Fix Realtime clients creation outside the `it` method scope [\#811](/~https://github.com/ably/ably-ios/pull/811) ([ricardopereira](/~https://github.com/ricardopereira)) +- Add RTL6d2 [\#806](/~https://github.com/ably/ably-ios/pull/806) ([funkyboy](/~https://github.com/funkyboy)) +- SocketRocketAblyFork [\#808](/~https://github.com/ably/ably-ios/pull/808) ([ricardopereira](/~https://github.com/ricardopereira)) +- Fix RTL6d1 [\#807](/~https://github.com/ably/ably-ios/pull/807) ([funkyboy](/~https://github.com/funkyboy)) +- Add rtl6d1 [\#802](/~https://github.com/ably/ably-ios/pull/802) ([funkyboy](/~https://github.com/funkyboy)) +- RTN16f [\#801](/~https://github.com/ably/ably-ios/pull/801) ([ricardopereira](/~https://github.com/ricardopereira)) +- Update RTN16b [\#800](/~https://github.com/ably/ably-ios/pull/800) ([ricardopereira](/~https://github.com/ricardopereira)) +- Add test for RTN15h1 [\#798](/~https://github.com/ably/ably-ios/pull/798) ([funkyboy](/~https://github.com/funkyboy)) +- NSURL -\> URL in Swift code [\#797](/~https://github.com/ably/ably-ios/pull/797) ([funkyboy](/~https://github.com/funkyboy)) +- Add TR3\* [\#793](/~https://github.com/ably/ably-ios/pull/793) ([funkyboy](/~https://github.com/funkyboy)) +- Add ref to RTN23a [\#792](/~https://github.com/ably/ably-ios/pull/792) ([funkyboy](/~https://github.com/funkyboy)) +- Improve RTN14b test [\#791](/~https://github.com/ably/ably-ios/pull/791) ([funkyboy](/~https://github.com/funkyboy)) +- Reactivate and fix RTP17 tests [\#790](/~https://github.com/ably/ably-ios/pull/790) ([funkyboy](/~https://github.com/funkyboy)) +- Add RTN15a [\#789](/~https://github.com/ably/ably-ios/pull/789) ([funkyboy](/~https://github.com/funkyboy)) +- Fix RSL1b [\#788](/~https://github.com/ably/ably-ios/pull/788) ([ricardopereira](/~https://github.com/ricardopereira)) +- Move RSL1i to RestClientChannel file [\#785](/~https://github.com/ably/ably-ios/pull/785) ([ricardopereira](/~https://github.com/ricardopereira)) +- HTTP Paginated Response [\#783](/~https://github.com/ably/ably-ios/pull/783) ([ricardopereira](/~https://github.com/ricardopereira)) +- Fix RSC7b test [\#782](/~https://github.com/ably/ably-ios/pull/782) ([funkyboy](/~https://github.com/funkyboy)) +- RSC19a [\#754](/~https://github.com/ably/ably-ios/pull/754) ([ricardopereira](/~https://github.com/ricardopereira)) + +## [1.1.1](/~https://github.com/ably/ably-ios/tree/1.1.1) (2018-09-29) [Full Changelog](/~https://github.com/ably/ably-ios/compare/1.1.0...1.1.1) **Fixed bugs:** @@ -9,7 +55,6 @@ - Update SocketRocket dependency [\#804](/~https://github.com/ably/ably-ios/issues/804) ## [1.1.0](/~https://github.com/ably/ably-ios/tree/1.1.0) (2018-08-10) - [Full Changelog](/~https://github.com/ably/ably-ios/compare/1.0.14...1.1.0) **Implemented enhancements:** diff --git a/Cartfile b/Cartfile index 97ae55264..de538ec8d 100644 --- a/Cartfile +++ b/Cartfile @@ -1,5 +1,5 @@ github "ably-forks/SocketRocket" == 0.5.2-ably-2 -github "rvi/msgpack-objective-C" "ad0a627becfd27ca45dfa6684b3fc79f058f5ce9" -github "ably-forks/KSCrash" "1.15.8-ably-2" -github "whitesmith/ulid" == 1.0.2 +github "ably-forks/msgpack-objective-C" == 0.2.0-ably-1 +github "ably-forks/KSCrash" == 1.15.18-ably-1 +github "whitesmith/ulid" == 1.0.4 github "soffes/SAMKeychain" == 1.5.3 diff --git a/Cartfile.private b/Cartfile.private new file mode 100644 index 000000000..ced76538c --- /dev/null +++ b/Cartfile.private @@ -0,0 +1,4 @@ +github "Quick/Quick" == 1.3.2 +github "Quick/Nimble" == 7.3.1 +github "whitesmith/Aspects" "1.4.2-ws1" +github "SwiftyJSON/SwiftyJSON" == 4.2.0 diff --git a/Cartfile.resolved b/Cartfile.resolved index cefd747d5..8394bb2dd 100644 --- a/Cartfile.resolved +++ b/Cartfile.resolved @@ -1,5 +1,9 @@ +github "Quick/Nimble" "v7.3.1" +github "Quick/Quick" "v1.3.2" +github "SwiftyJSON/SwiftyJSON" "4.2.0" github "ably-forks/KSCrash" "1.15.8-ably-2" github "ably-forks/SocketRocket" "0.5.2-ably-2" -github "rvi/msgpack-objective-C" "ad0a627becfd27ca45dfa6684b3fc79f058f5ce9" +github "ably-forks/msgpack-objective-C" "0.2.0-ably-1" github "soffes/SAMKeychain" "v1.5.3" -github "whitesmith/ulid" "1.0.2" +github "whitesmith/Aspects" "1.4.2-ws1" +github "whitesmith/ulid" "1.0.4" diff --git a/Examples/Tests/Podfile.lock b/Examples/Tests/Podfile.lock index 8b196874b..13462e0e5 100644 --- a/Examples/Tests/Podfile.lock +++ b/Examples/Tests/Podfile.lock @@ -1,10 +1,10 @@ PODS: - - Ably (1.1.0): + - Ably (1.1.2): - KSCrashAblyFork (= 1.15.8-ably-2) - msgpack (= 0.1.8) - SAMKeychain (= 1.5.3) - SocketRocketAblyFork (= 0.5.2-ably-2) - - ULID (= 1.0.2) + - ULID (= 1.0.3) - KSCrashAblyFork (1.15.8-ably-2): - KSCrashAblyFork/Installations (= 1.15.8-ably-2) - KSCrashAblyFork/Installations (1.15.8-ably-2): @@ -71,7 +71,7 @@ PODS: - msgpack (0.1.8) - SAMKeychain (1.5.3) - SocketRocketAblyFork (0.5.2-ably-2) - - ULID (1.0.2) + - ULID (1.0.3) DEPENDENCIES: - Ably (from `../..`) @@ -89,12 +89,12 @@ EXTERNAL SOURCES: :path: "../.." SPEC CHECKSUMS: - Ably: 20db31b014cccfcae04bd10566d2878996c57e75 + Ably: 1f1232175d54ffc1cc00ee5c537e9a963f38fc34 KSCrashAblyFork: d356f10dcde9359db775334e38e93a48df6508f7 msgpack: 97491d2ea799408f4694f2c7d7fd79baf77853dd SAMKeychain: 483e1c9f32984d50ca961e26818a534283b4cd5c SocketRocketAblyFork: 8337d4d53e49a8af8dbe76c8416ef55605f758c6 - ULID: fcabaa95746b670beb80c029beb3372da2f729bd + ULID: d583a374311df11a7eeecbfd3ce68d02339ce24d PODFILE CHECKSUM: 6af34bf7f91045b23539816c1d0cfe253bec5ea5 diff --git a/Examples/Tests/Tests.xcodeproj/project.pbxproj b/Examples/Tests/Tests.xcodeproj/project.pbxproj index e00482b94..a288512af 100644 --- a/Examples/Tests/Tests.xcodeproj/project.pbxproj +++ b/Examples/Tests/Tests.xcodeproj/project.pbxproj @@ -184,11 +184,11 @@ TargetAttributes = { EBF38F571CE3D0E000F0D574 = { CreatedOnToolsVersion = 7.3.1; - LastSwiftMigration = 0830; + LastSwiftMigration = 1010; }; EBF38F6B1CE3D0E000F0D574 = { CreatedOnToolsVersion = 7.3.1; - LastSwiftMigration = 0830; + LastSwiftMigration = 1010; TestTargetID = EBF38F571CE3D0E000F0D574; }; }; @@ -474,7 +474,8 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = io.ably.Tests; PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 3.0; + SWIFT_SWIFT3_OBJC_INFERENCE = On; + SWIFT_VERSION = 4.2; }; name = Debug; }; @@ -487,7 +488,8 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = io.ably.Tests; PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 3.0; + SWIFT_SWIFT3_OBJC_INFERENCE = On; + SWIFT_VERSION = 4.2; }; name = Release; }; @@ -500,7 +502,8 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = io.ably.TestsTests; PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 3.0; + SWIFT_SWIFT3_OBJC_INFERENCE = On; + SWIFT_VERSION = 4.2; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Tests.app/Tests"; }; name = Debug; @@ -514,7 +517,8 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = io.ably.TestsTests; PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 3.0; + SWIFT_SWIFT3_OBJC_INFERENCE = On; + SWIFT_VERSION = 4.2; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Tests.app/Tests"; }; name = Release; diff --git a/Examples/Tests/Tests/AppDelegate.swift b/Examples/Tests/Tests/AppDelegate.swift index 9dd4521c6..f9fee3cd7 100644 --- a/Examples/Tests/Tests/AppDelegate.swift +++ b/Examples/Tests/Tests/AppDelegate.swift @@ -14,7 +14,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? - func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { + func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { // Override point for customization after application launch. return true } diff --git a/Examples/Tests/TestsTests/TestsTests.swift b/Examples/Tests/TestsTests/TestsTests.swift index 4ea4cd89e..0a5ac3e22 100644 --- a/Examples/Tests/TestsTests/TestsTests.swift +++ b/Examples/Tests/TestsTests/TestsTests.swift @@ -42,12 +42,12 @@ class TestsTests: XCTestCase { .flatMap({ $0[0] as? NSDictionary }) .flatMap({ $0["keyStr"] as? NSString }) else { - XCTFail("Expected key in response data, got: \(responseData)") + XCTFail("Expected key in response data, got: \(String(describing: responseData))") return } let options = ARTClientOptions(key: key as String) - options.environment = "push-device-auth-dev" + options.environment = "sandbox" let client = ARTRealtime(options: options) let receiveExpectation = self.expectation(description: "message received") @@ -64,7 +64,7 @@ class TestsTests: XCTestCase { let backgroundRealtimeExpectation = self.expectation(description: "Realtime in a Background Queue") var realtime: ARTRealtime! //strong reference - URLSession.shared.dataTask(with: URL(string: "https://ably.io")!) { _ in + URLSession.shared.dataTask(with: URL(string: "https://ably.io")!) { _,_,_ in realtime = ARTRealtime(key: key as String) realtime.channels.get("foo").attach { _ in defer { backgroundRealtimeExpectation.fulfill() } @@ -74,9 +74,9 @@ class TestsTests: XCTestCase { let backgroundRestExpectation = self.expectation(description: "Rest in a Background Queue") var rest: ARTRest! //strong reference - URLSession.shared.dataTask(with: URL(string: "https://ably.io")!) { _ in + URLSession.shared.dataTask(with: URL(string: "https://ably.io")!) { _,_,_ in rest = ARTRest(key: key as String) - rest.channels.get("foo").history { _ in + rest.channels.get("foo").history { result, error in defer { backgroundRestExpectation.fulfill() } } }.resume() diff --git a/Makefile b/Makefile new file mode 100644 index 000000000..39ed0deed --- /dev/null +++ b/Makefile @@ -0,0 +1,178 @@ +SHELL := /bin/bash +.PHONY: help setup submodules + +RUBY := $(shell command -v ruby 2>/dev/null) +HOMEBREW := $(shell command -v brew 2>/dev/null) + +default: help + +# Add the following 'help' target to your Makefile +# And add help text after each target name starting with '\#\#' + +# COLORS +GREEN := $(shell tput -Txterm setaf 2) +YELLOW := $(shell tput -Txterm setaf 3) +WHITE := $(shell tput -Txterm setaf 7) +RESET := $(shell tput -Txterm sgr0) + +## ----- Helper functions ------ + +# Helper target for declaring an external executable as a recipe dependency. +# For example, +# `my_target: | _program_awk` +# will fail before running the target named `my_target` if the command `awk` is +# not found on the system path. +_program_%: FORCE + @_=$(or $(shell which $* 2> /dev/null),$(error `$*` command not found. Please install `$*` and try again)) + +# Helper target for declaring required environment variables. +# +# For example, +# `my_target`: | _var_PARAMETER` +# +# will fail before running `my_target` if the variable `PARAMETER` is not declared. +_var_%: FORCE + @_=$(or $($*),$(error `$*` is a required parameter)) + +## ------ Commmands ----------- + +TARGET_MAX_CHAR_NUM=20 +## Show help +help: + @echo '' + @echo 'Usage:' + @echo ' ${YELLOW}make${RESET} ${GREEN}${RESET}' + @echo '' + @echo 'Targets:' + @awk '/^[a-zA-Z\-\_0-9]+:/ { \ + helpMessage = match(lastLine, /^## (.*)/); \ + if (helpMessage) { \ + helpCommand = substr($$1, 0, index($$1, ":")-1); \ + helpMessage = substr(lastLine, RSTART + 3, RLENGTH); \ + printf " ${YELLOW}%-$(TARGET_MAX_CHAR_NUM)s${RESET} ${GREEN}%s${RESET}\n", helpCommand, helpMessage; \ + } \ + } \ + { lastLine = $$0 }' \ + $(MAKEFILE_LIST) + +## Install dependencies. +setup: \ + submodules \ + install_carthage \ + update_carthage_dependencies \ + install_fastlane + +## Update dependencies. +update: \ + submodules \ + update_carthage \ + update_carthage_dependencies \ + update_fastlane + +install_fastlane: + $(info Installing Fastlane…) + + gem install fastlane -v 2.108.0 + +update_fastlane: + $(info Updating Fastlane…) + + gem update fastlane -v 2.108.0 + +install_carthage: + $(info Installing Carthage…) + + brew unlink carthage || true + brew install carthage + brew link --overwrite carthage + +update_carthage: + $(info Updating Carthage…) + + brew upgrade carthage + +## -- Source Code Tasks -- + +## Update git submodule's +submodules: + $(info Updating submodules…) + + git submodule update --init --recursive + +## -- Testing -- + +## [Tests] Run tests on iOS 12 using sandbox environment +test_iOS: + ABLY_ENV="sandbox" NAME="ably-iOS" fastlane test_iOS12 + +## [Tests] Run tests on tvOS 12 using sandbox environment +test_tvOS: + ABLY_ENV="sandbox" NAME="ably-tvOS" fastlane test_tvOS12 + +## [Tests] Run tests on macOS using sandbox environment +test_macOS: + ABLY_ENV="sandbox" NAME="ably-macOS" fastlane test_macOS + +## -- CocoaPods -- + +## [CocoaPods] Validates Ably pod +pod_lint: + pod lib lint --swift-version=4.2 --allow-warnings + +## -- Carthage -- + +## [Carthage] Make a .zip package of frameworks +carthage_package: + $(info Building and archiving…) + + carthage build --no-skip-current --archive + +## [Carthage] Clear Carthage caches. Helps with Carthage update issues +carthage_clean: + $(info Deleting Carthage caches…) + + rm -rf ~/Library/Caches/org.carthage.CarthageKit/dependencies/ + +## [Carthage] Update dependencies +update_carthage_dependencies: + $(info Updating Carthage dependencies for all platforms…) + + carthage update + +## [Carthage] Update dependencies for iOS +update_carthage_dependencies_ios: + $(info Updating Carthage dependencies for iOS…) + + carthage update --platform iOS + +## [Carthage] Update dependencies for tvOS +update_carthage_dependencies_tvos: + $(info Updating Carthage dependencies for tvOS…) + + carthage update --platform tvOS + +## [Carthage] Update dependencies for macOS +update_carthage_dependencies_macos: + $(info Updating Carthage dependencies for macOS…) + + carthage update --platform macOS + +## -- Version -- + +## [Version] Bump Patch Version +bump_patch: + $(info Bumping version Patch type…) + + Scripts/set-version.sh `Scripts/get-version.sh | awk -F. '{$$NF = $$NF + 1;} 1' | sed 's/ /./g'` + +## [Version] Bump Minor Version +bump_minor: + $(info Bumping version Minor type…) + + Scripts/set-version.sh `Scripts/get-version.sh | awk -F. '{$$(NF-1) = $$(NF-1) + 1;} 1' | sed 's/ /./g' | awk -F. '{$$(NF) = 0;} 1' | sed 's/ /./g' ` + +## [Version] Bump Major Version +bump_major: + $(info Bumping version Major type…) + + Scripts/set-version.sh `Scripts/get-version.sh | awk -F. '{$$(NF-2) = $$(NF-2) + 1;} 1' | sed 's/ /./g' | awk -F. '{$$(NF-1) = 0;} 1' | sed 's/ /./g' | awk -F. '{$$(NF) = 0;} 1' | sed 's/ /./g' ` diff --git a/Podfile b/Podfile deleted file mode 100644 index a15352f6d..000000000 --- a/Podfile +++ /dev/null @@ -1,14 +0,0 @@ -platform :ios, '8.0' -use_frameworks! - -def test_pods - pod 'Quick', '1.3.2' - pod 'Nimble', '7.3.1' - # Helpers - pod 'Aspects' - pod 'SwiftyJSON', '4.2.0' -end - -target 'AblySpec' do - test_pods -end diff --git a/Podfile.lock b/Podfile.lock deleted file mode 100644 index 2ccde0b3b..000000000 --- a/Podfile.lock +++ /dev/null @@ -1,28 +0,0 @@ -PODS: - - Aspects (1.4.1) - - Nimble (7.3.1) - - Quick (1.3.2) - - SwiftyJSON (4.2.0) - -DEPENDENCIES: - - Aspects - - Nimble (= 7.3.1) - - Quick (= 1.3.2) - - SwiftyJSON (= 4.2.0) - -SPEC REPOS: - /~https://github.com/cocoapods/specs.git: - - Aspects - - Nimble - - Quick - - SwiftyJSON - -SPEC CHECKSUMS: - Aspects: 7595ba96a6727a58ebcbfc954497fc5d2fdde546 - Nimble: 04f732da099ea4d153122aec8c2a88fd0c7219ae - Quick: 2623cb30d7a7f41ca62f684f679586558f483d46 - SwiftyJSON: c4bcba26dd9ec7a027fc8eade48e2c911f229e96 - -PODFILE CHECKSUM: 9bf82af1364f7516b3cef23493c8ab32033ba654 - -COCOAPODS: 1.5.3 diff --git a/README.md b/README.md index 63d04cc85..b5a46796c 100644 --- a/README.md +++ b/README.md @@ -1,40 +1,62 @@ # [Ably](https://www.ably.io) iOS client library +[![Build Status](https://travis-ci.org/ably/ably-ios.svg?branch=master)](https://travis-ci.org/ably/ably-ios) +[![CocoaPods Compatible](https://img.shields.io/cocoapods/v/Ably.svg)](https://img.shields.io/cocoapods/v/Ably.svg) +[![Carthage Compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](/~https://github.com/Carthage/Carthage) +![Platforms](https://img.shields.io/badge/platforms-iOS%20%7C%20tvOS%20%7C%20macOS-333333.svg) +![Languages](https://img.shields.io/badge/languages-Swift%20%7C%20ObjC-333333.svg) + An iOS client library for [ably.io](https://www.ably.io), the realtime messaging service, written in Objective-C. ## Supported platforms This SDK is compatible with projects that target: -- iOS9 -- iOS10 -- iOS11 +- iOS 9.0+ +- tvOS 9.0+ +- macOS 10.10+ We maintain compatibility and explicitly support these platform versions, including performing CI testing on all library revisions. -We do not explicitly maintain compatibility with older platform versions; we no longer perform CI testing on iOS8 as of version 1.0.12 (released on January 31st 2018). Any known incompatibilities with older versions can be found [here](/~https://github.com/ably/ably-ios/issues?q=is%3Aissue+is%3Aopen+label%3A%22compatibility%22). +We do not explicitly maintain compatibility with older platform versions; we no longer perform CI testing on iOS 8 as of version 1.0.12 (released on January 31st 2018). Any known incompatibilities with older versions can be found [here](/~https://github.com/ably/ably-ios/issues?q=is%3Aissue+is%3Aopen+label%3A%22compatibility%22). If you find any issues with unsupported platform versions, please [raise an issue](/~https://github.com/ably/ably-ios/issues) in this repository or [contact Ably customer support](https://support.ably.io) for advice. -Note: As of version `1.1.1` this library based on the 1.1 library specification. It implements a subset of 1.1 features: +#### Acknowledgments + +As of version `1.1.2` this library based on the 1.1 library specification. It implements a subset of 1.1 features: - updated push API and push device authentication; -- support for enforcement of the maxMessageSize attribute -Other minor features and bugfixes are included, as listed in the [changelog](CHANGELOG.md#110-2018-08-10). +- support for enforcement of the `maxMessageSize` attribute +Other minor features and bugfixes are included, as listed in the [changelog](CHANGELOG.md#112-2018-11-06). + +##### ⚠️ macOS + +The macOS support hasn't been officially released and it's only available from the `mac-support` branch. Please be aware that Push Notifications are currently unsupported. There is a demo available [here](/~https://github.com/ably/demo-macos). + +##### ⚠️ tvOS + +The tvOS support hasn't been officially released and it's only available from the `tv-support` branch. ## Documentation -Visit https://www.ably.io/documentation for a complete API reference and more examples. +Visit [ably.io/documentation](https://www.ably.io/documentation) for a complete API reference and more examples. -## Installation +## Installation Guide -You can install Ably for iOS through CocoaPods, Carthage or manually. +You can install Ably for iOS and macOS through CocoaPods, Carthage or manually. -### Installing through [CocoaPods](https://cocoapods.org/) (recommended) +### Installing through [CocoaPods](https://cocoapods.org/) Add this line to your application's Podfile: # For Xcode 7.3 and newer pod 'Ably', '~> 1.0' + + # With macOS Support (not officially released) + pod 'Ably', :git => '/~https://github.com/ably/ably-ios.git', :branch => 'mac-support' + + # With tvOS Support (not officially released) + pod 'Ably', :git => '/~https://github.com/ably/ably-ios.git', :branch => 'tv-support' And then install the dependency: @@ -46,6 +68,12 @@ Add this line to your application's Cartfile: # For Xcode 7.3 and newer github "ably/ably-ios" ~> 1.0 + + # With macOS Support (not officially released) + github "ably/ably-ios" "mac-support" + + # With tvOS Support (not officially released) + github "ably/ably-ios" "tv-support" And then run `carthage update` to build the framework and drag the built Ably.framework into your Xcode project. @@ -55,10 +83,10 @@ If you see, for example, a `dyld: Library not loaded: @rpath/SocketRocket.framew ### Manual installation -1. Get the code from GitHub [from the release page](/~https://github.com/ably/ably-ios/releases/tag/1.1.1), or clone it to get the latest, unstable and possibly underdocumented version: `git clone git@github.com:ably/ably-ios.git` +1. Get the code from GitHub [from the release page](/~https://github.com/ably/ably-ios/releases/tag/1.1.2), or clone it to get the latest, unstable and possibly underdocumented version: `git clone git@github.com:ably/ably-ios.git` 2. Drag the directory `ably-ios/ably-ios` into your project as a group. -3. Ably depends on [SocketRocket](/~https://github.com/facebook/SocketRocket) 0.5.1; get it [from the releases page](/~https://github.com/facebook/SocketRocket/releases/tag/0.5.1) and follow [its manual installation instructions](/~https://github.com/facebook/SocketRocket#installing-ios). -4. Ably also depends on [msgpack](/~https://github.com/rvi/msgpack-objective-C) 0.1.8; get it [from the releases page](/~https://github.com/rvi/msgpack-objective-C/releases/tag/0.1.8) and link it into your project. +3. Ably depends on our [SocketRocket Fork](/~https://github.com/ably-forks/SocketRocket) 0.5.2; get it [from the releases page](/~https://github.com/ably-forks/SocketRocket/releases/tag/0.5.2-ably-2) and follow [its manual installation instructions](/~https://github.com/ably-forks/SocketRocket/#installing). +4. Ably also depends on our [MessagePack Fork](/~https://github.com/ably-forks/msgpack-objective-C) 0.2.0; get it [from the releases page](/~https://github.com/ably-forks/msgpack-objective-C/releases/tag/0.2.0-ably-1) and link it into your project. ## Thread-safety @@ -68,14 +96,10 @@ The library makes the following thread-safety guarantees: * "Value" objects (e. g. `ARTTokenDetails`, data from messages) returned by the library can be safely read from and written to. * Objects passed to the library must not be mutated afterwards. They can be safely passed again, or read from; they won't be written to by the library. -All internal operations are dispatched to a single serial GCD queue. You can specify -a custom queue for this, which must be serial, with `ARTClientOptions.internalDispatchQueue`. +All internal operations are dispatched to a single serial GCD queue. You can specify a custom queue for this, which must be serial, with `ARTClientOptions.internalDispatchQueue`. All calls to callbacks provided by the user are dispatched to the main queue by default. -This allows you to react to Ably's output by doing UI operations directly. You -can specify a different queue with `ARTClientOptions.dispatchQueue`. It shouldn't -be the same queue as the `ARTClientOptions.internalDispatchQueue`, since that can -lead to deadlocks. +This allows you to react to Ably's output by doing UI operations directly. You can specify a different queue with `ARTClientOptions.dispatchQueue`. It shouldn't be the same queue as the `ARTClientOptions.internalDispatchQueue`, since that can lead to deadlocks. ## Using the Realtime API @@ -571,7 +595,7 @@ You can also view the [community reported Github issues](/~https://github.com/ably In this repo the `master` branch contains the latest stable version of the Ably SDK. Pushing changes to the `master` branch is locked. All the development (bug fixing, feature implementation, etc.) is done against the `develop` branch, which you should branch from whenever you'd like to make modifications. Here's the steps to follow when contributing to this repo. 1. Fork it -2. Install dependencies by running `pod install` and `carthage bootstrap` +2. Setup or update your machine by running `make setup|update` 3. Create your feature branch from `develop` (`git checkout develop && git checkout -b my-new-feature-branch`) 4. Commit your changes (`git commit -am 'Add some feature'`) 5. Ensure you have added suitable tests and the test suite is passing @@ -580,14 +604,16 @@ In this repo the `master` branch contains the latest stable version of the Ably ## Running tests -The project supports fastlane. To run tests use `fastlane scan --scheme "Ably"`. +To run tests use `make test_[iOS|tvOS|macOS]`. + +Note: [Fastlane](https://fastlane.tools) should be installed. ## Release Process This library uses [semantic versioning](http://semver.org/). For each release, the following needs to be done: * Create a new branch `release-x.x.x` (where `x.x.x` is the new version number) from the `develop` branch -* Run script `./Scripts/set-version.sh x.x.x` to assign the new version number. +* Run `make bump_[major|minor|patch]` to bump the new version number. * Run [`github_changelog_generator`](/~https://github.com/skywinder/Github-Changelog-Generator) to automate the update of the [CHANGELOG](./CHANGELOG.md). Once the CHANGELOG has completed, manually change the `Unreleased` heading and link with the current version number such as `v1.0.0`. Also ensure that the `Full Changelog` link points to the new version tag instead of the `HEAD`. Commit this change. * Push tag to origin such as `git push origin x.x.x`. * Make a PR against `develop` @@ -599,4 +625,4 @@ This library uses [semantic versioning](http://semver.org/). For each release, t ## License -Copyright (c) 2017 Ably Real-time Ltd, Licensed under the Apache License, Version 2.0. Refer to [LICENSE](LICENSE) for the license terms. +Copyright (c) 2018 Ably Real-time Ltd, Licensed under the Apache License, Version 2.0. Refer to [LICENSE](LICENSE) for the license terms. diff --git a/Scanfile b/Scanfile deleted file mode 100644 index cac323c83..000000000 --- a/Scanfile +++ /dev/null @@ -1,7 +0,0 @@ -scheme "Ably" - -open_report false - -clean true - -skip_slack true diff --git a/Scripts/set-version.sh b/Scripts/set-version.sh index b95d9ce4a..96a87e383 100755 --- a/Scripts/set-version.sh +++ b/Scripts/set-version.sh @@ -18,9 +18,7 @@ echo "Old version: $OLD_VERSION" # Assign new version echo "$VERSION_CONFIG_VAR = $NEW_VERSION" > $VERSION_CONFIG_FILE -sed -i '' -e 's/'"$OLD_VERSION"'/'"$NEW_VERSION"'/g' Source/Info.plist sed -i '' -e 's/'"$OLD_VERSION"'/'"$NEW_VERSION"'/g' README.md -sed -i '' -e 's/'"$OLD_VERSION"'/'"$NEW_VERSION"'/g' Source/ARTDefault.m sed -i '' -e 's/'"$OLD_VERSION"'/'"$NEW_VERSION"'/g' Spec/RealtimeClientConnection.swift git add . && git commit -m "Bump version to $NEW_VERSION." diff --git a/Scripts/setup.sh b/Scripts/setup.sh deleted file mode 100755 index b09a356e3..000000000 --- a/Scripts/setup.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/bash - -# exit if a command fails -set -e - -# Install Fastlane -gem install fastlane -v 2.77.1 - -# Install CocoaPods -gem install cocoapods - -# Install Carthage -brew update && brew install carthage - -# Install dependencies -pod install -carthage bootstrap diff --git a/Source/ARTAuth.m b/Source/ARTAuth.m index eacb958d2..a95bb74e5 100644 --- a/Source/ARTAuth.m +++ b/Source/ARTAuth.m @@ -8,7 +8,7 @@ #import "ARTAuth+Private.h" -#ifdef TARGET_OS_IPHONE +#if TARGET_OS_IPHONE #import #endif @@ -52,11 +52,16 @@ - (instancetype)init:(ARTRest *)rest withOptions:(ARTClientOptions *)options { name:NSCurrentLocaleDidChangeNotification object:nil]; - #ifdef TARGET_OS_IPHONE + #if TARGET_OS_IPHONE [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didReceiveApplicationSignificantTimeChangeNotification:) name:UIApplicationSignificantTimeChangeNotification object:nil]; + #else + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(didReceiveApplicationSignificantTimeChangeNotification:) + name:NSSystemClockDidChangeNotification + object:nil]; #endif } return self; @@ -69,8 +74,10 @@ - (void)dealloc { - (void)removeTimeOffsetObserver { [[NSNotificationCenter defaultCenter] removeObserver:self name:NSCurrentLocaleDidChangeNotification object:nil]; - #ifdef TARGET_OS_IPHONE + #if TARGET_OS_IPHONE [[NSNotificationCenter defaultCenter] removeObserver:self name:UIApplicationSignificantTimeChangeNotification object:nil]; + #else + [[NSNotificationCenter defaultCenter] removeObserver:self name:NSSystemClockDidChangeNotification object:nil]; #endif } diff --git a/Source/ARTChannel.h b/Source/ARTChannel.h index 0e136227c..fbea53801 100644 --- a/Source/ARTChannel.h +++ b/Source/ARTChannel.h @@ -45,9 +45,7 @@ NS_ASSUME_NONNULL_BEGIN - (void)history:(void(^)(ARTPaginatedResult *_Nullable result, ARTErrorInfo *_Nullable error))callback; -#ifdef TARGET_OS_IOS - (ARTLocalDevice *)device; -#endif - (BOOL)exceedMaxSize:(NSArray *)messages; diff --git a/Source/ARTChannel.m b/Source/ARTChannel.m index 35bb49f36..9fdc57b99 100644 --- a/Source/ARTChannel.m +++ b/Source/ARTChannel.m @@ -183,11 +183,9 @@ - (void)internalPostMessages:(id)data callback:(void (^)(ARTErrorInfo *__art_nul NSAssert(false, @"-[%@ %@] should always be overriden.", self.class, NSStringFromSelector(_cmd)); } -#ifdef TARGET_OS_IOS - (ARTLocalDevice *)device { NSAssert(false, @"-[%@ %@] should always be overriden.", self.class, NSStringFromSelector(_cmd)); return nil; } -#endif @end diff --git a/Source/ARTConstants.m b/Source/ARTConstants.m index 4e2325713..c26109d46 100644 --- a/Source/ARTConstants.m +++ b/Source/ARTConstants.m @@ -10,4 +10,3 @@ NSString *const ARTHttpHeaderFieldErrorCodeKey = @"X-Ably-Errorcode"; NSString *const ARTHttpHeaderFieldErrorMessageKey = @"X-Ably-Errormessage"; - diff --git a/Source/ARTDefault.m b/Source/ARTDefault.m index ae72d30f9..1ce29c293 100644 --- a/Source/ARTDefault.m +++ b/Source/ARTDefault.m @@ -8,14 +8,16 @@ #import "ARTDefault+Private.h" +#import "Ably.h" + @implementation ARTDefault NSString *const ARTDefault_restHost = @"rest.ably.io"; NSString *const ARTDefault_realtimeHost = @"realtime.ably.io"; NSString *const ARTDefault_version = @"1.1"; -NSString *const ARTDefault_libraryVersion = @"1.1.1"; NSString *const ARTDefault_ablyBundleId = @"io.ably.Ably"; NSString *const ARTDefault_bundleVersionKey = @"CFBundleShortVersionString"; +NSString *const ARTDefault_bundleBuildNumberKey = @"CFBundleVersion"; NSString *const ARTDefault_platform = @"ios-"; static NSTimeInterval _realtimeRequestTimeout = 10.0; @@ -81,7 +83,17 @@ + (void)setMaxMessageSize:(NSInteger)value { } + (NSString *)libraryVersion { - return [NSString stringWithFormat:@"%@%@", ARTDefault_platform, ARTDefault_libraryVersion]; + return [NSString stringWithFormat:@"%@%@", ARTDefault_platform, [self bundleVersion]]; +} + ++ (NSString *)bundleVersion { + NSDictionary *infoDictionary = [[NSBundle bundleForClass: [ARTDefault class]] infoDictionary]; + return infoDictionary[ARTDefault_bundleVersionKey]; +} + ++ (NSString *)bundleBuildNumber { + NSDictionary *infoDictionary = [[NSBundle bundleForClass: [ARTDefault class]] infoDictionary]; + return infoDictionary[ARTDefault_bundleBuildNumberKey]; } @end diff --git a/Source/ARTDeviceIdentityTokenDetails.h b/Source/ARTDeviceIdentityTokenDetails.h index b3c562d53..811349b05 100644 --- a/Source/ARTDeviceIdentityTokenDetails.h +++ b/Source/ARTDeviceIdentityTokenDetails.h @@ -10,7 +10,7 @@ NS_ASSUME_NONNULL_BEGIN -@interface ARTDeviceIdentityTokenDetails : NSObject +@interface ARTDeviceIdentityTokenDetails : NSObject /** Token string. diff --git a/Source/ARTDeviceIdentityTokenDetails.m b/Source/ARTDeviceIdentityTokenDetails.m index ea1a9ec7a..4cfce4f37 100644 --- a/Source/ARTDeviceIdentityTokenDetails.m +++ b/Source/ARTDeviceIdentityTokenDetails.m @@ -46,11 +46,11 @@ - (nullable instancetype)initWithCoder:(NSCoder *)aDecoder { return nil; } - _token = [aDecoder decodeObjectForKey:ARTCoderTokenKey]; - _issued = [aDecoder decodeObjectForKey:ARTCoderIssuedKey]; - _expires = [aDecoder decodeObjectForKey:ARTCoderExpiresKey]; - _capability = [aDecoder decodeObjectForKey:ARTCoderCapabilityKey]; - _deviceId = [aDecoder decodeObjectForKey:ARTCoderDeviceIdKey]; + _token = [aDecoder decodeObjectOfClass:[NSString class] forKey:ARTCoderTokenKey]; + _issued = [aDecoder decodeObjectOfClass:[NSDate class] forKey:ARTCoderIssuedKey]; + _expires = [aDecoder decodeObjectOfClass:[NSDate class] forKey:ARTCoderExpiresKey]; + _capability = [aDecoder decodeObjectOfClass:[NSString class] forKey:ARTCoderCapabilityKey]; + _deviceId = [aDecoder decodeObjectOfClass:[NSString class] forKey:ARTCoderDeviceIdKey]; return self; } @@ -63,14 +63,40 @@ - (void)encodeWithCoder:(NSCoder *)aCoder { [aCoder encodeObject:self.deviceId forKey:ARTCoderDeviceIdKey]; } +#pragma mark - NSSecureCoding + ++ (BOOL)supportsSecureCoding { + return true; +} + #pragma mark - Archive/Unarchive - (NSData *)archive { - return [NSKeyedArchiver archivedDataWithRootObject:self]; + if (@available(macOS 10.13, iOS 11, tvOS 11, *)) { + NSError *error; + NSData *data = [NSKeyedArchiver archivedDataWithRootObject:self requiringSecureCoding:false error:&error]; + if (error) { + NSLog(@"ARTDeviceIdentityTokenDetails Archive failed: %@", error); + } + return data; + } + else { + return [NSKeyedArchiver archivedDataWithRootObject:self]; + } } + (ARTDeviceIdentityTokenDetails *)unarchive:(NSData *)data { - return [NSKeyedUnarchiver unarchiveObjectWithData:data]; + if (@available(macOS 10.13, iOS 11, tvOS 11, *)) { + NSError *error; + ARTDeviceIdentityTokenDetails *result = [NSKeyedUnarchiver unarchivedObjectOfClass:[self class] fromData:data error:&error]; + if (error) { + NSLog(@"ARTDeviceIdentityTokenDetails Unarchive failed: %@", error); + } + return result; + } + else { + return [NSKeyedUnarchiver unarchiveObjectWithData:data]; + } } @end diff --git a/Source/ARTLocalDevice.m b/Source/ARTLocalDevice.m index eede04a51..4ad7ba711 100644 --- a/Source/ARTLocalDevice.m +++ b/Source/ARTLocalDevice.m @@ -47,6 +47,7 @@ - (instancetype)initWithClientId:(NSString *)clientId storage:(id)storage { ARTLocalDevice *device = [[ARTLocalDevice alloc] initWithClientId:clientId storage:storage]; device.platform = ARTDevicePlatform; + #if TARGET_OS_IOS switch (UI_USER_INTERFACE_IDIOM()) { case UIUserInterfaceIdiomPad: device.formFactor = @"tablet"; @@ -55,6 +56,9 @@ + (ARTLocalDevice *)load:(NSString *)clientId storage:(id)stor default: device.formFactor = ARTDeviceFormFactor; } + #else + device.formFactor = ARTDeviceFormFactor; + #endif device.push.recipient[@"transportType"] = ARTDevicePushTransportType; NSString *deviceId = [storage objectForKey:ARTDeviceIdKey]; diff --git a/Source/ARTLocalDeviceStorage.m b/Source/ARTLocalDeviceStorage.m index b14e8999b..4580d489f 100644 --- a/Source/ARTLocalDeviceStorage.m +++ b/Source/ARTLocalDeviceStorage.m @@ -35,7 +35,9 @@ - (void)setObject:(nullable id)value forKey:(NSString *)key { } - (NSString *)secretForDevice:(ARTDeviceId *)deviceId { + #if TARGET_OS_IPHONE SAMKeychain.accessibilityType = kSecAttrAccessibleWhenUnlocked; + #endif NSError *error = nil; NSString *value = [SAMKeychain passwordForService:ARTDeviceSecretKey account:(NSString *)deviceId error:&error]; @@ -50,7 +52,9 @@ - (NSString *)secretForDevice:(ARTDeviceId *)deviceId { } - (void)setSecret:(NSString *)value forDevice:(ARTDeviceId *)deviceId { + #if TARGET_OS_IPHONE SAMKeychain.accessibilityType = kSecAttrAccessibleWhenUnlocked; + #endif NSError *error = nil; if (value == nil) { diff --git a/Source/ARTMsgPackEncoder.m b/Source/ARTMsgPackEncoder.m index 1795066b4..0d95b821b 100644 --- a/Source/ARTMsgPackEncoder.m +++ b/Source/ARTMsgPackEncoder.m @@ -1,13 +1,18 @@ // // ARTMsgPackEncoder.m -// ably +// Ably // // Created by Toni Cárdenas on 21/3/16. // Copyright © 2016 Ably. All rights reserved. // #import "ARTMsgPackEncoder.h" +#if COCOAPODS && !TEST_SUITE +#import +#else +// Carthage #import +#endif @implementation ARTMsgPackEncoder diff --git a/Source/ARTPush.h b/Source/ARTPush.h index dbdb120af..d7a870113 100644 --- a/Source/ARTPush.h +++ b/Source/ARTPush.h @@ -17,7 +17,7 @@ #pragma mark ARTPushRegisterer interface -#ifdef TARGET_OS_IOS +#if TARGET_OS_IOS @protocol ARTPushRegistererDelegate @@ -46,7 +46,7 @@ NS_ASSUME_NONNULL_BEGIN - (instancetype)init NS_UNAVAILABLE; -#ifdef TARGET_OS_IOS +#if TARGET_OS_IOS /// Push Registration token diff --git a/Source/ARTPush.m b/Source/ARTPush.m index df8a9e3a9..e76477c90 100644 --- a/Source/ARTPush.m +++ b/Source/ARTPush.m @@ -14,7 +14,7 @@ #import "ARTJsonEncoder.h" #import "ARTJsonLikeEncoder.h" #import "ARTEventEmitter.h" -#ifdef TARGET_OS_IOS +#if TARGET_OS_IOS #import "ARTPushActivationStateMachine.h" #endif #import "ARTPushActivationEvent.h" @@ -43,7 +43,7 @@ - (instancetype)init:(ARTRest *)rest { return self; } -#ifdef TARGET_OS_IOS +#if TARGET_OS_IOS - (ARTPushActivationStateMachine *)activationMachine { static dispatch_once_t once; diff --git a/Source/ARTPushActivationEvent.h b/Source/ARTPushActivationEvent.h index ec682c47e..a5c69ad40 100644 --- a/Source/ARTPushActivationEvent.h +++ b/Source/ARTPushActivationEvent.h @@ -14,7 +14,7 @@ NS_ASSUME_NONNULL_BEGIN -@interface ARTPushActivationEvent : NSObject +@interface ARTPushActivationEvent : NSObject - (NSData *)archive; + (nullable ARTPushActivationState *)unarchive:(NSData *)data; diff --git a/Source/ARTPushActivationEvent.m b/Source/ARTPushActivationEvent.m index a94510795..a80ed168e 100644 --- a/Source/ARTPushActivationEvent.m +++ b/Source/ARTPushActivationEvent.m @@ -31,14 +31,40 @@ - (void)encodeWithCoder:(NSCoder *)aCoder { // Just to persist the class info, no properties } +#pragma mark - NSSecureCoding + ++ (BOOL)supportsSecureCoding { + return true; +} + #pragma mark - Archive/Unarchive - (NSData *)archive { - return [NSKeyedArchiver archivedDataWithRootObject:self]; + if (@available(macOS 10.13, iOS 11, tvOS 11, *)) { + NSError *error; + NSData *data = [NSKeyedArchiver archivedDataWithRootObject:self requiringSecureCoding:false error:&error]; + if (error) { + NSLog(@"ARTPushActivationEvent Archive failed: %@", error); + } + return data; + } + else { + return [NSKeyedArchiver archivedDataWithRootObject:self]; + } } + (ARTPushActivationEvent *)unarchive:(NSData *)data { - return [NSKeyedUnarchiver unarchiveObjectWithData:data]; + if (@available(macOS 10.13, iOS 11, tvOS 11, *)) { + NSError *error; + ARTPushActivationEvent *result = [NSKeyedUnarchiver unarchivedObjectOfClass:[self class] fromData:data error:&error]; + if (error) { + NSLog(@"ARTPushActivationEvent Unarchive failed: %@", error); + } + return result; + } + else { + return [NSKeyedUnarchiver unarchiveObjectWithData:data]; + } } @end @@ -60,7 +86,7 @@ + (instancetype)newWithError:(ARTErrorInfo *)error { - (nullable instancetype)initWithCoder:(NSCoder *)aDecoder { if (self = [super initWithCoder:aDecoder]) { - _error = [aDecoder decodeObjectForKey:ARTCoderErrorKey]; + _error = [aDecoder decodeObjectOfClass:[ARTErrorInfo class] forKey:ARTCoderErrorKey]; } return self; } @@ -89,7 +115,7 @@ + (instancetype)newWithIdentityTokenDetails:(ARTDeviceIdentityTokenDetails *)ide - (nullable instancetype)initWithCoder:(NSCoder *)aDecoder { if (self = [super initWithCoder:aDecoder]) { - _identityTokenDetails = [aDecoder decodeObjectForKey:ARTCoderIdentityTokenDetailsKey]; + _identityTokenDetails = [aDecoder decodeObjectOfClass:[ARTDeviceIdentityTokenDetails class] forKey:ARTCoderIdentityTokenDetailsKey]; } return self; } diff --git a/Source/ARTPushActivationState.h b/Source/ARTPushActivationState.h index 06f428882..0af6178ee 100644 --- a/Source/ARTPushActivationState.h +++ b/Source/ARTPushActivationState.h @@ -15,7 +15,7 @@ NS_ASSUME_NONNULL_BEGIN -@interface ARTPushActivationState : NSObject +@interface ARTPushActivationState : NSObject - (instancetype)init NS_UNAVAILABLE; - (instancetype)initWithMachine:(ARTPushActivationStateMachine *)machine; diff --git a/Source/ARTPushActivationState.m b/Source/ARTPushActivationState.m index e8bd68b0c..50b0499fc 100644 --- a/Source/ARTPushActivationState.m +++ b/Source/ARTPushActivationState.m @@ -54,14 +54,40 @@ - (void)encodeWithCoder:(NSCoder *)aCoder { // Just to persist the class info, no properties } +#pragma mark - NSSecureCoding + ++ (BOOL)supportsSecureCoding { + return true; +} + #pragma mark - Archive/Unarchive - (NSData *)archive { - return [NSKeyedArchiver archivedDataWithRootObject:self]; + if (@available(macOS 10.13, iOS 11, tvOS 11, *)) { + NSError *error; + NSData *data = [NSKeyedArchiver archivedDataWithRootObject:self requiringSecureCoding:false error:&error]; + if (error) { + NSLog(@"ARTPushActivationState Archive failed: %@", error); + } + return data; + } + else { + return [NSKeyedArchiver archivedDataWithRootObject:self]; + } } + (ARTPushActivationState *)unarchive:(NSData *)data { - return [NSKeyedUnarchiver unarchiveObjectWithData:data]; + if (@available(macOS 10.13, iOS 11, tvOS 11, *)) { + NSError *error; + ARTPushActivationState *result = [NSKeyedUnarchiver unarchivedObjectOfClass:[self class] fromData:data error:&error]; + if (error) { + NSLog(@"ARTPushActivationState Unarchive failed: %@", error); + } + return result; + } + else { + return [NSKeyedUnarchiver unarchiveObjectWithData:data]; + } } @end @@ -82,6 +108,7 @@ - (ARTPushActivationState *)transition:(ARTPushActivationEvent *)event { return self; } else if ([event isKindOfClass:[ARTPushActivationEventCalledActivate class]]) { + #if TARGET_OS_IOS ARTLocalDevice *local = self.machine.rest.device_nosync; if (local.identityTokenDetails) { @@ -92,6 +119,7 @@ - (ARTPushActivationState *)transition:(ARTPushActivationEvent *)event { if ([local deviceToken]) { [self.machine sendEvent:[ARTPushActivationEventGotPushDeviceDetails new]]; } + #endif return [ARTPushActivationStateWaitingForPushDeviceDetails newWithMachine:self.machine]; } @@ -108,9 +136,11 @@ - (ARTPushActivationState *)transition:(ARTPushActivationEvent *)event { return self; } else if ([event isKindOfClass:[ARTPushActivationEventGotDeviceRegistration class]]) { + #if TARGET_OS_IOS ARTPushActivationEventGotDeviceRegistration *gotDeviceRegistrationEvent = (ARTPushActivationEventGotDeviceRegistration *)event; ARTLocalDevice *local = self.machine.rest.device_nosync; [local setAndPersistIdentityTokenDetails:gotDeviceRegistrationEvent.identityTokenDetails]; + #endif [self.machine callActivatedCallback:nil]; return [ARTPushActivationStateWaitingForNewPushDeviceDetails newWithMachine:self.machine]; } @@ -173,9 +203,11 @@ - (ARTPushActivationState *)transition:(ARTPushActivationEvent *)event { return self; } else if ([event isKindOfClass:[ARTPushActivationEventRegistrationUpdated class]]) { + #if TARGET_OS_IOS ARTPushActivationEventRegistrationUpdated *registrationUpdatedEvent = (ARTPushActivationEventRegistrationUpdated *)event; ARTLocalDevice *local = self.machine.rest.device_nosync; [local setAndPersistIdentityTokenDetails:registrationUpdatedEvent.identityTokenDetails]; + #endif [self.machine callActivatedCallback:nil]; return [ARTPushActivationStateWaitingForRegistrationUpdate newWithMachine:self.machine]; } @@ -214,8 +246,10 @@ - (ARTPushActivationState *)transition:(ARTPushActivationEvent *)event { return [ARTPushActivationStateWaitingForDeregistration newWithMachine:self.machine]; } else if ([event isKindOfClass:[ARTPushActivationEventDeregistered class]]) { + #if TARGET_OS_IOS ARTLocalDevice *local = self.machine.rest.device_nosync; [local setAndPersistIdentityTokenDetails:nil]; + #endif [self.machine callDeactivatedCallback:nil]; return [ARTPushActivationStateNotActivated newWithMachine:self.machine]; } diff --git a/Source/ARTPushActivationStateMachine+Private.h b/Source/ARTPushActivationStateMachine+Private.h index d9c2eaa18..ce8175575 100644 --- a/Source/ARTPushActivationStateMachine+Private.h +++ b/Source/ARTPushActivationStateMachine+Private.h @@ -10,8 +10,8 @@ NS_ASSUME_NONNULL_BEGIN -NSString *const ARTPushActivationCurrentStateKey; -NSString *const ARTPushActivationPendingEventsKey; +extern NSString *const ARTPushActivationCurrentStateKey; +extern NSString *const ARTPushActivationPendingEventsKey; @interface ARTPushActivationStateMachine () diff --git a/Source/ARTPushActivationStateMachine.m b/Source/ARTPushActivationStateMachine.m index 35cec28f8..6f7a71f06 100644 --- a/Source/ARTPushActivationStateMachine.m +++ b/Source/ARTPushActivationStateMachine.m @@ -21,7 +21,7 @@ #import "ARTDeviceIdentityTokenDetails.h" #import "ARTNSMutableRequest+ARTPush.h" -#ifdef TARGET_OS_IOS +#if TARGET_OS_IOS #import NSString *const ARTPushActivationCurrentStateKey = @"ARTPushActivationCurrentState"; @@ -130,7 +130,7 @@ - (void)persist { } - (void)deviceRegistration:(ARTErrorInfo *)error { - #ifdef TARGET_OS_IOS + #if TARGET_OS_IOS ARTLocalDevice *local = _rest.device_nosync; __block id delegate; @@ -199,7 +199,7 @@ - (void)deviceRegistration:(ARTErrorInfo *)error { } - (void)deviceUpdateRegistration:(ARTErrorInfo *)error { - #ifdef TARGET_OS_IOS + #if TARGET_OS_IOS ARTLocalDevice *local = _rest.device_nosync; __block id delegate; @@ -275,7 +275,7 @@ - (void)deviceUpdateRegistration:(ARTErrorInfo *)error { } - (void)deviceUnregistration:(ARTErrorInfo *)error { - #ifdef TARGET_OS_IOS + #if TARGET_OS_IOS ARTLocalDevice *local = _rest.device_nosync; __block id delegate; @@ -333,7 +333,7 @@ - (void)deviceUnregistration:(ARTErrorInfo *)error { } - (void)callActivatedCallback:(ARTErrorInfo *)error { - #ifdef TARGET_OS_IOS + #if TARGET_OS_IOS dispatch_async(_userQueue, ^{ id delegate; if (self.delegate) { @@ -354,7 +354,7 @@ - (void)callActivatedCallback:(ARTErrorInfo *)error { } - (void)callDeactivatedCallback:(ARTErrorInfo *)error { - #ifdef TARGET_OS_IOS + #if TARGET_OS_IOS dispatch_async(_userQueue, ^{ id delegate; if (self.delegate) { @@ -375,7 +375,7 @@ - (void)callDeactivatedCallback:(ARTErrorInfo *)error { } - (void)callUpdateFailedCallback:(nullable ARTErrorInfo *)error { - #ifdef TARGET_OS_IOS + #if TARGET_OS_IOS dispatch_async(_userQueue, ^{ id delegate; if (self.delegate) { diff --git a/Source/ARTPushChannelSubscriptions.m b/Source/ARTPushChannelSubscriptions.m index d2ce7a163..2e1d763dd 100644 --- a/Source/ARTPushChannelSubscriptions.m +++ b/Source/ARTPushChannelSubscriptions.m @@ -46,7 +46,11 @@ - (void)save:(ARTPushChannelSubscription *)channelSubscription callback:(void (^ }; } + #if TARGET_OS_IOS ARTLocalDevice *local = _rest.device; + #else + ARTLocalDevice *local = nil; + #endif dispatch_async(_queue, ^{ ART_TRY_OR_REPORT_CRASH_START(self->_rest) { @@ -186,7 +190,9 @@ - (void)_removeWhere:(NSDictionary *)params callback:(vo } NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[components URL]]; request.HTTPMethod = @"DELETE"; + #if TARGET_OS_IOS [request setDeviceAuthentication:[params objectForKey:@"deviceId"] localDevice:_rest.device_nosync]; + #endif [_logger debug:__FILE__ line:__LINE__ message:@"remove channel subscription with request %@", request]; [_rest executeRequest:request withAuthOption:ARTAuthenticationOn completion:^(NSHTTPURLResponse *response, NSData *data, NSError *error) { diff --git a/Source/ARTPushDeviceRegistrations.m b/Source/ARTPushDeviceRegistrations.m index 2c7757760..f94e1b588 100644 --- a/Source/ARTPushDeviceRegistrations.m +++ b/Source/ARTPushDeviceRegistrations.m @@ -47,7 +47,11 @@ - (void)save:(ARTDeviceDetails *)deviceDetails callback:(void (^)(ARTErrorInfo * }; } + #if TARGET_OS_IOS ARTLocalDevice *local = _rest.device; + #else + ARTLocalDevice *local = nil; + #endif dispatch_async(_queue, ^{ ART_TRY_OR_REPORT_CRASH_START(self->_rest) { @@ -100,7 +104,11 @@ - (void)get:(ARTDeviceId *)deviceId callback:(void (^)(ARTDeviceDetails *, ARTEr }; } + #if TARGET_OS_IOS ARTLocalDevice *local = _rest.device; + #else + ARTLocalDevice *local = nil; + #endif dispatch_async(_queue, ^{ ART_TRY_OR_REPORT_CRASH_START(self->_rest) { @@ -218,7 +226,11 @@ - (void)removeWhere:(NSDictionary *)params callback:(voi }; } + #if TARGET_OS_IOS ARTLocalDevice *local = _rest.device; + #else + ARTLocalDevice *local = nil; + #endif dispatch_async(_queue, ^{ ART_TRY_OR_REPORT_CRASH_START(self->_rest) { diff --git a/Source/ARTRealtime.h b/Source/ARTRealtime.h index 8e40bb2d5..00263e74e 100644 --- a/Source/ARTRealtime.h +++ b/Source/ARTRealtime.h @@ -43,7 +43,7 @@ NS_ASSUME_NONNULL_BEGIN @property (nonatomic, strong, readonly) ARTRealtimeChannels *channels; @property (readonly) ARTAuth *auth; @property (readonly) ARTPush *push; -#ifdef TARGET_OS_IOS +#if TARGET_OS_IOS @property (nonnull, nonatomic, readonly, getter=device) ARTLocalDevice *device; #endif @property (readonly, nullable, getter=getClientId) NSString *clientId; diff --git a/Source/ARTRealtime.m b/Source/ARTRealtime.m index 46c32aff6..15f158606 100644 --- a/Source/ARTRealtime.m +++ b/Source/ARTRealtime.m @@ -1473,8 +1473,10 @@ - (void)onUncaughtException:(NSException *)e { [_rest reportUncaughtException:e]; } +#if TARGET_OS_IOS - (ARTLocalDevice *)device { return _rest.device; } +#endif @end diff --git a/Source/ARTRealtimeChannel.h b/Source/ARTRealtimeChannel.h index 187d9e281..0f9f4cdd9 100644 --- a/Source/ARTRealtimeChannel.h +++ b/Source/ARTRealtimeChannel.h @@ -19,7 +19,7 @@ NS_ASSUME_NONNULL_BEGIN @class ARTRealtimePresence; -#ifdef TARGET_OS_IPHONE +#if TARGET_OS_IPHONE @class ARTPushChannel; #endif @@ -29,7 +29,7 @@ NS_ASSUME_NONNULL_BEGIN @property (readonly, strong, nonatomic, nullable) ARTErrorInfo *errorReason; @property (readonly) ARTRealtimePresence *presence; -#ifdef TARGET_OS_IPHONE +#if TARGET_OS_IPHONE @property (readonly) ARTPushChannel *push; #endif diff --git a/Source/ARTRealtimeChannel.m b/Source/ARTRealtimeChannel.m index d7a0de6cd..bc614161d 100644 --- a/Source/ARTRealtimeChannel.m +++ b/Source/ARTRealtimeChannel.m @@ -31,13 +31,13 @@ #import "ARTConnection+Private.h" #import "ARTRestChannels+Private.h" #import "ARTEventEmitter+Private.h" -#ifdef TARGET_OS_IPHONE +#if TARGET_OS_IPHONE #import "ARTPushChannel.h" #endif @interface ARTRealtimeChannel () { ARTRealtimePresence *_realtimePresence; - #ifdef TARGET_OS_IPHONE + #if TARGET_OS_IPHONE ARTPushChannel *_pushChannel; #endif CFRunLoopTimerRef _attachTimer; @@ -124,7 +124,7 @@ - (ARTRealtimePresence *)presence { } ART_TRY_OR_MOVE_TO_FAILED_END } -#ifdef TARGET_OS_IPHONE +#if TARGET_OS_IPHONE - (ARTPushChannel *)push { if (!_pushChannel) { _pushChannel = [[ARTPushChannel alloc] init:self.realtime.rest withChannel:self]; @@ -133,7 +133,7 @@ - (ARTPushChannel *)push { } #endif -#ifdef TARGET_OS_IOS +#if TARGET_OS_IOS - (ARTLocalDevice *)device { return _realtime.device; } @@ -312,6 +312,10 @@ - (void)addToQueue:(ARTProtocolMessage *)msg callback:(void (^)(ARTStatus *))cb if (!merged) { ARTQueuedMessage *qm = [[ARTQueuedMessage alloc] initWithProtocolMessage:msg sentCallback:nil ackCallback:cb]; [self.queuedMessages addObject:qm]; + [self.logger debug:__FILE__ line:__LINE__ message:@"R:%p C:%p (%@) protocol message %p has been queued (not merged)", _realtime, self, self.name, msg]; + } + else { + [self.logger debug:__FILE__ line:__LINE__ message:@"R:%p C:%p (%@) protocol message %p has been queued and merged in an existing message", _realtime, self, self.name, msg]; } } ART_TRY_OR_MOVE_TO_FAILED_END } diff --git a/Source/ARTRest.h b/Source/ARTRest.h index 4ef3ec270..139f75b79 100644 --- a/Source/ARTRest.h +++ b/Source/ARTRest.h @@ -56,7 +56,7 @@ NS_ASSUME_NONNULL_BEGIN @property (nonatomic, strong, readonly) ARTRestChannels *channels; @property (nonatomic, strong, readonly) ARTAuth *auth; @property (nonatomic, strong, readonly) ARTPush *push; -#ifdef TARGET_OS_IOS +#if TARGET_OS_IOS @property (nonnull, nonatomic, readonly, getter=device) ARTLocalDevice *device; @property (nonnull, nonatomic, readonly, getter=device_nosync) ARTLocalDevice *device_nosync; #endif diff --git a/Source/ARTRest.m b/Source/ARTRest.m index 5830a4dff..7199d008d 100644 --- a/Source/ARTRest.m +++ b/Source/ARTRest.m @@ -525,7 +525,7 @@ - (BOOL)request:(NSString *)method path:(NSString *)path params:(nullable NSDict } - (id)internetIsUp:(void (^)(BOOL isUp)) cb { - NSURL *requestUrl = [NSURL URLWithString:@"http://internet-up.ably-realtime.com/is-the-internet-up.txt"]; + NSURL *requestUrl = [NSURL URLWithString:@"https://internet-up.ably-realtime.com/is-the-internet-up.txt"]; NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:requestUrl]; request.HTTPMethod = @"GET"; @@ -673,6 +673,7 @@ void ARTstopHandlingUncaughtExceptions(ARTRest *self) { [ARTSentry setUserInfo:@"reportToAbly" value:[NSNumber numberWithBool:false]]; } +#if TARGET_OS_IOS - (ARTLocalDevice *)device { __block ARTLocalDevice *ret; dispatch_sync(_queue, ^{ @@ -680,6 +681,7 @@ - (ARTLocalDevice *)device { }); return ret; } +#endif // Store address of once_token to access it in debug function. static dispatch_once_t *device_once_token; diff --git a/Source/ARTRestChannel.m b/Source/ARTRestChannel.m index ad1e8ebfb..4069fbe64 100644 --- a/Source/ARTRestChannel.m +++ b/Source/ARTRestChannel.m @@ -242,7 +242,7 @@ - (void)internalPostMessages:(id)data callback:(void (^)(ARTErrorInfo *__art_nul }); } -#ifdef TARGET_OS_IOS +#if TARGET_OS_IOS - (ARTLocalDevice *)device { return _rest.device; } diff --git a/Source/Ably.h b/Source/Ably.h index 78af2f494..aaffe8214 100644 --- a/Source/Ably.h +++ b/Source/Ably.h @@ -56,13 +56,8 @@ FOUNDATION_EXPORT const unsigned char ablyVersionString[]; #import #import #import -#import -#import -#import #import -#ifdef TARGET_OS_IPHONE #import -#endif #import #import #import @@ -76,7 +71,3 @@ FOUNDATION_EXPORT const unsigned char ablyVersionString[]; #import #import #import - -#import -#import -#import diff --git a/Source/Ably.modulemap b/Source/Ably.modulemap index aa0ad476b..b7a177262 100644 --- a/Source/Ably.modulemap +++ b/Source/Ably.modulemap @@ -6,6 +6,7 @@ framework module Ably { explicit module Private { header "ARTConstants.h" + header "ARTReachability.h" header "ARTAuth+Private.h" header "ARTAuthOptions+Private.h" header "ARTBaseMessage+Private.h" @@ -43,5 +44,6 @@ framework module Ably { header "ARTHTTPPaginatedResponse+Private.h" header "ARTNSHTTPURLResponse+ARTPaginated.h" header "ARTNSMutableURLRequest+ARTPaginated.h" + header "ARTNSDate+ARTUtil.h" } } diff --git a/Source/Info.plist b/Source/Info-iOS.plist similarity index 96% rename from Source/Info.plist rename to Source/Info-iOS.plist index cf94cd057..6c67c6c55 100644 --- a/Source/Info.plist +++ b/Source/Info-iOS.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 1.1.1 + $(CURRENT_PROJECT_VERSION) CFBundleSignature ???? CFBundleVersion diff --git a/Source/Info-macOS.plist b/Source/Info-macOS.plist new file mode 100644 index 000000000..74bda1271 --- /dev/null +++ b/Source/Info-macOS.plist @@ -0,0 +1,24 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + FMWK + CFBundleShortVersionString + $(CURRENT_PROJECT_VERSION) + CFBundleVersion + $(CURRENT_PROJECT_VERSION) + NSHumanReadableCopyright + Copyright © 2018 Ably. All rights reserved. + + diff --git a/Source/Info-tvOS.plist b/Source/Info-tvOS.plist new file mode 100644 index 000000000..337bf6e1b --- /dev/null +++ b/Source/Info-tvOS.plist @@ -0,0 +1,22 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + FMWK + CFBundleShortVersionString + $(CURRENT_PROJECT_VERSION) + CFBundleVersion + $(CURRENT_PROJECT_VERSION) + + diff --git a/Source/ARTGCD.h b/Source/Private/ARTGCD.h similarity index 100% rename from Source/ARTGCD.h rename to Source/Private/ARTGCD.h diff --git a/Source/ARTGCD.m b/Source/Private/ARTGCD.m similarity index 100% rename from Source/ARTGCD.m rename to Source/Private/ARTGCD.m diff --git a/Source/ARTNSArray+ARTFunctional.h b/Source/Private/ARTNSArray+ARTFunctional.h similarity index 100% rename from Source/ARTNSArray+ARTFunctional.h rename to Source/Private/ARTNSArray+ARTFunctional.h diff --git a/Source/ARTNSArray+ARTFunctional.m b/Source/Private/ARTNSArray+ARTFunctional.m similarity index 100% rename from Source/ARTNSArray+ARTFunctional.m rename to Source/Private/ARTNSArray+ARTFunctional.m diff --git a/Source/ARTNSDictionary+ARTDictionaryUtil.h b/Source/Private/ARTNSDictionary+ARTDictionaryUtil.h similarity index 100% rename from Source/ARTNSDictionary+ARTDictionaryUtil.h rename to Source/Private/ARTNSDictionary+ARTDictionaryUtil.h diff --git a/Source/ARTNSDictionary+ARTDictionaryUtil.m b/Source/Private/ARTNSDictionary+ARTDictionaryUtil.m similarity index 100% rename from Source/ARTNSDictionary+ARTDictionaryUtil.m rename to Source/Private/ARTNSDictionary+ARTDictionaryUtil.m diff --git a/Source/ARTNSString+ARTUtil.h b/Source/Private/ARTNSString+ARTUtil.h similarity index 100% rename from Source/ARTNSString+ARTUtil.h rename to Source/Private/ARTNSString+ARTUtil.h diff --git a/Source/ARTNSString+ARTUtil.m b/Source/Private/ARTNSString+ARTUtil.m similarity index 100% rename from Source/ARTNSString+ARTUtil.m rename to Source/Private/ARTNSString+ARTUtil.m diff --git a/Source/ARTOSReachability.h b/Source/Private/ARTOSReachability.h similarity index 100% rename from Source/ARTOSReachability.h rename to Source/Private/ARTOSReachability.h diff --git a/Source/ARTOSReachability.m b/Source/Private/ARTOSReachability.m similarity index 100% rename from Source/ARTOSReachability.m rename to Source/Private/ARTOSReachability.m diff --git a/Spec/Auth.swift b/Spec/Auth.swift index dc50581a1..a2727d2c3 100644 --- a/Spec/Auth.swift +++ b/Spec/Auth.swift @@ -7,6 +7,7 @@ // import Ably +import Ably.Private import Nimble import Quick import Aspects @@ -3413,6 +3414,7 @@ class Auth : QuickSpec { } defer { hook.remove() } + #if TARGET_OS_IPHONE // Force notification NotificationCenter.default.post(name: UIApplication.significantTimeChangeNotification, object: nil) @@ -3420,6 +3422,15 @@ class Auth : QuickSpec { // Force notification NotificationCenter.default.post(name: NSLocale.currentLocaleDidChangeNotification, object: nil) + #else + // Force notification + NotificationCenter.default.post(name: NSNotification.Name.NSSystemClockDidChange, object: nil) + + expect(discardTimeOffsetCallCount).toEventually(equal(1), timeout: testTimeout) + + // Force notification + NotificationCenter.default.post(name: NSLocale.currentLocaleDidChangeNotification, object: nil) + #endif expect(discardTimeOffsetCallCount).toEventually(equal(2), timeout: testTimeout) } diff --git a/Spec/Info.plist b/Spec/Info-iOS.plist similarity index 100% rename from Spec/Info.plist rename to Spec/Info-iOS.plist diff --git a/Spec/Info-macOS.plist b/Spec/Info-macOS.plist new file mode 100644 index 000000000..6f2fbb6a2 --- /dev/null +++ b/Spec/Info-macOS.plist @@ -0,0 +1,24 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + BNDL + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + ABLY_ENV + $(ABLY_ENV) + + diff --git a/Spec/Info-tvOS.plist b/Spec/Info-tvOS.plist new file mode 100644 index 000000000..6c40a6cd0 --- /dev/null +++ b/Spec/Info-tvOS.plist @@ -0,0 +1,22 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + BNDL + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + + diff --git a/Spec/MockDeviceStorage.swift b/Spec/MockDeviceStorage.swift new file mode 100644 index 000000000..43e5d6c99 --- /dev/null +++ b/Spec/MockDeviceStorage.swift @@ -0,0 +1,64 @@ +// +// MockDeviceStorage.swift +// AblySpec +// +// Created by Ricardo Pereira on 16/11/2018. +// Copyright © 2018 Ably. All rights reserved. +// + +import Ably + +class MockDeviceStorage: NSObject, ARTDeviceStorage { + + var keysRead: [String] = [] + var keysWritten: [String] = [] + + private var simulateData: [String: Data] = [:] + private var simulateString: [String: String] = [:] + + init(startWith state: ARTPushActivationState? = nil) { + super.init() + if let state = state { + simulateOnNextRead(data: state.archive(), for: ARTPushActivationCurrentStateKey) + } + } + + func object(forKey key: String) -> Any? { + keysRead.append(key) + if var data = simulateData[key] { + defer { simulateData.removeValue(forKey: key) } + return data + } + if var string = simulateString[key] { + defer { simulateString.removeValue(forKey: key) } + return string + } + return nil + } + + func setObject(_ value: Any?, forKey key: String) { + keysWritten.append(key) + } + + func secret(forDevice deviceId: ARTDeviceId) -> String? { + keysRead.append(ARTDeviceSecretKey) + if var value = simulateString[ARTDeviceSecretKey] { + defer { simulateString.removeValue(forKey: ARTDeviceSecretKey) } + return value + } + return nil + } + + func setSecret(_ value: String?, forDevice deviceId: ARTDeviceId) { + keysWritten.append(ARTDeviceSecretKey) + } + + func simulateOnNextRead(data value: Data, `for` key: String) { + simulateData[key] = value + } + + func simulateOnNextRead(string value: String, `for` key: String) { + simulateString[key] = value + } + +} diff --git a/Spec/RealtimeClientChannel.swift b/Spec/RealtimeClientChannel.swift index 435607ed6..204e2fe33 100644 --- a/Spec/RealtimeClientChannel.swift +++ b/Spec/RealtimeClientChannel.swift @@ -2067,9 +2067,9 @@ class RealtimeClientChannel: QuickSpec { let channel = client.channels.get("test-maxMessageSize") // This amount of messages would be beyond maxMessageSize, if bundled together let messagesToBeSent = 2000 - - // call publish before connecting, so messages are queued - waitUntil(timeout: testTimeout*2) { done in + + // Call publish before connecting, so messages are queued + waitUntil(timeout: testTimeout*6) { done in let partialDone = AblyTests.splitDone(messagesToBeSent, done: done) for i in 1...messagesToBeSent { channel.publish("initial initial\(i)", data: "message message\(i)") { error in @@ -2079,7 +2079,7 @@ class RealtimeClientChannel: QuickSpec { } client.connect() } - + let transport = client.transport as! TestProxyTransport let protocolMessages = transport.protocolMessagesSent.filter{ $0.action == .message } // verify that messages are not bundled in a single protocol message diff --git a/Spec/RealtimeClientConnection.swift b/Spec/RealtimeClientConnection.swift index c2d57699e..f74591f4e 100644 --- a/Spec/RealtimeClientConnection.swift +++ b/Spec/RealtimeClientConnection.swift @@ -242,7 +242,7 @@ class RealtimeClientConnection: QuickSpec { done() case .connected: if let transport = client.transport as? TestProxyTransport, let query = transport.lastUrl?.query { - expect(query).to(haveParam("lib", withValue: "ios-1.1.1")) + expect(query).to(haveParam("lib", withValue: "ios-1.1.2")) } else { XCTFail("MockTransport isn't working") @@ -2038,7 +2038,7 @@ class RealtimeClientConnection: QuickSpec { } } client.connect() - transport = client.transport as! TestProxyTransport + transport = (client.transport as! TestProxyTransport) } let failures = transport.protocolMessagesReceived.filter({ $0.action == .error }) diff --git a/Spec/RestClient.swift b/Spec/RestClient.swift index b8aec76d0..949e72325 100644 --- a/Spec/RestClient.swift +++ b/Spec/RestClient.swift @@ -714,6 +714,7 @@ class RestClient: QuickSpec { testHTTPExecutor.afterRequest = { request, callback in if testHTTPExecutor.requests.count == 2 { // Stop + testHTTPExecutor.afterRequest = nil testHTTPExecutor.http = nil callback!(nil, nil, nil) } @@ -747,6 +748,7 @@ class RestClient: QuickSpec { testHTTPExecutor.afterRequest = { request, callback in if testHTTPExecutor.requests.count == 2 { // Stop + testHTTPExecutor.afterRequest = nil testHTTPExecutor.http = nil callback!(nil, nil, nil) } @@ -781,6 +783,7 @@ class RestClient: QuickSpec { testHTTPExecutor.afterRequest = { request, callback in if testHTTPExecutor.requests.count == 2 { // Stop + testHTTPExecutor.afterRequest = nil testHTTPExecutor.http = nil callback!(nil, nil, nil) } @@ -1498,7 +1501,8 @@ class RestClient: QuickSpec { it("should error if method is invalid") { let rest = ARTRest(key: "xxxx:xxxx") - rest.httpExecutor = MockHTTPExecutor() + let mockHTTPExecutor = MockHTTPExecutor() + rest.httpExecutor = mockHTTPExecutor do { try rest.request("A", path: "feature", params: nil, body: nil, headers: nil) { paginatedResult, error in @@ -1523,7 +1527,8 @@ class RestClient: QuickSpec { it("should error if path is invalid") { let rest = ARTRest(key: "xxxx:xxxx") - rest.httpExecutor = MockHTTPExecutor() + let mockHTTPExecutor = MockHTTPExecutor() + rest.httpExecutor = mockHTTPExecutor do { try rest.request("get", path: "new feature", params: nil, body: nil, headers: nil) { paginatedResult, error in diff --git a/Spec/TestUtilities.swift b/Spec/TestUtilities.swift index 10b85119b..4610803bd 100644 --- a/Spec/TestUtilities.swift +++ b/Spec/TestUtilities.swift @@ -678,61 +678,6 @@ class MockHTTP: ARTHttp { } -class MockDeviceStorage: NSObject, ARTDeviceStorage { - - var keysRead: [String] = [] - var keysWritten: [String] = [] - - private var simulateData: [String: Data] = [:] - private var simulateString: [String: String] = [:] - - init(startWith state: ARTPushActivationState? = nil) { - super.init() - if let state = state { - simulateOnNextRead(data: state.archive(), for: ARTPushActivationCurrentStateKey) - } - } - - func object(forKey key: String) -> Any? { - keysRead.append(key) - if var data = simulateData[key] { - defer { simulateData.removeValue(forKey: key) } - return data - } - if var string = simulateString[key] { - defer { simulateString.removeValue(forKey: key) } - return string - } - return nil - } - - func setObject(_ value: Any?, forKey key: String) { - keysWritten.append(key) - } - - func secret(forDevice deviceId: ARTDeviceId) -> String? { - keysRead.append(ARTDeviceSecretKey) - if var value = simulateString[ARTDeviceSecretKey] { - defer { simulateString.removeValue(forKey: ARTDeviceSecretKey) } - return value - } - return nil - } - - func setSecret(_ value: String?, forDevice deviceId: ARTDeviceId) { - keysWritten.append(ARTDeviceSecretKey) - } - - func simulateOnNextRead(data value: Data, `for` key: String) { - simulateData[key] = value - } - - func simulateOnNextRead(string value: String, `for` key: String) { - simulateString[key] = value - } - -} - struct ErrorSimulator { let value: Int let description: String diff --git a/Version.xcconfig b/Version.xcconfig index b788afee5..446515d61 100644 --- a/Version.xcconfig +++ b/Version.xcconfig @@ -1 +1 @@ -CURRENT_PROJECT_VERSION = 1.1.1 +CURRENT_PROJECT_VERSION = 1.1.2 diff --git a/fastlane/Fastfile b/fastlane/Fastfile index e9879a27d..9c4f02dca 100644 --- a/fastlane/Fastfile +++ b/fastlane/Fastfile @@ -3,8 +3,11 @@ default_platform(:ios) platform :ios do lane :test_iOS12 do - run_tests(devices: ["iPhone XS (12.0)"], - xcargs: { ABLY_ENV: ENV['ABLY_ENV'] }) + run_tests( + scheme: "Ably-iOS-Tests", + devices: ["iPhone XS (12.0)"], + xcargs: { ABLY_ENV: ENV['ABLY_ENV'] } + ) slack( message: "Completed tests on iOS12", success: :test_result, @@ -13,9 +16,12 @@ platform :ios do end lane :test_iOS11 do - run_tests(devices: ["iPhone 8 (11.4)"], - test_without_building: false, - xcargs: { ABLY_ENV: ENV['ABLY_ENV'] }) + run_tests( + scheme: "Ably-iOS-Tests", + devices: ["iPhone 8 (11.4)"], + test_without_building: false, + xcargs: { ABLY_ENV: ENV['ABLY_ENV'] } + ) slack( message: "Completed tests on iOS11", success: :test_result, @@ -24,9 +30,12 @@ platform :ios do end lane :test_iOS10 do - run_tests(devices: ["iPhone 7 (10.3.1)"], - test_without_building: false, - xcargs: { ABLY_ENV: ENV['ABLY_ENV'] }) + run_tests( + scheme: "Ably-iOS-Tests", + devices: ["iPhone 7 (10.3.1)"], + test_without_building: false, + xcargs: { ABLY_ENV: ENV['ABLY_ENV'] } + ) slack( message: "Completed tests on iOS10", success: :test_result, @@ -35,9 +44,12 @@ platform :ios do end lane :test_iOS9 do - run_tests(devices: ["iPhone 6 (9.3)"], - test_without_building: false, - xcargs: { ABLY_ENV: ENV['ABLY_ENV'] }) + run_tests( + scheme: "Ably-iOS-Tests", + devices: ["iPhone 6 (9.3)"], + test_without_building: false, + xcargs: { ABLY_ENV: ENV['ABLY_ENV'] } + ) slack( message: "Completed tests on iOS9", success: :test_result, @@ -45,4 +57,30 @@ platform :ios do ) end + lane :test_tvOS12 do + run_tests( + scheme: "Ably-tvOS-Tests", + devices: ["Apple TV 4K"], + xcargs: { ABLY_ENV: ENV['ABLY_ENV'] } + ) + slack( + message: "Completed tests on tvOS12", + success: :test_result, + default_payloads: [:test_result, :git_branch, :git_author, :last_git_commit_message] + ) + end + + lane :test_macOS do + run_tests( + scheme: "Ably-macOS-Tests", + test_without_building: false, + xcargs: { ABLY_ENV: ENV['ABLY_ENV'] } + ) + slack( + message: "Completed tests on macOS", + success: :test_result, + default_payloads: [:test_result, :git_branch, :git_author, :last_git_commit_message] + ) + end + end diff --git a/fastlane/Scanfile b/fastlane/Scanfile new file mode 100644 index 000000000..36f9043e7 --- /dev/null +++ b/fastlane/Scanfile @@ -0,0 +1,3 @@ +open_report false +clean true +skip_slack true \ No newline at end of file