Skip to content

Commit

Permalink
0.9 master (#588)
Browse files Browse the repository at this point in the history
* Start 0.9 version

* TO3k7 (#513)

* Start 0.9 version

* Add fallbackHostsUseDefault option

* Fallback: add initialiser accepting client options

* TO3k7

* Add ARTFallback+Private

* Default fallbackHosts as Array of Strings

* fixup! TO3k7

* fixup! Add fallbackHostsUseDefault option

* fixup! TO3k7

* Update RSC15a for 0.9 (#515)

* Start 0.9 version

* Update RSC15a: default fallback hosts

* Default fallbackHosts as Array of Strings

* RSA4a (#517)

* Test suite: add TestProxyHTTPExecutor.simulateIncomingServerErrorOnNextRequest

* RSA4a

* Fix Realtime: indicate an error and not retry the request when the server responds with a token error

* Update RSC15e (#514)

* Remove specs RSA10c and RSA10d (#522)

* RSA10l (#524)

* Auth: deprecate `authorise` in favor of `authorize`.

* RSA10l

* Use `authorize` instead of `authorise` (close #496)

* Remove `AuthOptions.force` (#527)

* Remove AuthOptions.force

* Fix: make a single attempt to reissue the token and resend the request

* Fix RSA10a

* Fix RSC9

* Remove `prepareAuthorisationHeader` access from test suite

* Fix RSA10a

* Update RSC15b for 0.9 (#516)

* Update RSC15b

* Fix: REST fallback should only apply when the default host is used

* Update RSA10a for 0.9 (#520)

* Update RSA10a

* Fix: authorize should change auth method to Token for future requests

* Update RSA10j for 0.9 (#521)

* Update RSA10j

* Fix: ttl when omitted should set the default value

* Fix RTN15h

* RTC8 (#526)

* Add ARTAuthDetails

* RTC8a

* RTC8a1 (part 1)

* RTC8a1 (part 2)

* RTC8a1 (part 3)

* RTC8a2

* RTC8a3

* RTC8b

* RTC8b1

* RTC8c

* Send AUTH protocol message on each authorize

* Fix RTC8

* Test suite: `splitDone`, when a test fails, get the right location of the failure

* RSA4b (#518)

* RSA4b

* Fix REST: should retry the request once if a token error occurs

* Fix Realtime: if the token creation failed then the connection should move to the DISCONNECTED state and reports the error

* RSA4c (#519)

* RSA4c

* Fix: 80019 and description of the underlying failure should be emitted

* Fix: if connected and the client receives an ARTProtocolMessageAuth, then authorise

* Fix: if authUrl or authCallback fails and is CONNECTED then the connection should remain CONNECTED

 - RSA4c3

* Add `artDispatchScheduled` and a way to cancel the scheduled block

* Fix: authUrl/authCallback attempt times out after realtimeRequestTimeout

* Test suite: reset networkConnectEvent after spec

* Enhance: debug info

* fixup! Fix: authUrl/authCallback attempt times out after realtimeRequestTimeout

* fixup! Fix: if connected and the client receives an ARTProtocolMessageAuth, then authorise

* Fix: every realtime auth attempt should check if deadline is reached

* Rename createWithNSError to createFromNSError

* Fix: remove Auth dependency from WebSocketTransport

* Fix: should first authorize and then connect the transport

* RTN22 (#537)

* RTN22

* RTN22a

* Fix: realtime transport can be nil

* Fix: realtime should renew token by transitioning to CONNECTING

* Update RTL3 for 0.9 (#544)

* Update RTL3a

* Update RTL3b and RTL3c

* RTL3d

* RTL3e

* RTL14 (#550)

* UPDATE event (#559)

* UPDATE event (replace ERROR event)

* Fix: Connection should emit an UPDATE event

* Fix RTC8a1

* Fix specs and legacy tests

* RTN4h

* RTN4f

* RTN24

* Update RTL2 for 0.9  (#543)

* Add Realtime Channel Suspended state

* Add ProtocolMessageActionToStr method

* Add ChannelStateChange type

* Update RTL2

* RTL2f: pending

 - functionality hasn't been deployed

* Use ChannelStateChange on channel event emitter

* Test suite: simulate client suspension with before suspension callback

* Update tests using channel events

* Fix RTL14

* Fix: Channel on suspended should transition to SUSPENDED state

* Remove RTN18

* Fix: set Suspended on all channels when Connection moves to Suspended

* RTL2g

* Fix RTL12

* Fix RTL3d

* Fix: channel should reattach when connection is Connected

* Fix: should resume connection when the connection is Suspended

* Fix RTN11

* Fix RTL3e

* Fix RTC8a1

* Remove testSuspendingDetachesChannel

* Fix RTL3d

* Fix: channel is SUSPENDED then operation will result in an error

* Update RTL13 for 0.9 (#549)

* RTL13a

* RTL13b

* RTL13c

* Add ClientOptions.channelRetryTimeout

* RealtimeChannel reattach after timeout

* Fix: if the channel receives a server initiated DETACHED message and if the channel is in the ATTACHED or SUSPENDED states, then an attempt to reattach the channel should be made immediately

* Fix: move to Suspended if attach times out

* Fix: if the channel receives a server initiated DETACHED message and the channel is Attaching

* Remove test about #454 (replaced by RTL13)

* Update RTL4f

* Update RTL4 for 0.9 (#545)

* RTL4i

* RTL4h

* Update RTL4e

* Fix: attach request should be treated as though it has failed and the channel should transition to the SUSPENDED state

* Fix: attach after Detaching

* Fix: if it fails to detach then move back to ATTACHED

* Fix RTL5f

* Update RTL6c for 0.9 (#547)

* Update RTL6c2

* Update RTL6c4

* RTL6c3 for Detached

* Update RTL6c4 for channel Failed

* Better code completion

* Add ChannelStateChange.event property (#561)

* Update RTN4 for 0.9 (#560)

* Update RTN4e

* Update RTN4f

* Add ConnectionStateChange.event property

* Update RTL5 for 0.9 (#546)

* RTL5j

* Update RTL5a

* RTL5i

* Fix: if channel is SUSPENDED then the detach request transitions immediately to DETACHED state

* Fix: if channel is ATTACHING then do the detach operation after the completion of the attaching

* Remove testSkipsFromAttachingToDetaching

* Fix: presence sync can fail

* Fix RTP11b

* Fix RTP9e

* RTP5: pending

* Fix RTL6c3

* Fix: should check channel state when a queued message is processed

* TR4i (#562)

* ARTProtocolMessageFlag enum: use NS_OPTIONS to define a bitmask

* TR4i

* Fix: should indicate that the channel has been resumed or not (RESUMED flag)

* Swift performance: speed up code completion (#569)

* Speed up code completion

 - This problem is fixed on Xcode 8 but since we are still using Xcode
7 I decided to change that code.

* Test suite: addMembersSequentiallyToChannel should return the realtime client

* Test suite: set AsyncDefaults.Timeout with default value

* Remove pending tests (#542)

* Fix: RTP6c pending test

* RSL1g4: remove pending

* RTP2: remove pending

* Fix RTC8

* Update RTP3 (#566)

* Update RTP8d (#572)

* RTP17 (#571)

* PresenceMap: list of internal members

* RTP17

* Add ARTPresenceActionToStr method

* RTP17: pending

* Update RTP2 for 0.9 (#563)

* RTP2: remove pending

* RTP2a

* RTP2b

* Test suite: set Nimble.AsyncDefaults.Timeout

 - increase the default timeout value from all async expectations

* RTP2c

* RTP2d

* RTP2e

* RTP2f

* RTP2g

* Test suite: ARTPresenceMessage convenience initializer

* Test suite: NSDate custom operators

 - convenience for use of `dateByAddingTimeInterval`

* Fix RTP2b1

* Fix RTP2b2

* PresenceMap: compare for newness

* Fix RTP2

* Remove warnings

* RTP18 (#567)

* Test suite: ARTPresenceMessage convenience initializer

* RTP18

* RTP18a

* RTP18b

* RTP18c

* Update RSA9h for 0.9 (#574)

* Auth: optional arguments

* Update RSA9h

* Update RSA8e for 0.9 (#573)

* Update RSA8e

* Auth: optional arguments

* Comments

* Update RSA10g for 0.9 (#575)

* Auth: optional arguments

* Update RSA10g

* Auth: subsequent authorizations with stored values

* Update RTP5 for 0.9 (#570)

* Update RTP5

* Update RTP5a

* Update RTP5b

* RTP5c

* Test suite: replaceAcksWithNacks

 - better code completion

* RTP5f

* PresenceMap: existing members before Sync

* Fix: presence get members should not wait for sync if sync is not in progress

* PresenceMap: reenter local member

* Test suite: replacing acks with nacks even with Presence action

* Fix: should queue messages before the attach operation

* Test suite: ARTPresenceAction description

* Better debug info

* Fix: should continue incrementing msgSerial serially if the connection resumes successfully

* Remove warnings

* Test suite: timings

* RTP19 (#568)

* RTP19

* RTP19a

* Fix: if channel resumed successfully then do not start sync

* Enhance RTP5: presence get should not have Absent members

* Fix race condition

* Fix #583: update httpRequestTimeout and httpMaxRetryDuration

* EventEmitter: use @synchronized because NSMutableArray are not thread safe

* Thread safety (#586)

* New EventEmitter (using NSNotificationCenter)

 - In most ways that matter NSNotificationCenter is thread safe. You
can add/remove observers from any thread and you can post notifications
from any thread.

* Events for the EventEmitter

* Fix: should cancel timers when connection times out

* Fix: new state change can occur before receiving publishing acknowledgement

* Test suite: async forced transitions

* Test suite: ack order

* Test suite: stop when there's no internet

* Fix: instance objects released to soon

* Performed a static analysis from Xcode

* fixup! Test suite: ack order

* Memory leak: call session invalidate to dispose of its strong reference to the delegate

* fixup! Test suite: ack order

* Fix RTN19a: guarantee of a new transport (check transport reference)

* Fix: ACK or NACK has not yet been received for a message, the client should consider the delivery of those messages as failed

* Enhance RTN14b: better timings

* Fix: REST and Realtime, wait for last operation to release the object

* fixup! Test suite: ack order

* Fix: cancel timers when a connection gets closed

* fixup! Test suite: ack order

* Test suite: timings

* fixup! Enhance RTN14b: better timings

* Test suite: close connections

* Fix: turn off immediately reachability when close occurs

* Fix RTC1d: wait for host is not reachable error

* fixup! Test suite: ack order

* Travis update

* Fix RTN19a
  • Loading branch information
ricardopereira authored Mar 23, 2017
1 parent 07c63ff commit 85fd3b5
Show file tree
Hide file tree
Showing 100 changed files with 8,249 additions and 2,083 deletions.
2 changes: 1 addition & 1 deletion .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,5 +15,5 @@ script:
# Use `travis_wait` when a long running command or compile step regularly takes longer than 10 minutes without producing any output.
# It writes a short line to the build log every minute for 20 minutes, extending the amount of time your command has to finish.
# Prefix `travis_wait` with a greater number to extend the wait time.
- travis_wait 30 scan --scheme "Ably" --open_report false
- scan --scheme "Ably" --open_report false --devices "iPhone 6s"
- bash ./Scripts/run_examples_tests.sh
2 changes: 1 addition & 1 deletion Ably.podspec
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
Pod::Spec.new do |s|
s.name = "Ably"
s.version = "0.8.10"
s.version = "0.9.0"
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 2.0.
Expand Down
28 changes: 22 additions & 6 deletions Ably.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -94,10 +94,12 @@
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 */; };
D714A63E1C74D4B2002F2CA0 /* NSObject+TestSuite.swift in Sources */ = {isa = PBXBuildFile; fileRef = D714A63D1C74D4B2002F2CA0 /* NSObject+TestSuite.swift */; };
D714A6401C75F0C5002F2CA0 /* ARTWebSocketTransport+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = D714A63F1C75F0C5002F2CA0 /* ARTWebSocketTransport+Private.h */; settings = {ATTRIBUTES = (Public, ); }; };
D714A6401C75F0C5002F2CA0 /* ARTWebSocketTransport+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = D714A63F1C75F0C5002F2CA0 /* ARTWebSocketTransport+Private.h */; settings = {ATTRIBUTES = (Private, ); }; };
D71D30041C5F7B2F002115B0 /* RealtimeClientChannels.swift in Sources */ = {isa = PBXBuildFile; fileRef = D71D30031C5F7B2F002115B0 /* RealtimeClientChannels.swift */; };
D72304701BB72CED00F1ABDA /* RealtimeClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = D723046F1BB72CED00F1ABDA /* RealtimeClient.swift */; };
D72768211C9C19040022F8B2 /* RestClientPresence.swift in Sources */ = {isa = PBXBuildFile; fileRef = D72768201C9C19040022F8B2 /* RestClientPresence.swift */; };
D73691FF1DB788C40062C150 /* ARTAuthDetails.h in Headers */ = {isa = PBXBuildFile; fileRef = D73691FD1DB788C40062C150 /* ARTAuthDetails.h */; settings = {ATTRIBUTES = (Public, ); }; };
D73692001DB788C40062C150 /* ARTAuthDetails.m in Sources */ = {isa = PBXBuildFile; fileRef = D73691FE1DB788C40062C150 /* ARTAuthDetails.m */; };
D746AE1D1BBB5207003ECEF8 /* ARTDataQuery.h in Headers */ = {isa = PBXBuildFile; fileRef = D746AE1A1BBB5207003ECEF8 /* ARTDataQuery.h */; settings = {ATTRIBUTES = (Public, ); }; };
D746AE1E1BBB5207003ECEF8 /* ARTDataQuery+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = D746AE1B1BBB5207003ECEF8 /* ARTDataQuery+Private.h */; settings = {ATTRIBUTES = (Private, ); }; };
D746AE1F1BBB5207003ECEF8 /* ARTDataQuery.m in Sources */ = {isa = PBXBuildFile; fileRef = D746AE1C1BBB5207003ECEF8 /* ARTDataQuery.m */; };
Expand Down Expand Up @@ -129,6 +131,7 @@
D75A3F1B1DDE5B62002A4AAD /* ARTGCD.h in Headers */ = {isa = PBXBuildFile; fileRef = D75A3F191DDE5B62002A4AAD /* ARTGCD.h */; settings = {ATTRIBUTES = (Public, ); }; };
D75A3F1C1DDE5B62002A4AAD /* ARTGCD.m in Sources */ = {isa = PBXBuildFile; fileRef = D75A3F1A1DDE5B62002A4AAD /* ARTGCD.m */; };
D77394031C6F6FFE00F5478F /* ARTProtocolMessage+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = D77394021C6F6FFE00F5478F /* ARTProtocolMessage+Private.h */; settings = {ATTRIBUTES = (Private, ); }; };
D77F02A81DAF8099001B3FF9 /* ARTFallback+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = D77F02A71DAF8099001B3FF9 /* ARTFallback+Private.h */; settings = {ATTRIBUTES = (Private, ); }; };
D780846E1C68B3E50083009D /* NSObject+TestSuite.m in Sources */ = {isa = PBXBuildFile; fileRef = D780846D1C68B3E50083009D /* NSObject+TestSuite.m */; };
D79FF2751D901CD50067FA6A /* ARTRealtime+TestSuite.m in Sources */ = {isa = PBXBuildFile; fileRef = D79FF2741D901CD50067FA6A /* ARTRealtime+TestSuite.m */; };
D7B17EE31C07208B00A6958E /* ARTConnectionDetails.h in Headers */ = {isa = PBXBuildFile; fileRef = D7B17EE11C07208B00A6958E /* ARTConnectionDetails.h */; settings = {ATTRIBUTES = (Public, ); }; };
Expand Down Expand Up @@ -156,15 +159,16 @@
D7F1D3771BF4DE72001A4B5E /* ARTRealtimePresence.h in Headers */ = {isa = PBXBuildFile; fileRef = D7F1D3751BF4DE72001A4B5E /* ARTRealtimePresence.h */; settings = {ATTRIBUTES = (Public, ); }; };
D7F1D3781BF4DE72001A4B5E /* ARTRealtimePresence.m in Sources */ = {isa = PBXBuildFile; fileRef = D7F1D3761BF4DE72001A4B5E /* ARTRealtimePresence.m */; };
D7F1D37A1BF4E33A001A4B5E /* ARTRestChannel+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = D7F1D3791BF4E33A001A4B5E /* ARTRestChannel+Private.h */; settings = {ATTRIBUTES = (Private, ); }; };
EB0505FC1C5BD7C4006BA7E2 /* ARTBaseMessage+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = EB0505FB1C5BD7C4006BA7E2 /* ARTBaseMessage+Private.h */; settings = {ATTRIBUTES = (Public, ); }; };
D7F2B8B21E42410D00B65151 /* ARTPresenceMessage+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = D7F2B8B11E42410D00B65151 /* ARTPresenceMessage+Private.h */; settings = {ATTRIBUTES = (Private, ); }; };
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, ); }; };
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, ); }; };
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, ); }; };
EB503C881C7E4A090053AF00 /* ARTClientOptions+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = EB503C871C7E4A090053AF00 /* ARTClientOptions+Private.h */; settings = {ATTRIBUTES = (Public, ); }; };
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, ); }; };
EB7617721CB6CBFF00D0981E /* ARTRealtimePresence+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = EB7617711CB6CBFE00D0981E /* ARTRealtimePresence+Private.h */; settings = {ATTRIBUTES = (Private, ); }; };
Expand Down Expand Up @@ -332,6 +336,8 @@
D71D30031C5F7B2F002115B0 /* RealtimeClientChannels.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RealtimeClientChannels.swift; sourceTree = "<group>"; };
D723046F1BB72CED00F1ABDA /* RealtimeClient.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RealtimeClient.swift; sourceTree = "<group>"; };
D72768201C9C19040022F8B2 /* RestClientPresence.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RestClientPresence.swift; sourceTree = "<group>"; };
D73691FD1DB788C40062C150 /* ARTAuthDetails.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ARTAuthDetails.h; sourceTree = "<group>"; };
D73691FE1DB788C40062C150 /* ARTAuthDetails.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ARTAuthDetails.m; sourceTree = "<group>"; };
D746AE1A1BBB5207003ECEF8 /* ARTDataQuery.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ARTDataQuery.h; sourceTree = "<group>"; };
D746AE1B1BBB5207003ECEF8 /* ARTDataQuery+Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "ARTDataQuery+Private.h"; sourceTree = "<group>"; };
D746AE1C1BBB5207003ECEF8 /* ARTDataQuery.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ARTDataQuery.m; sourceTree = "<group>"; };
Expand Down Expand Up @@ -364,6 +370,7 @@
D75A3F191DDE5B62002A4AAD /* ARTGCD.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ARTGCD.h; sourceTree = "<group>"; };
D75A3F1A1DDE5B62002A4AAD /* ARTGCD.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ARTGCD.m; sourceTree = "<group>"; };
D77394021C6F6FFE00F5478F /* ARTProtocolMessage+Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "ARTProtocolMessage+Private.h"; sourceTree = "<group>"; };
D77F02A71DAF8099001B3FF9 /* ARTFallback+Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "ARTFallback+Private.h"; sourceTree = "<group>"; };
D780846C1C68B3E50083009D /* NSObject+TestSuite.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSObject+TestSuite.h"; sourceTree = "<group>"; };
D780846D1C68B3E50083009D /* NSObject+TestSuite.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSObject+TestSuite.m"; sourceTree = "<group>"; };
D79FF2731D901CD50067FA6A /* ARTRealtime+TestSuite.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "ARTRealtime+TestSuite.h"; sourceTree = "<group>"; };
Expand Down Expand Up @@ -393,6 +400,7 @@
D7F1D3751BF4DE72001A4B5E /* ARTRealtimePresence.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ARTRealtimePresence.h; sourceTree = "<group>"; };
D7F1D3761BF4DE72001A4B5E /* ARTRealtimePresence.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ARTRealtimePresence.m; sourceTree = "<group>"; };
D7F1D3791BF4E33A001A4B5E /* ARTRestChannel+Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "ARTRestChannel+Private.h"; sourceTree = "<group>"; };
D7F2B8B11E42410D00B65151 /* ARTPresenceMessage+Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "ARTPresenceMessage+Private.h"; sourceTree = "<group>"; };
E3ECA6832E9694DC9EFC5DDD /* 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 = "<group>"; };
EB0505FB1C5BD7C4006BA7E2 /* ARTBaseMessage+Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "ARTBaseMessage+Private.h"; sourceTree = "<group>"; };
EB1AE0CB1C5C1EB200D62250 /* ARTEventEmitter+Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "ARTEventEmitter+Private.h"; sourceTree = "<group>"; };
Expand Down Expand Up @@ -668,18 +676,20 @@
D746AE331BBC29FF003ECEF8 /* Types */ = {
isa = PBXGroup;
children = (
EB8AC6421C6515ED002ABA92 /* ARTTokenParams+Private.h */,
EB0505FB1C5BD7C4006BA7E2 /* ARTBaseMessage+Private.h */,
D7D8F81F1BC2BE15009718F2 /* ARTAuthOptions.h */,
D7D5A6991CA3D9040071BD6D /* ARTAuthOptions+Private.h */,
D7D8F8201BC2BE15009718F2 /* ARTAuthOptions.m */,
D73691FD1DB788C40062C150 /* ARTAuthDetails.h */,
D73691FE1DB788C40062C150 /* ARTAuthDetails.m */,
D7D8F8271BC2C706009718F2 /* ARTTokenRequest.h */,
D7D8F8281BC2C706009718F2 /* ARTTokenRequest.m */,
D7D8F8291BC2C706009718F2 /* ARTTokenParams.h */,
EB8AC6421C6515ED002ABA92 /* ARTTokenParams+Private.h */,
D7D8F82A1BC2C706009718F2 /* ARTTokenParams.m */,
D7D8F8231BC2C691009718F2 /* ARTTokenDetails.h */,
D7D8F8241BC2C691009718F2 /* ARTTokenDetails.m */,
961343D61A42E0B7006DC822 /* ARTClientOptions.h */,
EB503C871C7E4A090053AF00 /* ARTClientOptions+Private.h */,
961343D71A42E0B7006DC822 /* ARTClientOptions.m */,
D746AE201BBB60EE003ECEF8 /* ARTChannel.h */,
D746AE241BBB611C003ECEF8 /* ARTChannel+Private.h */,
Expand All @@ -693,12 +703,14 @@
D77394021C6F6FFE00F5478F /* ARTProtocolMessage+Private.h */,
96E408421A38939E00087F77 /* ARTProtocolMessage.m */,
96BF61621A35CDE1004CF2B3 /* ARTBaseMessage.h */,
EB0505FB1C5BD7C4006BA7E2 /* ARTBaseMessage+Private.h */,
96BF61631A35CDE1004CF2B3 /* ARTBaseMessage.m */,
D746AE361BBC3201003ECEF8 /* ARTMessage.h */,
D746AE371BBC3201003ECEF8 /* ARTMessage.m */,
D746AE261BBB61C9003ECEF8 /* ARTPresence.h */,
D746AE271BBB61C9003ECEF8 /* ARTPresence.m */,
96A5079F1A377AA50077CDF8 /* ARTPresenceMessage.h */,
D7F2B8B11E42410D00B65151 /* ARTPresenceMessage+Private.h */,
96A507A01A377AA50077CDF8 /* ARTPresenceMessage.m */,
1C2B0FFB1B136A6D00E3633C /* ARTPresenceMap.h */,
1C2B0FFC1B136A6D00E3633C /* ARTPresenceMap.m */,
Expand All @@ -710,7 +722,6 @@
1C55427C1B148306003068DB /* ARTStatus.m */,
96BF615C1A35C1C8004CF2B3 /* ARTTypes.h */,
96BF615D1A35C1C8004CF2B3 /* ARTTypes.m */,
EB503C871C7E4A090053AF00 /* ARTClientOptions+Private.h */,
);
name = Types;
sourceTree = "<group>";
Expand Down Expand Up @@ -763,6 +774,7 @@
D746AE2E1BBBE7D7003ECEF8 /* ARTPaginatedResult+Private.h */,
850BFB4B1B79323C009D0ADD /* ARTPaginatedResult.m */,
1C578E1D1B3435CA00EF46EC /* ARTFallback.h */,
D77F02A71DAF8099001B3FF9 /* ARTFallback+Private.h */,
1C578E1E1B3435CA00EF46EC /* ARTFallback.m */,
);
name = HTTP;
Expand Down Expand Up @@ -837,6 +849,7 @@
96E4083F1A3892C700087F77 /* ARTRealtimeTransport.h in Headers */,
D746AE4F1BBD84E7003ECEF8 /* ARTChannelOptions.h in Headers */,
D7588AF31BFF91B800BB8279 /* ARTURLSessionServerTrust.h in Headers */,
D77F02A81DAF8099001B3FF9 /* ARTFallback+Private.h in Headers */,
D746AE3C1BBC5AE1003ECEF8 /* ARTRealtimeChannel.h in Headers */,
96BF61701A35FB7C004CF2B3 /* ARTAuth.h in Headers */,
96A507A11A377AA50077CDF8 /* ARTPresenceMessage.h in Headers */,
Expand All @@ -848,9 +861,11 @@
D746AE251BBB611C003ECEF8 /* ARTChannel+Private.h in Headers */,
D7F1D3731BF4DE07001A4B5E /* ARTRestPresence.h in Headers */,
D7B17EE31C07208B00A6958E /* ARTConnectionDetails.h in Headers */,
D7F2B8B21E42410D00B65151 /* ARTPresenceMessage+Private.h in Headers */,
EBFA366E1D58B05000B09AA7 /* ARTRestPresence+Private.h in Headers */,
EB2D85011CD769C800F23CDA /* ARTOSReachability.h in Headers */,
960D07971A46FFC300ED8C8C /* ARTRest+Private.h in Headers */,
D73691FF1DB788C40062C150 /* ARTAuthDetails.h in Headers */,
1C05CF201AC1D7EB00687AC9 /* ARTRealtime+Private.h in Headers */,
D7F1D37A1BF4E33A001A4B5E /* ARTRestChannel+Private.h in Headers */,
85B2C2191B6FE8DE00EA5254 /* CompatibilityMacros.h in Headers */,
Expand Down Expand Up @@ -1177,6 +1192,7 @@
1C55427D1B148306003068DB /* ARTStatus.m in Sources */,
D7B17EE41C07208B00A6958E /* ARTConnectionDetails.m in Sources */,
96BF61591A35B52C004CF2B3 /* ARTHttp.m in Sources */,
D73692001DB788C40062C150 /* ARTAuthDetails.m in Sources */,
1C578E201B3435CA00EF46EC /* ARTFallback.m in Sources */,
96A507B61A37881C0077CDF8 /* ARTNSDate+ARTUtil.m in Sources */,
850BFB4D1B79323C009D0ADD /* ARTPaginatedResult.m in Sources */,
Expand Down
2 changes: 1 addition & 1 deletion Examples/Tests/Podfile.lock
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
PODS:
- Ably (0.8.10):
- Ably (0.9.0):
- msgpack (= 0.1.8)
- SocketRocket (= 0.5.1)
- msgpack (0.1.8)
Expand Down
6 changes: 4 additions & 2 deletions Examples/Tests/TestsTests/TestsTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -64,17 +64,19 @@ class TestsTests: XCTestCase {
self.waitForExpectationsWithTimeout(10, handler: nil)

let backgroundRealtimeExpectation = self.expectationWithDescription("Realtime in a Background Queue")
var realtime: ARTRealtime! //strong reference
NSURLSession.sharedSession().dataTaskWithURL(NSURL(string:"https://ably.io")!) { _ in
let realtime = ARTRealtime(key: key as String)
realtime = ARTRealtime(key: key as String)
realtime.channels.get("foo").attach { _ in
defer { backgroundRealtimeExpectation.fulfill() }
}
}.resume()
self.waitForExpectationsWithTimeout(10, handler: nil)

let backgroundRestExpectation = self.expectationWithDescription("Rest in a Background Queue")
var rest: ARTRest! //strong reference
NSURLSession.sharedSession().dataTaskWithURL(NSURL(string:"https://ably.io")!) { _ in
let rest = ARTRest(key: key as String)
rest = ARTRest(key: key as String)
rest.channels.get("foo").history { _ in
defer { backgroundRestExpectation.fulfill() }
}
Expand Down
1 change: 1 addition & 0 deletions Podfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -25,3 +25,4 @@ SPEC CHECKSUMS:
PODFILE CHECKSUM: c59fef6e348f90fbaa529d13373c2958f7b9b642

COCOAPODS: 1.1.1

6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ You can install Ably for iOS through CocoaPods, Carthage or manually.
Add this line to your application's Podfile:

# For Xcode 7.3 and newer
pod 'Ably', '~> 0.8'
pod 'Ably', '~> 0.9'

And then install the dependency:

Expand All @@ -26,13 +26,13 @@ And then install the dependency:
Add this line to your application's Cartfile:

# For Xcode 7.3 and newer
github "ably/ably-ios" ~> 0.8
github "ably/ably-ios" ~> 0.9

And then run `carthage update` to build the framework and drag the built Ably.framework into your Xcode project.

### Manual installation

1. Get the code from GitHub [from the release page](https://github.com/ably/ably-ios/releases/tag/0.8.0), 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/0.9.0), 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.
Expand Down
Loading

0 comments on commit 85fd3b5

Please sign in to comment.