diff --git a/CHANGELOG.md b/CHANGELOG.md index fb079441..d49e7d31 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,13 @@ MQTT-Client-Framework iOS Release Notes ======================================= +## MQTT-Client-Framework 0.3.0 +>Release date: 2015-10-03 + +[NEW] provide support for tvOS, OSX and iOS closes #50 +[NEW] add messageDelivered delegate message in MQTTSessionManager closes #49 +[FIX] clarification of changing subscriptions in MQTTSessionManager closes #47 + ## MQTT-Client-Framework 0.2.6 >Release date: 2015-08-25 diff --git a/MQTTClient.podspec b/MQTTClient.podspec index c332e63d..e0f88c60 100644 --- a/MQTTClient.podspec +++ b/MQTTClient.podspec @@ -1,14 +1,17 @@ Pod::Spec.new do |s| s.name = "MQTTClient" - s.version = "0.2.6" - s.summary = "IOS native ObjectiveC MQTT Framework" + s.version = "0.3.0" + s.summary = "iOS, OSX and tvOS native ObjectiveC MQTT Framework" s.homepage = "https://github.com/ckrey/MQTT-Client-Framework" s.license = { :type => "MIT", :file => "LICENSE" } s.author = { "Christoph Krey" => "krey.christoph@gmail.com" } - s.source = { :git => "https://github.com/ckrey/MQTT-Client-Framework.git", :tag => "0.2.6" } + s.source = { :git => "https://github.com/ckrey/MQTT-Client-Framework.git", :tag => "0.3.0" } s.source_files = "MQTTClient/MQTTClient", "MQTTClient/MQTTClient/**/*.{h,m}" s.requires_arc = true + s.platform = :ios, "6.1", :osx, "10.10", :tvos, "9.0" s.ios.deployment_target = "6.1" + s.osx.deployment_target = "10.10" + s.tvos.deployment_target = "9.0" end diff --git a/MQTTClient/MQTTClient.xcodeproj/project.pbxproj b/MQTTClient/MQTTClient.xcodeproj/project.pbxproj index 138853a8..4cf85d40 100644 --- a/MQTTClient/MQTTClient.xcodeproj/project.pbxproj +++ b/MQTTClient/MQTTClient.xcodeproj/project.pbxproj @@ -35,7 +35,95 @@ /* Begin PBXBuildFile section */ 840507C5193DCF2E002EBBD2 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 840507C4193DCF2E002EBBD2 /* UIKit.framework */; }; + 840715FA1BBE999700FBB3CB /* mosquitto.org.cer in Resources */ = {isa = PBXBuildFile; fileRef = 8482D3C91B49332700D81CC8 /* mosquitto.org.cer */; }; + 840715FB1BBE999700FBB3CB /* info@owntracks.org.p12 in Resources */ = {isa = PBXBuildFile; fileRef = 8482D3C51B4922E100D81CC8 /* info@owntracks.org.p12 */; }; + 840715FC1BBE999700FBB3CB /* KreyChristoph.p12 in Resources */ = {isa = PBXBuildFile; fileRef = 8482D3C31B49110200D81CC8 /* KreyChristoph.p12 */; }; + 840715FD1BBE999700FBB3CB /* server.der in Resources */ = {isa = PBXBuildFile; fileRef = C21D3CA71B1ED2F40012DD2F /* server.der */; }; + 840715FE1BBE999700FBB3CB /* ADNNetServerTrustChain in Resources */ = {isa = PBXBuildFile; fileRef = C21D3C9D1B1EC4400012DD2F /* ADNNetServerTrustChain */; }; + 840715FF1BBE999700FBB3CB /* HTTPBinOrgServerTrustChain in Resources */ = {isa = PBXBuildFile; fileRef = C21D3C9F1B1EC44A0012DD2F /* HTTPBinOrgServerTrustChain */; }; + 840716001BBE999700FBB3CB /* httpbinorg_01162016.cer in Resources */ = {isa = PBXBuildFile; fileRef = 6BC7F79296C7162FC7094249 /* httpbinorg_01162016.cer */; }; + 840716011BBE999700FBB3CB /* AddTrust_External_CA_Root.cer in Resources */ = {isa = PBXBuildFile; fileRef = 6BC7FE76A4BC8055ED6BE604 /* AddTrust_External_CA_Root.cer */; }; + 840716021BBE999700FBB3CB /* COMODO_RSA_Certification_Authority.cer in Resources */ = {isa = PBXBuildFile; fileRef = 6BC7FBB3707F74CF8A39DC5D /* COMODO_RSA_Certification_Authority.cer */; }; + 840716031BBE999700FBB3CB /* COMODO_RSA_Domain_Validation_Secure_Server_CA.cer in Resources */ = {isa = PBXBuildFile; fileRef = 6BC7F89078C0CB2EE866B368 /* COMODO_RSA_Domain_Validation_Secure_Server_CA.cer */; }; + 840716041BBE999700FBB3CB /* AltName.cer in Resources */ = {isa = PBXBuildFile; fileRef = 6BC7FE28E1F56DDCC029E7B9 /* AltName.cer */; }; + 840716051BBE999700FBB3CB /* NoDomains.cer in Resources */ = {isa = PBXBuildFile; fileRef = 6BC7FEBFE55BBF61F564981F /* NoDomains.cer */; }; + 840716061BBE999700FBB3CB /* foobar.com.cer in Resources */ = {isa = PBXBuildFile; fileRef = 6BC7F5C2E599BA5BD018C8AB /* foobar.com.cer */; }; + 840716071BBE99B000FBB3CB /* adn_0.cer in Resources */ = {isa = PBXBuildFile; fileRef = C21D3CA11B1EC63E0012DD2F /* adn_0.cer */; }; + 840716081BBE99B000FBB3CB /* adn_1.cer in Resources */ = {isa = PBXBuildFile; fileRef = C21D3CA31B1EC6420012DD2F /* adn_1.cer */; }; + 840716091BBE99B000FBB3CB /* adn_2.cer in Resources */ = {isa = PBXBuildFile; fileRef = C21D3CA51B1EC6450012DD2F /* adn_2.cer */; }; + 8407160A1BBEE4B300FBB3CB /* MQTTSessionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 84B1AFF1196D99170056B959 /* MQTTSessionManager.m */; }; + 8407160B1BBEE68900FBB3CB /* MQTTSessionManagerTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 8429773E1B87CEF600A119FB /* MQTTSessionManagerTests.m */; }; + 8407160D1BBEE6A000FBB3CB /* SwiftTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84B739B21A66F07A00B103F4 /* SwiftTests.swift */; }; + 8407160E1BBEE6A000FBB3CB /* SwiftTests2.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8442BEE81A97B15100D00E55 /* SwiftTests2.swift */; }; + 8407161D1BBEEFC000FBB3CB /* MQTTSSLSecurityPolicy.h in Headers */ = {isa = PBXBuildFile; fileRef = C21D3C6A1B1EBAC70012DD2F /* MQTTSSLSecurityPolicy.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 8407161E1BBEEFC000FBB3CB /* MQTTDecoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 846191FC1883E8FD00101409 /* MQTTDecoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 8407161F1BBEEFC000FBB3CB /* MQTTEncoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 846191FD1883E8FD00101409 /* MQTTEncoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 840716201BBEEFC000FBB3CB /* MQTTMessage.h in Headers */ = {isa = PBXBuildFile; fileRef = 846191FE1883E8FD00101409 /* MQTTMessage.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 840716211BBEEFC000FBB3CB /* MQTTSession.h in Headers */ = {isa = PBXBuildFile; fileRef = 846191FF1883E8FD00101409 /* MQTTSession.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 840716221BBEEFC000FBB3CB /* MQTTPersistence.h in Headers */ = {isa = PBXBuildFile; fileRef = 846243671ABE9E5900B72519 /* MQTTPersistence.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 840716241BBEEFC000FBB3CB /* MQTTSessionManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 84B1AFF0196D99170056B959 /* MQTTSessionManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 840716261BBEEFD500FBB3CB /* MQTTClient.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 846191321883E56800101409 /* MQTTClient.h */; }; + 840716271BBEEFE200FBB3CB /* MQTTSSLSecurityPolicy.m in Sources */ = {isa = PBXBuildFile; fileRef = C21D3C6B1B1EBAC70012DD2F /* MQTTSSLSecurityPolicy.m */; }; + 840716281BBEEFE200FBB3CB /* MQTTDecoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 846191E81883E8B900101409 /* MQTTDecoder.m */; }; + 840716291BBEEFE200FBB3CB /* MQTTEncoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 846191E91883E8B900101409 /* MQTTEncoder.m */; }; + 8407162A1BBEEFE200FBB3CB /* MQTTMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = 846191EA1883E8B900101409 /* MQTTMessage.m */; }; + 8407162B1BBEEFE200FBB3CB /* MQTTSession.m in Sources */ = {isa = PBXBuildFile; fileRef = 846191EB1883E8B900101409 /* MQTTSession.m */; }; + 8407162C1BBEEFEC00FBB3CB /* MQTTPersistence.m in Sources */ = {isa = PBXBuildFile; fileRef = 846243681ABE9E5900B72519 /* MQTTPersistence.m */; }; + 8407162D1BBEEFEC00FBB3CB /* MQTTSessionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 84B1AFF1196D99170056B959 /* MQTTSessionManager.m */; }; + 840716371BBEF13A00FBB3CB /* libMQTTClientOSX.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 840716141BBEEF9C00FBB3CB /* libMQTTClientOSX.dylib */; }; + 8407163E1BBEF16E00FBB3CB /* CFNetwork.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8407163D1BBEF16E00FBB3CB /* CFNetwork.framework */; }; + 840716401BBEF17600FBB3CB /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8407163F1BBEF17600FBB3CB /* Foundation.framework */; }; + 840716411BBEF18B00FBB3CB /* mosquitto.org.cer in Resources */ = {isa = PBXBuildFile; fileRef = 8482D3C91B49332700D81CC8 /* mosquitto.org.cer */; }; + 840716421BBEF18B00FBB3CB /* info@owntracks.org.p12 in Resources */ = {isa = PBXBuildFile; fileRef = 8482D3C51B4922E100D81CC8 /* info@owntracks.org.p12 */; }; + 840716431BBEF18B00FBB3CB /* KreyChristoph.p12 in Resources */ = {isa = PBXBuildFile; fileRef = 8482D3C31B49110200D81CC8 /* KreyChristoph.p12 */; }; + 840716441BBEF18B00FBB3CB /* server.der in Resources */ = {isa = PBXBuildFile; fileRef = C21D3CA71B1ED2F40012DD2F /* server.der */; }; + 840716451BBEF18B00FBB3CB /* adn_0.cer in Resources */ = {isa = PBXBuildFile; fileRef = C21D3CA11B1EC63E0012DD2F /* adn_0.cer */; }; + 840716461BBEF18B00FBB3CB /* adn_1.cer in Resources */ = {isa = PBXBuildFile; fileRef = C21D3CA31B1EC6420012DD2F /* adn_1.cer */; }; + 840716471BBEF18B00FBB3CB /* adn_2.cer in Resources */ = {isa = PBXBuildFile; fileRef = C21D3CA51B1EC6450012DD2F /* adn_2.cer */; }; + 840716481BBEF18B00FBB3CB /* ADNNetServerTrustChain in Resources */ = {isa = PBXBuildFile; fileRef = C21D3C9D1B1EC4400012DD2F /* ADNNetServerTrustChain */; }; + 840716491BBEF18B00FBB3CB /* HTTPBinOrgServerTrustChain in Resources */ = {isa = PBXBuildFile; fileRef = C21D3C9F1B1EC44A0012DD2F /* HTTPBinOrgServerTrustChain */; }; + 8407164A1BBEF18B00FBB3CB /* httpbinorg_01162016.cer in Resources */ = {isa = PBXBuildFile; fileRef = 6BC7F79296C7162FC7094249 /* httpbinorg_01162016.cer */; }; + 8407164B1BBEF18B00FBB3CB /* AddTrust_External_CA_Root.cer in Resources */ = {isa = PBXBuildFile; fileRef = 6BC7FE76A4BC8055ED6BE604 /* AddTrust_External_CA_Root.cer */; }; + 8407164C1BBEF18B00FBB3CB /* COMODO_RSA_Certification_Authority.cer in Resources */ = {isa = PBXBuildFile; fileRef = 6BC7FBB3707F74CF8A39DC5D /* COMODO_RSA_Certification_Authority.cer */; }; + 8407164D1BBEF18B00FBB3CB /* COMODO_RSA_Domain_Validation_Secure_Server_CA.cer in Resources */ = {isa = PBXBuildFile; fileRef = 6BC7F89078C0CB2EE866B368 /* COMODO_RSA_Domain_Validation_Secure_Server_CA.cer */; }; + 8407164E1BBEF18B00FBB3CB /* AltName.cer in Resources */ = {isa = PBXBuildFile; fileRef = 6BC7FE28E1F56DDCC029E7B9 /* AltName.cer */; }; + 8407164F1BBEF18B00FBB3CB /* NoDomains.cer in Resources */ = {isa = PBXBuildFile; fileRef = 6BC7FEBFE55BBF61F564981F /* NoDomains.cer */; }; + 840716501BBEF18B00FBB3CB /* foobar.com.cer in Resources */ = {isa = PBXBuildFile; fileRef = 6BC7F5C2E599BA5BD018C8AB /* foobar.com.cer */; }; + 840716511BBEF19E00FBB3CB /* MQTTSSLSecurityPolicyTests.m in Sources */ = {isa = PBXBuildFile; fileRef = C21D3C701B1EBD730012DD2F /* MQTTSSLSecurityPolicyTests.m */; }; + 840716531BBEF19E00FBB3CB /* MQTTClientTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 846191491883E56800101409 /* MQTTClientTests.m */; }; + 840716541BBEF19E00FBB3CB /* MultiThreadingTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 84B1AFED196C7AF60056B959 /* MultiThreadingTests.m */; }; + 840716551BBEF19E00FBB3CB /* MQTTACLTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 844C93AA1A81645D00CA4A03 /* MQTTACLTests.m */; }; + 840716561BBEF19E00FBB3CB /* MQTTClientOnlyTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 848BB8F2195FF7A2004FCAE2 /* MQTTClientOnlyTests.m */; }; + 840716571BBEF19E00FBB3CB /* MQTTClientSubscriptionTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 845DBE761884AAD700EDB183 /* MQTTClientSubscriptionTests.m */; }; + 840716581BBEF19E00FBB3CB /* MQTTClientPublishTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 840785A818A2AA26009158D5 /* MQTTClientPublishTests.m */; }; + 840716591BBEF19E00FBB3CB /* MQTTSessionManagerTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 8429773E1B87CEF600A119FB /* MQTTSessionManagerTests.m */; }; + 8407165A1BBEF19E00FBB3CB /* SwiftTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84B739B21A66F07A00B103F4 /* SwiftTests.swift */; }; + 8407165B1BBEF19E00FBB3CB /* SwiftTests2.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8442BEE81A97B15100D00E55 /* SwiftTests2.swift */; }; 840785A918A2AA26009158D5 /* MQTTClientPublishTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 840785A818A2AA26009158D5 /* MQTTClientPublishTests.m */; }; + 8425D6E51BBE8B65005AD733 /* MQTTSSLSecurityPolicy.m in Sources */ = {isa = PBXBuildFile; fileRef = C21D3C6B1B1EBAC70012DD2F /* MQTTSSLSecurityPolicy.m */; }; + 8425D6E71BBE8B65005AD733 /* MQTTDecoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 846191E81883E8B900101409 /* MQTTDecoder.m */; }; + 8425D6E91BBE8B65005AD733 /* MQTTEncoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 846191E91883E8B900101409 /* MQTTEncoder.m */; }; + 8425D6EB1BBE8B65005AD733 /* MQTTMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = 846191EA1883E8B900101409 /* MQTTMessage.m */; }; + 8425D6ED1BBE8B65005AD733 /* MQTTSession.m in Sources */ = {isa = PBXBuildFile; fileRef = 846191EB1883E8B900101409 /* MQTTSession.m */; }; + 8425D6EF1BBE8B65005AD733 /* MQTTPersistence.m in Sources */ = {isa = PBXBuildFile; fileRef = 846243681ABE9E5900B72519 /* MQTTPersistence.m */; }; + 8425D6F31BBE8B7E005AD733 /* MQTTClient.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 846191321883E56800101409 /* MQTTClient.h */; }; + 8425D6F51BBE8BA2005AD733 /* MQTTSSLSecurityPolicy.h in Headers */ = {isa = PBXBuildFile; fileRef = C21D3C6A1B1EBAC70012DD2F /* MQTTSSLSecurityPolicy.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 8425D6F61BBE8BA2005AD733 /* MQTTSession.h in Headers */ = {isa = PBXBuildFile; fileRef = 846191FF1883E8FD00101409 /* MQTTSession.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 8425D6F71BBE8BA2005AD733 /* MQTTClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 846191321883E56800101409 /* MQTTClient.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 8425D6F81BBE8BB4005AD733 /* MQTTDecoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 846191FC1883E8FD00101409 /* MQTTDecoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 8425D6F91BBE8BB4005AD733 /* MQTTEncoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 846191FD1883E8FD00101409 /* MQTTEncoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 8425D6FA1BBE8BB4005AD733 /* MQTTMessage.h in Headers */ = {isa = PBXBuildFile; fileRef = 846191FE1883E8FD00101409 /* MQTTMessage.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 8425D6FB1BBE8BB4005AD733 /* MQTTPersistence.h in Headers */ = {isa = PBXBuildFile; fileRef = 846243671ABE9E5900B72519 /* MQTTPersistence.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 8425D7061BBE8D3D005AD733 /* libMQTTClientTV.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 8425D6D91BBE8B45005AD733 /* libMQTTClientTV.a */; }; + 8425D70D1BBE8D68005AD733 /* MQTTSSLSecurityPolicyTests.m in Sources */ = {isa = PBXBuildFile; fileRef = C21D3C701B1EBD730012DD2F /* MQTTSSLSecurityPolicyTests.m */; }; + 8425D70E1BBE8D68005AD733 /* MQTTClientSubscriptionTests.m in Sources */ = {isa = PBXBuildFile; fileRef = C21D3C6E1B1EBB0E0012DD2F /* MQTTClientSubscriptionTests.m */; }; + 8425D70F1BBE8D68005AD733 /* MQTTClientTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 846191491883E56800101409 /* MQTTClientTests.m */; }; + 8425D7101BBE8D68005AD733 /* MultiThreadingTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 84B1AFED196C7AF60056B959 /* MultiThreadingTests.m */; }; + 8425D7111BBE8D68005AD733 /* MQTTACLTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 844C93AA1A81645D00CA4A03 /* MQTTACLTests.m */; }; + 8425D7121BBE8D68005AD733 /* MQTTClientOnlyTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 848BB8F2195FF7A2004FCAE2 /* MQTTClientOnlyTests.m */; }; + 8425D7141BBE8D68005AD733 /* MQTTClientPublishTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 840785A818A2AA26009158D5 /* MQTTClientPublishTests.m */; }; + 8425D7191BBE8EF1005AD733 /* CoreData.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8425D7181BBE8EF1005AD733 /* CoreData.framework */; }; + 8425D71B1BBE8EF9005AD733 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8425D71A1BBE8EF9005AD733 /* Foundation.framework */; }; 8429773F1B87CEF600A119FB /* MQTTSessionManagerTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 8429773E1B87CEF600A119FB /* MQTTSessionManagerTests.m */; }; 8442BEE91A97B15100D00E55 /* SwiftTests2.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8442BEE81A97B15100D00E55 /* SwiftTests2.swift */; }; 844C93AB1A81645D00CA4A03 /* MQTTACLTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 844C93AA1A81645D00CA4A03 /* MQTTACLTests.m */; }; @@ -65,7 +153,7 @@ 8482D3CA1B49332700D81CC8 /* mosquitto.org.cer in Resources */ = {isa = PBXBuildFile; fileRef = 8482D3C91B49332700D81CC8 /* mosquitto.org.cer */; }; 848BB8F3195FF7A2004FCAE2 /* MQTTClientOnlyTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 848BB8F2195FF7A2004FCAE2 /* MQTTClientOnlyTests.m */; }; 84B1AFEE196C7AF60056B959 /* MultiThreadingTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 84B1AFED196C7AF60056B959 /* MultiThreadingTests.m */; }; - 84B1AFF2196D99170056B959 /* MQTTSessionManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 84B1AFF0196D99170056B959 /* MQTTSessionManager.h */; }; + 84B1AFF2196D99170056B959 /* MQTTSessionManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 84B1AFF0196D99170056B959 /* MQTTSessionManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; 84B1AFF3196D99170056B959 /* MQTTSessionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 84B1AFF1196D99170056B959 /* MQTTSessionManager.m */; }; 84B739B31A66F07A00B103F4 /* SwiftTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84B739B21A66F07A00B103F4 /* SwiftTests.swift */; }; C21D3C6C1B1EBAC70012DD2F /* MQTTSSLSecurityPolicy.h in Headers */ = {isa = PBXBuildFile; fileRef = C21D3C6A1B1EBAC70012DD2F /* MQTTSSLSecurityPolicy.h */; settings = {ATTRIBUTES = (Public, ); }; }; @@ -86,6 +174,20 @@ /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ + 840716381BBEF13A00FBB3CB /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 846191221883E56800101409 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 840716131BBEEF9C00FBB3CB; + remoteInfo = MQTTClientOSX; + }; + 8425D7071BBE8D3D005AD733 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 846191221883E56800101409 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 8425D6D81BBE8B45005AD733; + remoteInfo = MQTTClientTV; + }; 846191401883E56800101409 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 846191221883E56800101409 /* Project object */; @@ -110,6 +212,26 @@ /* End PBXContainerItemProxy section */ /* Begin PBXCopyFilesBuildPhase section */ + 840716251BBEEFCC00FBB3CB /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 7; + files = ( + 840716261BBEEFD500FBB3CB /* MQTTClient.h in CopyFiles */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 8425D6D71BBE8B45005AD733 /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = "include/$(PRODUCT_NAME)"; + dstSubfolderSpec = 16; + files = ( + 8425D6F31BBE8B7E005AD733 /* MQTTClient.h in CopyFiles */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 846191281883E56800101409 /* CopyFiles */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; @@ -132,7 +254,17 @@ 6BC7FEBFE55BBF61F564981F /* NoDomains.cer */ = {isa = PBXFileReference; lastKnownFileType = file.cer; path = NoDomains.cer; sourceTree = ""; }; 840507C2193DCE4B002EBBD2 /* CFNetwork.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CFNetwork.framework; path = System/Library/Frameworks/CFNetwork.framework; sourceTree = SDKROOT; }; 840507C4193DCF2E002EBBD2 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; + 840716141BBEEF9C00FBB3CB /* libMQTTClientOSX.dylib */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; includeInIndex = 0; path = libMQTTClientOSX.dylib; sourceTree = BUILT_PRODUCTS_DIR; }; + 840716321BBEF13A00FBB3CB /* MQTTClientOSXTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = MQTTClientOSXTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 840716361BBEF13A00FBB3CB /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 8407163D1BBEF16E00FBB3CB /* CFNetwork.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CFNetwork.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/System/Library/Frameworks/CFNetwork.framework; sourceTree = DEVELOPER_DIR; }; + 8407163F1BBEF17600FBB3CB /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; 840785A818A2AA26009158D5 /* MQTTClientPublishTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MQTTClientPublishTests.m; sourceTree = ""; }; + 8425D6D91BBE8B45005AD733 /* libMQTTClientTV.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libMQTTClientTV.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 8425D7011BBE8D3D005AD733 /* MQTTClientTVTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = MQTTClientTVTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 8425D7051BBE8D3D005AD733 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 8425D7181BBE8EF1005AD733 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS9.0.sdk/System/Library/Frameworks/CoreData.framework; sourceTree = DEVELOPER_DIR; }; + 8425D71A1BBE8EF9005AD733 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS9.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; 8429773E1B87CEF600A119FB /* MQTTSessionManagerTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MQTTSessionManagerTests.m; sourceTree = ""; }; 8442BEE81A97B15100D00E55 /* SwiftTests2.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SwiftTests2.swift; sourceTree = ""; }; 844C93AA1A81645D00CA4A03 /* MQTTACLTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MQTTACLTests.m; sourceTree = ""; }; @@ -181,6 +313,40 @@ /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ + 840716111BBEEF9C00FBB3CB /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 8407162F1BBEF13A00FBB3CB /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 840716401BBEF17600FBB3CB /* Foundation.framework in Frameworks */, + 8407163E1BBEF16E00FBB3CB /* CFNetwork.framework in Frameworks */, + 840716371BBEF13A00FBB3CB /* libMQTTClientOSX.dylib in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 8425D6D61BBE8B45005AD733 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 8425D6FE1BBE8D3D005AD733 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 8425D71B1BBE8EF9005AD733 /* Foundation.framework in Frameworks */, + 8425D7191BBE8EF1005AD733 /* CoreData.framework in Frameworks */, + 8425D7061BBE8D3D005AD733 /* libMQTTClientTV.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 846191271883E56800101409 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -252,11 +418,45 @@ path = SelfSigned; sourceTree = ""; }; + 840716151BBEEF9C00FBB3CB /* MQTTClientOSX */ = { + isa = PBXGroup; + children = ( + ); + path = MQTTClientOSX; + sourceTree = ""; + }; + 840716331BBEF13A00FBB3CB /* MQTTClientOSXTests */ = { + isa = PBXGroup; + children = ( + 840716361BBEF13A00FBB3CB /* Info.plist */, + ); + path = MQTTClientOSXTests; + sourceTree = ""; + }; + 8425D6DA1BBE8B45005AD733 /* MQTTClientTV */ = { + isa = PBXGroup; + children = ( + ); + path = MQTTClientTV; + sourceTree = ""; + }; + 8425D7021BBE8D3D005AD733 /* MQTTClientTVTests */ = { + isa = PBXGroup; + children = ( + 8425D7051BBE8D3D005AD733 /* Info.plist */, + ); + path = MQTTClientTVTests; + sourceTree = ""; + }; 846191211883E56800101409 = { isa = PBXGroup; children = ( 8461912F1883E56800101409 /* MQTTClient */, 846191431883E56800101409 /* MQTTClientTests */, + 8425D6DA1BBE8B45005AD733 /* MQTTClientTV */, + 8425D7021BBE8D3D005AD733 /* MQTTClientTVTests */, + 840716151BBEEF9C00FBB3CB /* MQTTClientOSX */, + 840716331BBEF13A00FBB3CB /* MQTTClientOSXTests */, 8461912C1883E56800101409 /* Frameworks */, 8461912B1883E56800101409 /* Products */, ); @@ -267,6 +467,10 @@ children = ( 8461912A1883E56800101409 /* libMQTTClient.a */, 8461913A1883E56800101409 /* MQTTClientTests.xctest */, + 8425D6D91BBE8B45005AD733 /* libMQTTClientTV.a */, + 8425D7011BBE8D3D005AD733 /* MQTTClientTVTests.xctest */, + 840716141BBEEF9C00FBB3CB /* libMQTTClientOSX.dylib */, + 840716321BBEF13A00FBB3CB /* MQTTClientOSXTests.xctest */, ); name = Products; sourceTree = ""; @@ -274,6 +478,10 @@ 8461912C1883E56800101409 /* Frameworks */ = { isa = PBXGroup; children = ( + 8407163F1BBEF17600FBB3CB /* Foundation.framework */, + 8407163D1BBEF16E00FBB3CB /* CFNetwork.framework */, + 8425D71A1BBE8EF9005AD733 /* Foundation.framework */, + 8425D7181BBE8EF1005AD733 /* CoreData.framework */, 8462436B1ABEAAF900B72519 /* CoreData.framework */, 840507C4193DCF2E002EBBD2 /* UIKit.framework */, 840507C2193DCE4B002EBBD2 /* CFNetwork.framework */, @@ -349,17 +557,45 @@ /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ + 840716121BBEEF9C00FBB3CB /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 8407161D1BBEEFC000FBB3CB /* MQTTSSLSecurityPolicy.h in Headers */, + 8407161E1BBEEFC000FBB3CB /* MQTTDecoder.h in Headers */, + 8407161F1BBEEFC000FBB3CB /* MQTTEncoder.h in Headers */, + 840716201BBEEFC000FBB3CB /* MQTTMessage.h in Headers */, + 840716211BBEEFC000FBB3CB /* MQTTSession.h in Headers */, + 840716221BBEEFC000FBB3CB /* MQTTPersistence.h in Headers */, + 840716241BBEEFC000FBB3CB /* MQTTSessionManager.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 8425D6F41BBE8B90005AD733 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 8425D6F71BBE8BA2005AD733 /* MQTTClient.h in Headers */, + 8425D6F51BBE8BA2005AD733 /* MQTTSSLSecurityPolicy.h in Headers */, + 8425D6FA1BBE8BB4005AD733 /* MQTTMessage.h in Headers */, + 8425D6F81BBE8BB4005AD733 /* MQTTDecoder.h in Headers */, + 8425D6F91BBE8BB4005AD733 /* MQTTEncoder.h in Headers */, + 8425D6FB1BBE8BB4005AD733 /* MQTTPersistence.h in Headers */, + 8425D6F61BBE8BA2005AD733 /* MQTTSession.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 846191E11883E72E00101409 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 84B1AFF2196D99170056B959 /* MQTTSessionManager.h in Headers */, 846191E71883E74D00101409 /* MQTTClient.h in Headers */, 846192021883E8FD00101409 /* MQTTEncoder.h in Headers */, 846192031883E8FD00101409 /* MQTTMessage.h in Headers */, 846243691ABE9E5900B72519 /* MQTTPersistence.h in Headers */, C21D3C6C1B1EBAC70012DD2F /* MQTTSSLSecurityPolicy.h in Headers */, 846192041883E8FD00101409 /* MQTTSession.h in Headers */, + 84B1AFF2196D99170056B959 /* MQTTSessionManager.h in Headers */, 846192011883E8FD00101409 /* MQTTDecoder.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; @@ -367,6 +603,78 @@ /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ + 840716131BBEEF9C00FBB3CB /* MQTTClientOSX */ = { + isa = PBXNativeTarget; + buildConfigurationList = 8407161A1BBEEF9C00FBB3CB /* Build configuration list for PBXNativeTarget "MQTTClientOSX" */; + buildPhases = ( + 840716101BBEEF9C00FBB3CB /* Sources */, + 840716111BBEEF9C00FBB3CB /* Frameworks */, + 840716121BBEEF9C00FBB3CB /* Headers */, + 840716251BBEEFCC00FBB3CB /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = MQTTClientOSX; + productName = MQTTClientOSX; + productReference = 840716141BBEEF9C00FBB3CB /* libMQTTClientOSX.dylib */; + productType = "com.apple.product-type.library.dynamic"; + }; + 840716311BBEF13A00FBB3CB /* MQTTClientOSXTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 8407163A1BBEF13A00FBB3CB /* Build configuration list for PBXNativeTarget "MQTTClientOSXTests" */; + buildPhases = ( + 8407162E1BBEF13A00FBB3CB /* Sources */, + 8407162F1BBEF13A00FBB3CB /* Frameworks */, + 840716301BBEF13A00FBB3CB /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 840716391BBEF13A00FBB3CB /* PBXTargetDependency */, + ); + name = MQTTClientOSXTests; + productName = MQTTClientOSXTests; + productReference = 840716321BBEF13A00FBB3CB /* MQTTClientOSXTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; + 8425D6D81BBE8B45005AD733 /* MQTTClientTV */ = { + isa = PBXNativeTarget; + buildConfigurationList = 8425D6DF1BBE8B45005AD733 /* Build configuration list for PBXNativeTarget "MQTTClientTV" */; + buildPhases = ( + 8425D6D51BBE8B45005AD733 /* Sources */, + 8425D6D61BBE8B45005AD733 /* Frameworks */, + 8425D6D71BBE8B45005AD733 /* CopyFiles */, + 8425D6F41BBE8B90005AD733 /* Headers */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = MQTTClientTV; + productName = MQTTClientTV; + productReference = 8425D6D91BBE8B45005AD733 /* libMQTTClientTV.a */; + productType = "com.apple.product-type.library.static"; + }; + 8425D7001BBE8D3D005AD733 /* MQTTClientTVTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 8425D7091BBE8D3D005AD733 /* Build configuration list for PBXNativeTarget "MQTTClientTVTests" */; + buildPhases = ( + 8425D6FD1BBE8D3D005AD733 /* Sources */, + 8425D6FE1BBE8D3D005AD733 /* Frameworks */, + 8425D6FF1BBE8D3D005AD733 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 8425D7081BBE8D3D005AD733 /* PBXTargetDependency */, + ); + name = MQTTClientTVTests; + productName = MQTTClientTVTests; + productReference = 8425D7011BBE8D3D005AD733 /* MQTTClientTVTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; 846191291883E56800101409 /* MQTTClient */ = { isa = PBXNativeTarget; buildConfigurationList = 8461914D1883E56800101409 /* Build configuration list for PBXNativeTarget "MQTTClient" */; @@ -410,9 +718,22 @@ 846191221883E56800101409 /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 0510; + LastSwiftUpdateCheck = 0710; + LastUpgradeCheck = 0710; ORGANIZATIONNAME = "Christoph Krey"; TargetAttributes = { + 840716131BBEEF9C00FBB3CB = { + CreatedOnToolsVersion = 7.1; + }; + 840716311BBEF13A00FBB3CB = { + CreatedOnToolsVersion = 7.1; + }; + 8425D6D81BBE8B45005AD733 = { + CreatedOnToolsVersion = 7.1; + }; + 8425D7001BBE8D3D005AD733 = { + CreatedOnToolsVersion = 7.1; + }; 84B739AA1A66EDFC00B103F4 = { CreatedOnToolsVersion = 6.1.1; }; @@ -435,11 +756,61 @@ 846191391883E56800101409 /* MQTTClientTests */, 846192071883EBE100101409 /* Framework */, 84B739AA1A66EDFC00B103F4 /* Doxygen Docs */, + 8425D6D81BBE8B45005AD733 /* MQTTClientTV */, + 8425D7001BBE8D3D005AD733 /* MQTTClientTVTests */, + 840716131BBEEF9C00FBB3CB /* MQTTClientOSX */, + 840716311BBEF13A00FBB3CB /* MQTTClientOSXTests */, ); }; /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ + 840716301BBEF13A00FBB3CB /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 840716411BBEF18B00FBB3CB /* mosquitto.org.cer in Resources */, + 840716421BBEF18B00FBB3CB /* info@owntracks.org.p12 in Resources */, + 840716431BBEF18B00FBB3CB /* KreyChristoph.p12 in Resources */, + 840716441BBEF18B00FBB3CB /* server.der in Resources */, + 840716451BBEF18B00FBB3CB /* adn_0.cer in Resources */, + 840716461BBEF18B00FBB3CB /* adn_1.cer in Resources */, + 840716471BBEF18B00FBB3CB /* adn_2.cer in Resources */, + 840716481BBEF18B00FBB3CB /* ADNNetServerTrustChain in Resources */, + 840716491BBEF18B00FBB3CB /* HTTPBinOrgServerTrustChain in Resources */, + 8407164A1BBEF18B00FBB3CB /* httpbinorg_01162016.cer in Resources */, + 8407164B1BBEF18B00FBB3CB /* AddTrust_External_CA_Root.cer in Resources */, + 8407164C1BBEF18B00FBB3CB /* COMODO_RSA_Certification_Authority.cer in Resources */, + 8407164D1BBEF18B00FBB3CB /* COMODO_RSA_Domain_Validation_Secure_Server_CA.cer in Resources */, + 8407164E1BBEF18B00FBB3CB /* AltName.cer in Resources */, + 8407164F1BBEF18B00FBB3CB /* NoDomains.cer in Resources */, + 840716501BBEF18B00FBB3CB /* foobar.com.cer in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 8425D6FF1BBE8D3D005AD733 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 840716071BBE99B000FBB3CB /* adn_0.cer in Resources */, + 840716081BBE99B000FBB3CB /* adn_1.cer in Resources */, + 840716091BBE99B000FBB3CB /* adn_2.cer in Resources */, + 840715FA1BBE999700FBB3CB /* mosquitto.org.cer in Resources */, + 840715FB1BBE999700FBB3CB /* info@owntracks.org.p12 in Resources */, + 840715FC1BBE999700FBB3CB /* KreyChristoph.p12 in Resources */, + 840715FD1BBE999700FBB3CB /* server.der in Resources */, + 840715FE1BBE999700FBB3CB /* ADNNetServerTrustChain in Resources */, + 840715FF1BBE999700FBB3CB /* HTTPBinOrgServerTrustChain in Resources */, + 840716001BBE999700FBB3CB /* httpbinorg_01162016.cer in Resources */, + 840716011BBE999700FBB3CB /* AddTrust_External_CA_Root.cer in Resources */, + 840716021BBE999700FBB3CB /* COMODO_RSA_Certification_Authority.cer in Resources */, + 840716031BBE999700FBB3CB /* COMODO_RSA_Domain_Validation_Secure_Server_CA.cer in Resources */, + 840716041BBE999700FBB3CB /* AltName.cer in Resources */, + 840716051BBE999700FBB3CB /* NoDomains.cer in Resources */, + 840716061BBE999700FBB3CB /* foobar.com.cer in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 846191381883E56800101409 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -511,6 +882,68 @@ /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ + 840716101BBEEF9C00FBB3CB /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 8407162C1BBEEFEC00FBB3CB /* MQTTPersistence.m in Sources */, + 8407162D1BBEEFEC00FBB3CB /* MQTTSessionManager.m in Sources */, + 840716271BBEEFE200FBB3CB /* MQTTSSLSecurityPolicy.m in Sources */, + 840716281BBEEFE200FBB3CB /* MQTTDecoder.m in Sources */, + 840716291BBEEFE200FBB3CB /* MQTTEncoder.m in Sources */, + 8407162A1BBEEFE200FBB3CB /* MQTTMessage.m in Sources */, + 8407162B1BBEEFE200FBB3CB /* MQTTSession.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 8407162E1BBEF13A00FBB3CB /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 840716511BBEF19E00FBB3CB /* MQTTSSLSecurityPolicyTests.m in Sources */, + 840716531BBEF19E00FBB3CB /* MQTTClientTests.m in Sources */, + 840716541BBEF19E00FBB3CB /* MultiThreadingTests.m in Sources */, + 840716551BBEF19E00FBB3CB /* MQTTACLTests.m in Sources */, + 840716561BBEF19E00FBB3CB /* MQTTClientOnlyTests.m in Sources */, + 840716571BBEF19E00FBB3CB /* MQTTClientSubscriptionTests.m in Sources */, + 840716581BBEF19E00FBB3CB /* MQTTClientPublishTests.m in Sources */, + 840716591BBEF19E00FBB3CB /* MQTTSessionManagerTests.m in Sources */, + 8407165A1BBEF19E00FBB3CB /* SwiftTests.swift in Sources */, + 8407165B1BBEF19E00FBB3CB /* SwiftTests2.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 8425D6D51BBE8B45005AD733 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 8407160A1BBEE4B300FBB3CB /* MQTTSessionManager.m in Sources */, + 8425D6E51BBE8B65005AD733 /* MQTTSSLSecurityPolicy.m in Sources */, + 8425D6E71BBE8B65005AD733 /* MQTTDecoder.m in Sources */, + 8425D6E91BBE8B65005AD733 /* MQTTEncoder.m in Sources */, + 8425D6EB1BBE8B65005AD733 /* MQTTMessage.m in Sources */, + 8425D6ED1BBE8B65005AD733 /* MQTTSession.m in Sources */, + 8425D6EF1BBE8B65005AD733 /* MQTTPersistence.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 8425D6FD1BBE8D3D005AD733 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 8425D70E1BBE8D68005AD733 /* MQTTClientSubscriptionTests.m in Sources */, + 8407160D1BBEE6A000FBB3CB /* SwiftTests.swift in Sources */, + 8407160E1BBEE6A000FBB3CB /* SwiftTests2.swift in Sources */, + 8407160B1BBEE68900FBB3CB /* MQTTSessionManagerTests.m in Sources */, + 8425D70D1BBE8D68005AD733 /* MQTTSSLSecurityPolicyTests.m in Sources */, + 8425D70F1BBE8D68005AD733 /* MQTTClientTests.m in Sources */, + 8425D7101BBE8D68005AD733 /* MultiThreadingTests.m in Sources */, + 8425D7111BBE8D68005AD733 /* MQTTACLTests.m in Sources */, + 8425D7121BBE8D68005AD733 /* MQTTClientOnlyTests.m in Sources */, + 8425D7141BBE8D68005AD733 /* MQTTClientPublishTests.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 846191261883E56800101409 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -545,6 +978,16 @@ /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ + 840716391BBEF13A00FBB3CB /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 840716131BBEEF9C00FBB3CB /* MQTTClientOSX */; + targetProxy = 840716381BBEF13A00FBB3CB /* PBXContainerItemProxy */; + }; + 8425D7081BBE8D3D005AD733 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 8425D6D81BBE8B45005AD733 /* MQTTClientTV */; + targetProxy = 8425D7071BBE8D3D005AD733 /* PBXContainerItemProxy */; + }; 846191411883E56800101409 /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = 846191291883E56800101409 /* MQTTClient */; @@ -574,6 +1017,164 @@ /* End PBXVariantGroup section */ /* Begin XCBuildConfiguration section */ + 8407161B1BBEEF9C00FBB3CB /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_WARN_UNREACHABLE_CODE = YES; + CODE_SIGN_IDENTITY = "-"; + DEBUG_INFORMATION_FORMAT = dwarf; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + ENABLE_STRICT_OBJC_MSGSEND = YES; + EXECUTABLE_PREFIX = lib; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + MACOSX_DEPLOYMENT_TARGET = 10.11; + MTL_ENABLE_DEBUG_INFO = YES; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = macosx; + }; + name = Debug; + }; + 8407161C1BBEEF9C00FBB3CB /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_WARN_UNREACHABLE_CODE = YES; + CODE_SIGN_IDENTITY = "-"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + ENABLE_STRICT_OBJC_MSGSEND = YES; + EXECUTABLE_PREFIX = lib; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + MACOSX_DEPLOYMENT_TARGET = 10.11; + MTL_ENABLE_DEBUG_INFO = NO; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = macosx; + }; + name = Release; + }; + 8407163B1BBEF13A00FBB3CB /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_WARN_UNREACHABLE_CODE = YES; + CODE_SIGN_IDENTITY = "-"; + COMBINE_HIDPI_IMAGES = YES; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + INFOPLIST_FILE = MQTTClientOSXTests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks"; + MACOSX_DEPLOYMENT_TARGET = 10.11; + MTL_ENABLE_DEBUG_INFO = YES; + PRODUCT_BUNDLE_IDENTIFIER = org.owntracks.MQTTClientOSXTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = macosx; + SWIFT_OBJC_BRIDGING_HEADER = "MQTTClientTests/MQTTClientTests-Bridging-Header.h"; + }; + name = Debug; + }; + 8407163C1BBEF13A00FBB3CB /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_WARN_UNREACHABLE_CODE = YES; + CODE_SIGN_IDENTITY = "-"; + COMBINE_HIDPI_IMAGES = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + INFOPLIST_FILE = MQTTClientOSXTests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks"; + MACOSX_DEPLOYMENT_TARGET = 10.11; + MTL_ENABLE_DEBUG_INFO = NO; + PRODUCT_BUNDLE_IDENTIFIER = org.owntracks.MQTTClientOSXTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = macosx; + SWIFT_OBJC_BRIDGING_HEADER = "MQTTClientTests/MQTTClientTests-Bridging-Header.h"; + }; + name = Release; + }; + 8425D6E01BBE8B45005AD733 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_WARN_UNREACHABLE_CODE = YES; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + MTL_ENABLE_DEBUG_INFO = YES; + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = appletvos; + SKIP_INSTALL = YES; + TVOS_DEPLOYMENT_TARGET = 9.0; + }; + name = Debug; + }; + 8425D6E11BBE8B45005AD733 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_WARN_UNREACHABLE_CODE = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + MTL_ENABLE_DEBUG_INFO = NO; + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = appletvos; + SKIP_INSTALL = YES; + TVOS_DEPLOYMENT_TARGET = 9.0; + }; + name = Release; + }; + 8425D70A1BBE8D3D005AD733 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_WARN_UNREACHABLE_CODE = YES; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + INFOPLIST_FILE = MQTTClientTVTests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MTL_ENABLE_DEBUG_INFO = YES; + PRODUCT_BUNDLE_IDENTIFIER = org.owntracks.MQTTClientTVTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = appletvos; + SWIFT_OBJC_BRIDGING_HEADER = "MQTTClientTests/MQTTClientTests-Bridging-Header.h"; + TVOS_DEPLOYMENT_TARGET = 9.0; + }; + name = Debug; + }; + 8425D70B1BBE8D3D005AD733 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_WARN_UNREACHABLE_CODE = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + INFOPLIST_FILE = MQTTClientTVTests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MTL_ENABLE_DEBUG_INFO = NO; + PRODUCT_BUNDLE_IDENTIFIER = org.owntracks.MQTTClientTVTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = appletvos; + SWIFT_OBJC_BRIDGING_HEADER = "MQTTClientTests/MQTTClientTests-Bridging-Header.h"; + TVOS_DEPLOYMENT_TARGET = 9.0; + }; + name = Release; + }; 8461914B1883E56800101409 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -591,6 +1192,7 @@ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; COPY_PHASE_STRIP = NO; + ENABLE_TESTABILITY = YES; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_DYNAMIC_NO_PIC = NO; GCC_OPTIMIZATION_LEVEL = 0; @@ -706,6 +1308,7 @@ ); INFOPLIST_FILE = "MQTTClientTests/MQTTClientTests-Info.plist"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = "com.gmail.cky6201.${PRODUCT_NAME:rfc1034identifier}"; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "MQTTClientTests/MQTTClientTests-Bridging-Header.h"; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; @@ -726,6 +1329,7 @@ GCC_PREFIX_HEADER = "MQTTClient/MQTTClient-Prefix.pch"; INFOPLIST_FILE = "MQTTClientTests/MQTTClientTests-Info.plist"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = "com.gmail.cky6201.${PRODUCT_NAME:rfc1034identifier}"; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "MQTTClientTests/MQTTClientTests-Bridging-Header.h"; WRAPPER_EXTENSION = xctest; @@ -769,6 +1373,40 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ + 8407161A1BBEEF9C00FBB3CB /* Build configuration list for PBXNativeTarget "MQTTClientOSX" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 8407161B1BBEEF9C00FBB3CB /* Debug */, + 8407161C1BBEEF9C00FBB3CB /* Release */, + ); + defaultConfigurationIsVisible = 0; + }; + 8407163A1BBEF13A00FBB3CB /* Build configuration list for PBXNativeTarget "MQTTClientOSXTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 8407163B1BBEF13A00FBB3CB /* Debug */, + 8407163C1BBEF13A00FBB3CB /* Release */, + ); + defaultConfigurationIsVisible = 0; + }; + 8425D6DF1BBE8B45005AD733 /* Build configuration list for PBXNativeTarget "MQTTClientTV" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 8425D6E01BBE8B45005AD733 /* Debug */, + 8425D6E11BBE8B45005AD733 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 8425D7091BBE8D3D005AD733 /* Build configuration list for PBXNativeTarget "MQTTClientTVTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 8425D70A1BBE8D3D005AD733 /* Debug */, + 8425D70B1BBE8D3D005AD733 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; 846191251883E56800101409 /* Build configuration list for PBXProject "MQTTClient" */ = { isa = XCConfigurationList; buildConfigurations = ( diff --git a/MQTTClient/MQTTClient/MQTTPersistence.m b/MQTTClient/MQTTClient/MQTTPersistence.m index 1d9cdb1b..7ec55b4e 100755 --- a/MQTTClient/MQTTClient/MQTTPersistence.m +++ b/MQTTClient/MQTTClient/MQTTPersistence.m @@ -58,7 +58,6 @@ - (MQTTPersistence *)init { return self; } - - (NSUInteger)windowSize:(NSString *)clientId { NSUInteger windowSize = 0; NSArray *flows = [self allFlowsforClientId:clientId diff --git a/MQTTClient/MQTTClient/MQTTSessionManager.h b/MQTTClient/MQTTClient/MQTTSessionManager.h index 1df900b4..3b2fab95 100644 --- a/MQTTClient/MQTTClient/MQTTSessionManager.h +++ b/MQTTClient/MQTTClient/MQTTSessionManager.h @@ -7,8 +7,9 @@ // #import +#ifndef TARGET_OS_MAC #import - +#endif #import "MQTTSession.h" /** delegate gives your application access to received messages @@ -33,6 +34,14 @@ typedef NS_ENUM(int, MQTTSessionManagerState) { @param retained indicates if the data retransmitted from server storage */ - (void)handleMessage:(NSData *)data onTopic:(NSString *)topic retained:(BOOL)retained; + +@optional + +/** gets called when a published message was actually delivered + @param msgID the Message Identifier of the delivered message + @note this method is called after a publish with qos 1 or 2 only + */ +- (void)messageDelivered:(UInt16)msgID; @end /** SessionManager handles the MQTT session for your application @@ -47,8 +56,10 @@ typedef NS_ENUM(int, MQTTSessionManagerState) { * The keys are topic filters. * The SessionManager subscribes to the given subscriptions after successfull (re-)connect * according to the cleansession parameter and the state of the session as indicated by the broker. + * Setting a new subscriptions dictionary initiates SUBSCRIBE or UNSUBSCRIBE messages by SessionManager + * by comparing the old and new subscriptions. */ -@property (strong, nonatomic) NSMutableDictionary *subscriptions; +@property (strong, nonatomic) NSDictionary *subscriptions; /** SessionManager status */ diff --git a/MQTTClient/MQTTClient/MQTTSessionManager.m b/MQTTClient/MQTTClient/MQTTSessionManager.m index d3d0e5ba..b7ecc787 100644 --- a/MQTTClient/MQTTClient/MQTTSessionManager.m +++ b/MQTTClient/MQTTClient/MQTTSessionManager.m @@ -37,14 +37,17 @@ @interface MQTTSessionManager() @property (strong, nonatomic) NSTimer *disconnectTimer; @property (strong, nonatomic) NSTimer *activityTimer; +#ifndef TARGET_OS_MAC @property (nonatomic) UIBackgroundTaskIdentifier backgroundTask; -@property (strong, nonatomic) void (^completionHandler)(UIBackgroundFetchResult); +#endif @property (nonatomic) BOOL persistent; @property (nonatomic) NSUInteger maxWindowSize; @property (nonatomic) NSUInteger maxSize; @property (nonatomic) NSUInteger maxMessages; +@property (strong, nonatomic) NSMutableDictionary *internalSubscriptions; + @end #define RECONNECT_TIMER 1.0 @@ -57,8 +60,8 @@ - (id)init self = [super init]; self.state = MQTTSessionManagerStateStarting; +#ifndef TARGET_OS_MAC self.backgroundTask = UIBackgroundTaskInvalid; - self.completionHandler = nil; NSNotificationCenter *defaultCenter = [NSNotificationCenter defaultCenter]; @@ -76,6 +79,7 @@ - (id)init selector:@selector(appDidBecomeActive) name:UIApplicationDidBecomeActiveNotification object:nil]; +#endif return self; } @@ -91,6 +95,7 @@ - (MQTTSessionManager *)initWithPersistence:(BOOL)persistent return self; } +#ifndef TARGET_OS_MAC - (void)appWillResignActive { [self disconnect]; @@ -110,6 +115,7 @@ - (void)appDidBecomeActive { [self connectToLast]; } +#endif - (void)connectTo:(NSString *)host port:(NSInteger)port @@ -301,15 +307,12 @@ - (void)handleEvent:(MQTTSession *)session event:(MQTTSessionEvent)eventCode err case MQTTSessionEventConnectionClosed: case MQTTSessionEventConnectionClosedByBroker: self.state = MQTTSessionManagerStateClosed; +#ifndef TARGET_OS_MAC if (self.backgroundTask) { [[UIApplication sharedApplication] endBackgroundTask:self.backgroundTask]; self.backgroundTask = UIBackgroundTaskInvalid; } - if (self.completionHandler) { - self.completionHandler(UIBackgroundFetchResultNewData); - self.completionHandler = nil; - } - +#endif self.state = MQTTSessionManagerStateStarting; break; case MQTTSessionEventProtocolError: @@ -335,7 +338,9 @@ - (void)handleEvent:(MQTTSession *)session event:(MQTTSessionEvent)eventCode err - (void)newMessage:(MQTTSession *)session data:(NSData *)data onTopic:(NSString *)topic qos:(MQTTQosLevel)qos retained:(BOOL)retained mid:(unsigned int)mid { - [self.delegate handleMessage:data onTopic:topic retained:retained]; + if (self.delegate) { + [self.delegate handleMessage:data onTopic:topic retained:retained]; + } } - (void)connected:(MQTTSession *)session sessionPresent:(BOOL)sessionPresent { @@ -347,6 +352,14 @@ - (void)connected:(MQTTSession *)session sessionPresent:(BOOL)sessionPresent { } } +- (void)messageDelivered:(MQTTSession *)session msgID:(UInt16)msgID { + if (self.delegate) { + if ([self.delegate respondsToSelector:@selector(messageDelivered:)]) { + [self.delegate messageDelivered:msgID]; + } + } +} + - (void)connectToInternal { @@ -376,7 +389,11 @@ - (void)connectToLast [self connectToInternal]; } -- (void)setSubscriptions:(NSMutableDictionary *)newSubscriptions +- (NSDictionary *)subscriptions { + return self.internalSubscriptions; +} + +- (void)setSubscriptions:(NSDictionary *)newSubscriptions { if (self.state==MQTTSessionManagerStateConnected) { for (NSString *topicFilter in self.subscriptions) { @@ -393,7 +410,7 @@ - (void)setSubscriptions:(NSMutableDictionary *)newSubscriptions } } } - _subscriptions=newSubscriptions; + _internalSubscriptions=[newSubscriptions mutableCopy]; } @end diff --git a/MQTTClient/MQTTClientOSXTests/Info.plist b/MQTTClient/MQTTClientOSXTests/Info.plist new file mode 100644 index 00000000..ba72822e --- /dev/null +++ b/MQTTClient/MQTTClientOSXTests/Info.plist @@ -0,0 +1,24 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + BNDL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + + diff --git a/MQTTClient/MQTTClientTVTests/Info.plist b/MQTTClient/MQTTClientTVTests/Info.plist new file mode 100644 index 00000000..ba72822e --- /dev/null +++ b/MQTTClient/MQTTClientTVTests/Info.plist @@ -0,0 +1,24 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + BNDL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + + diff --git a/MQTTClient/MQTTClientTests/MQTTACLTests.m b/MQTTClient/MQTTClientTests/MQTTACLTests.m index c9be1977..be14ab1a 100644 --- a/MQTTClient/MQTTClientTests/MQTTACLTests.m +++ b/MQTTClient/MQTTClientTests/MQTTACLTests.m @@ -6,7 +6,6 @@ // Copyright (c) 2015 Christoph Krey. All rights reserved. // -#import #import #import "MQTTClient.h" #import "MQTTClientTests.h" diff --git a/MQTTClient/MQTTClientTests/MQTTClientTests-Info.plist b/MQTTClient/MQTTClientTests/MQTTClientTests-Info.plist index 109a7d9f..169b6f71 100644 --- a/MQTTClient/MQTTClientTests/MQTTClientTests-Info.plist +++ b/MQTTClient/MQTTClientTests/MQTTClientTests-Info.plist @@ -7,7 +7,7 @@ CFBundleExecutable ${EXECUTABLE_NAME} CFBundleIdentifier - com.gmail.cky6201.${PRODUCT_NAME:rfc1034identifier} + $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion 6.0 CFBundlePackageType diff --git a/MQTTClient/MQTTClientTests/MQTTClientTests.h b/MQTTClient/MQTTClientTests/MQTTClientTests.h index 9a92ef0b..f7926a87 100644 --- a/MQTTClient/MQTTClientTests/MQTTClientTests.h +++ b/MQTTClient/MQTTClientTests/MQTTClientTests.h @@ -17,7 +17,7 @@ #define MULTI 15 // some test servers are limited in concurrent sessions #define BULK 99 #define ALOT 1024 -#define PERSISTENT true +#define PERSISTENT false //#define BROKERLIST @[@"local", @"localTls", @"localTlsCerts", @"mosquitto", @"mosquittoTls", @"mosquittoTlsCerts", @"eclipse", @"paho", @"pahotest", @"rabbitmq", @"hivemq", @"rsmb", @"mosca", @"m2m", @"vernemq", @"emqttd", @"moquette", @"activemq", @"apollo", @"cloudmqtt", @"hbmqtt"] #define BROKERLIST @[@"local"] diff --git a/MQTTClient/MQTTClientTests/MQTTSSLSecurityPolicyTests.m b/MQTTClient/MQTTClientTests/MQTTSSLSecurityPolicyTests.m index f52585d2..a601db7a 100644 --- a/MQTTClient/MQTTClientTests/MQTTSSLSecurityPolicyTests.m +++ b/MQTTClient/MQTTClientTests/MQTTSSLSecurityPolicyTests.m @@ -5,7 +5,6 @@ // Created by @bobwenx on 15/6/1. // -#import #import #import "MQTTSSLSecurityPolicy.h" diff --git a/MQTTClient/MQTTClientTests/MQTTSessionManagerTests.m b/MQTTClient/MQTTClientTests/MQTTSessionManagerTests.m index 167fee85..e876ad58 100644 --- a/MQTTClient/MQTTClientTests/MQTTSessionManagerTests.m +++ b/MQTTClient/MQTTClientTests/MQTTSessionManagerTests.m @@ -6,7 +6,6 @@ // Copyright (c) 2015 Christoph Krey. All rights reserved. // -#import #import #import "MQTTSessionManager.h" #import "MQTTClientTests.h" @@ -124,6 +123,10 @@ - (void)handleMessage:(NSData *)data onTopic:(NSString *)topic retained:(BOOL)re } } +- (void)messageDelivered:(UInt16)msgID { + NSLog(@"messageDelivered %d", msgID); +} + - (void)timeout:(NSTimer *)timer { NSLog(@"timeout s:%d", self.step); self.step++; diff --git a/MQTTClient/MQTTClientTests/SwiftTests.swift b/MQTTClient/MQTTClientTests/SwiftTests.swift index f5472f05..d3888923 100644 --- a/MQTTClient/MQTTClientTests/SwiftTests.swift +++ b/MQTTClient/MQTTClientTests/SwiftTests.swift @@ -83,7 +83,7 @@ class SwiftTests : XCTestCase, MQTTSessionDelegate { } func newMessage(session: MQTTSession!, data: NSData!, onTopic topic: String!, qos: MQTTQosLevel, retained: Bool, mid: UInt32) { - println("Received \(data) on:\(topic) q\(qos) r\(retained) m\(mid)") + print("Received \(data) on:\(topic) q\(qos) r\(retained) m\(mid)") sessionReceived = true; } diff --git a/MQTTClient/MQTTClientTests/SwiftTests2.swift b/MQTTClient/MQTTClientTests/SwiftTests2.swift index d4db2fc2..619e75ae 100644 --- a/MQTTClient/MQTTClientTests/SwiftTests2.swift +++ b/MQTTClient/MQTTClientTests/SwiftTests2.swift @@ -27,7 +27,7 @@ class SwiftTests2 : XCTestCase, MQTTSessionDelegate { ) session!.delegate = self; - session!.persistence.persistent = true; + session!.persistence.persistent = false; session!.connectToHost("localhost", port: 1883, @@ -79,7 +79,7 @@ class SwiftTests2 : XCTestCase, MQTTSessionDelegate { } func newMessage(session: MQTTSession!, data: NSData!, onTopic topic: String!, qos: MQTTQosLevel, retained: Bool, mid: UInt32) { - println("Received \(data) on:\(topic) q\(qos) r\(retained) m\(mid)") + print("Received \(data) on:\(topic) q\(qos) r\(retained) m\(mid)") sessionReceived = true; } diff --git a/MQTTClient/dist/MQTTClient.framework/Versions/A/Headers/MQTTSessionManager.h b/MQTTClient/dist/MQTTClient.framework/Versions/A/Headers/MQTTSessionManager.h index e04b8b68..3b2fab95 100644 --- a/MQTTClient/dist/MQTTClient.framework/Versions/A/Headers/MQTTSessionManager.h +++ b/MQTTClient/dist/MQTTClient.framework/Versions/A/Headers/MQTTSessionManager.h @@ -7,16 +7,18 @@ // #import +#ifndef TARGET_OS_MAC #import - +#endif #import "MQTTSession.h" +/** delegate gives your application access to received messages + */ @protocol MQTTSessionManagerDelegate -- (void)handleMessage:(NSData *)data onTopic:(NSString *)topic retained:(BOOL)retained; -@end - -@interface MQTTSessionManager : NSObject +/** + Enumeration of MQTTSessionManagerState values + */ typedef NS_ENUM(int, MQTTSessionManagerState) { MQTTSessionManagerStateStarting, MQTTSessionManagerStateConnecting, @@ -26,12 +28,81 @@ typedef NS_ENUM(int, MQTTSessionManagerState) { MQTTSessionManagerStateClosed }; +/** gets called when a new message was received + @param data the data received, might be zero length + @param topic the topic the data was published to + @param retained indicates if the data retransmitted from server storage + */ +- (void)handleMessage:(NSData *)data onTopic:(NSString *)topic retained:(BOOL)retained; + +@optional + +/** gets called when a published message was actually delivered + @param msgID the Message Identifier of the delivered message + @note this method is called after a publish with qos 1 or 2 only + */ +- (void)messageDelivered:(UInt16)msgID; +@end + +/** SessionManager handles the MQTT session for your application + */ +@interface MQTTSessionManager : NSObject + +/** the delegate receiving incoming messages + */ @property (weak, nonatomic) id delegate; -@property (strong, nonatomic) NSMutableDictionary *subscriptions; +/** subscriptions as a dictionary of NSNumber instances indicating the MQTTQoSLevel. + * The keys are topic filters. + * The SessionManager subscribes to the given subscriptions after successfull (re-)connect + * according to the cleansession parameter and the state of the session as indicated by the broker. + * Setting a new subscriptions dictionary initiates SUBSCRIBE or UNSUBSCRIBE messages by SessionManager + * by comparing the old and new subscriptions. + */ +@property (strong, nonatomic) NSDictionary *subscriptions; + +/** SessionManager status + */ @property (nonatomic, readonly) MQTTSessionManagerState state; + +/** SessionManager last error code when state equals MQTTSessionManagerStateError + */ @property (nonatomic, readonly) NSError *lastErrorCode; +/** initWithPersistence sets the MQTTPersistence properties other than default + * @param persistent YES or NO (default) to establish file or in memory persistence. + * @param maxWindowSize (a positive number, default is 16) to control the number of messages sent before waiting for acknowledgement in Qos 1 or 2. Additional messages are stored and transmitted later. + * @param maxSize (a positive number of bytes, default is 64 MB) to limit the size of the persistence file. Messages published after the limit is reached are dropped. + * @param maxMessages (a positive number, default is 1024) to limit the number of messages stored. Additional messages published are dropped. + * @return the initialized MQTTSessionManager object + */ + +- (MQTTSessionManager *)initWithPersistence:(BOOL)persistent + maxWindowSize:(NSUInteger)maxWindowSize + maxMessages:(NSUInteger)maxMessages + maxSize:(NSUInteger)maxSize; + + + +/** Connects to the MQTT broker and stores the parameters for subsequent reconnects + * @param host specifies the hostname or ip address to connect to. Defaults to @"localhost". + * @param port specifies the port to connect to + * @param tls specifies whether to use SSL or not + * @param keepalive The Keep Alive is a time interval measured in seconds. The MQTTClient ensures that the interval between Control Packets being sent does not exceed the Keep Alive value. In the absence of sending any other Control Packets, the Client sends a PINGREQ Packet. + * @param clean specifies if the server should discard previous session information. + * @param auth specifies the user and pass parameters should be used for authenthication + * @param user an NSString object containing the user's name (or ID) for authentication. May be nil. + * @param pass an NSString object containing the user's password. If userName is nil, password must be nil as well. + * @param will indicates whether a will shall be sent + * @param willTopic the Will Topic is a string, may be nil + * @param willMsg the Will Message, might be zero length or nil + * @param willQos specifies the QoS level to be used when publishing the Will Message. + * @param willRetainFlag indicates if the server should publish the Will Messages with retainFlag. + * @param clientId The Client Identifier identifies the Client to the Server. If nil, a random clientId is generated. + * @param securityPolicy A custom SSL security policy or nil. + * @param certificates An NSArray of the pinned certificates to use or nil. + */ + - (void)connectTo:(NSString *)host port:(NSInteger)port tls:(BOOL)tls @@ -40,13 +111,95 @@ typedef NS_ENUM(int, MQTTSessionManagerState) { auth:(BOOL)auth user:(NSString *)user pass:(NSString *)pass + will:(BOOL)will willTopic:(NSString *)willTopic - will:(NSData *)will + willMsg:(NSData *)willMsg + willQos:(MQTTQosLevel)willQos + willRetainFlag:(BOOL)willRetainFlag + withClientId:(NSString *)clientId + securityPolicy:(MQTTSSLSecurityPolicy *)securityPolicy + certificates:(NSArray *)certificates; + +/** Convenience alternative to full paramter connectTo + * @param host see connectTo description + * @param port see connectTo description + * @param tls see connectTo description + * @param keepalive see connectTo description + * @param clean see connectTo description + * @param auth see connectTo description + * @param user see connectTo description + * @param pass see connectTo description + * @param will see connectTo description + * @param willTopic see connectTo description + * @param willMsg see connectTo description + * @param willQos see connectTo description + * @param willRetainFlag see connectTo description + * @param clientId see connectTo description + */ + +- (void)connectTo:(NSString *)host + port:(NSInteger)port + tls:(BOOL)tls + keepalive:(NSInteger)keepalive + clean:(BOOL)clean + auth:(BOOL)auth + user:(NSString *)user + pass:(NSString *)pass + will:(BOOL)will + willTopic:(NSString *)willTopic + willMsg:(NSData *)willMsg willQos:(MQTTQosLevel)willQos willRetainFlag:(BOOL)willRetainFlag withClientId:(NSString *)clientId; + +/** Convenience alternative to full paramter connectTo + * @param host see connectTo description + * @param port see connectTo description + * @param tls see connectTo description + * @param keepalive see connectTo description + * @param clean see connectTo description + * @param auth see connectTo description + * @param user see connectTo description + * @param pass see connectTo description + * @param willTopic the Will Topic is a string, must not be nil + * @param will the Will Message, might be zero length + * @param willQos see connectTo description + * @param willRetainFlag see connectTo description + * @param clientId see connectTo description + */ + +- (void)connectTo:(NSString *)host + port:(NSInteger)port + tls:(BOOL)tls + keepalive:(NSInteger)keepalive + clean:(BOOL)clean + auth:(BOOL)auth + user:(NSString *)user + pass:(NSString *)pass + willTopic:(NSString *)willTopic + will:(NSData *)will + willQos:(MQTTQosLevel)willQos + willRetainFlag:(BOOL)willRetainFlag + withClientId:(NSString *)clientId; + +/** Re-Connects to the MQTT broker using the parameters for given in the connectTo method + */ - (void)connectToLast; + +/** publishes data on a given topic at a specified QoS level and retain flag + + @param data the data to be sent. length may range from 0 to 268,435,455 - 4 - _lengthof-topic_ bytes. Defaults to length 0. + @param topic the Topic to identify the data + @param retainFlag if YES, data is stored on the MQTT broker until overwritten by the next publish with retainFlag = YES + @param qos specifies the Quality of Service for the publish + qos can be 0, 1, or 2. + @return the Message Identifier of the PUBLISH message. Zero if qos 0. If qos 1 or 2, zero if message was dropped + @note returns immediately. + */ - (UInt16)sendData:(NSData *)data topic:(NSString *)topic qos:(MQTTQosLevel)qos retain:(BOOL)retainFlag; + +/** Disconnects gracefully from the MQTT broker + */ - (void)disconnect; @end diff --git a/MQTTClient/dist/MQTTClient.framework/Versions/A/MQTTClient b/MQTTClient/dist/MQTTClient.framework/Versions/A/MQTTClient index c6589c62..f2c211ad 100644 Binary files a/MQTTClient/dist/MQTTClient.framework/Versions/A/MQTTClient and b/MQTTClient/dist/MQTTClient.framework/Versions/A/MQTTClient differ diff --git a/MQTTClient/dist/documentation/html/Nodes.xml b/MQTTClient/dist/documentation/html/Nodes.xml index 7610124c..02026095 100644 --- a/MQTTClient/dist/documentation/html/Nodes.xml +++ b/MQTTClient/dist/documentation/html/Nodes.xml @@ -472,7 +472,7 @@ subscriptions interface_m_q_t_t_session_manager.html - aad73993729e0ec889972042e99449957 + a7a78a03d8bef2780209c38b6b42d399a @@ -485,6 +485,11 @@ protocol_m_q_t_t_session_manager_delegate-p.html aa607c1d6a9a1b2a9ea9a707706c393bb + + messageDelivered: + protocol_m_q_t_t_session_manager_delegate-p.html + ae58c6a8f7ac61d31c85a9ea311fbd57d + diff --git a/MQTTClient/dist/documentation/html/Tokens.xml b/MQTTClient/dist/documentation/html/Tokens.xml index 1f7646f3..dcc3c2ad 100644 --- a/MQTTClient/dist/documentation/html/Tokens.xml +++ b/MQTTClient/dist/documentation/html/Tokens.xml @@ -1171,7 +1171,7 @@ MQTTSessionManager interface_m_q_t_t_session_manager.html - aad73993729e0ec889972042e99449957 + a7a78a03d8bef2780209c38b6b42d399a @@ -1214,4 +1214,15 @@ aa607c1d6a9a1b2a9ea9a707706c393bb MQTTSessionManager.h + + + messageDelivered: + occ + intfm + MQTTSessionManagerDelegate-p + + protocol_m_q_t_t_session_manager_delegate-p.html + ae58c6a8f7ac61d31c85a9ea311fbd57d + MQTTSessionManager.h + diff --git a/MQTTClient/dist/documentation/html/_m_q_t_t_session_8h_source.html b/MQTTClient/dist/documentation/html/_m_q_t_t_session_8h_source.html index 08d7830f..04fdae01 100644 --- a/MQTTClient/dist/documentation/html/_m_q_t_t_session_8h_source.html +++ b/MQTTClient/dist/documentation/html/_m_q_t_t_session_8h_source.html @@ -398,7 +398,7 @@ diff --git a/MQTTClient/dist/documentation/html/_m_q_t_t_session_manager_8h_source.html b/MQTTClient/dist/documentation/html/_m_q_t_t_session_manager_8h_source.html index 2f54a9c5..f4660dd1 100644 --- a/MQTTClient/dist/documentation/html/_m_q_t_t_session_manager_8h_source.html +++ b/MQTTClient/dist/documentation/html/_m_q_t_t_session_manager_8h_source.html @@ -93,107 +93,112 @@
7 //
8 
9 #import <Foundation/Foundation.h>
-
10 #import <UIKit/UIKit.h>
-
11 
-
12 #import "MQTTSession.h"
-
13 
-
16 @protocol MQTTSessionManagerDelegate <NSObject>
-
17 
-
21 typedef NS_ENUM(int, MQTTSessionManagerState) {
-
22  MQTTSessionManagerStateStarting,
-
23  MQTTSessionManagerStateConnecting,
-
24  MQTTSessionManagerStateError,
-
25  MQTTSessionManagerStateConnected,
-
26  MQTTSessionManagerStateClosing,
-
27  MQTTSessionManagerStateClosed
-
28 };
-
29 
-
35 - (void)handleMessage:(NSData *)data onTopic:(NSString *)topic retained:(BOOL)retained;
-
36 @end
+
10 #ifndef TARGET_OS_MAC
+
11 #import <UIKit/UIKit.h>
+
12 #endif
+
13 #import "MQTTSession.h"
+
14 
+
17 @protocol MQTTSessionManagerDelegate <NSObject>
+
18 
+
22 typedef NS_ENUM(int, MQTTSessionManagerState) {
+
23  MQTTSessionManagerStateStarting,
+
24  MQTTSessionManagerStateConnecting,
+
25  MQTTSessionManagerStateError,
+
26  MQTTSessionManagerStateConnected,
+
27  MQTTSessionManagerStateClosing,
+
28  MQTTSessionManagerStateClosed
+
29 };
+
30 
+
36 - (void)handleMessage:(NSData *)data onTopic:(NSString *)topic retained:(BOOL)retained;
37 
-
40 @interface MQTTSessionManager : NSObject <MQTTSessionDelegate>
-
41 
-
44 @property (weak, nonatomic) id<MQTTSessionManagerDelegate> delegate;
-
45 
-
51 @property (strong, nonatomic) NSMutableDictionary *subscriptions;
-
52 
-
55 @property (nonatomic, readonly) MQTTSessionManagerState state;
-
56 
-
59 @property (nonatomic, readonly) NSError *lastErrorCode;
-
60 
-
69 - (MQTTSessionManager *)initWithPersistence:(BOOL)persistent
-
70  maxWindowSize:(NSUInteger)maxWindowSize
-
71  maxMessages:(NSUInteger)maxMessages
-
72  maxSize:(NSUInteger)maxSize;
-
73 
-
74 
-
75 
-
95 - (void)connectTo:(NSString *)host
-
96  port:(NSInteger)port
-
97  tls:(BOOL)tls
-
98  keepalive:(NSInteger)keepalive
-
99  clean:(BOOL)clean
-
100  auth:(BOOL)auth
-
101  user:(NSString *)user
-
102  pass:(NSString *)pass
-
103  will:(BOOL)will
-
104  willTopic:(NSString *)willTopic
-
105  willMsg:(NSData *)willMsg
-
106  willQos:(MQTTQosLevel)willQos
-
107  willRetainFlag:(BOOL)willRetainFlag
-
108  withClientId:(NSString *)clientId
-
109  securityPolicy:(MQTTSSLSecurityPolicy *)securityPolicy
-
110  certificates:(NSArray *)certificates;
-
111 
-
129 - (void)connectTo:(NSString *)host
-
130  port:(NSInteger)port
-
131  tls:(BOOL)tls
-
132  keepalive:(NSInteger)keepalive
-
133  clean:(BOOL)clean
-
134  auth:(BOOL)auth
-
135  user:(NSString *)user
-
136  pass:(NSString *)pass
-
137  will:(BOOL)will
-
138  willTopic:(NSString *)willTopic
-
139  willMsg:(NSData *)willMsg
-
140  willQos:(MQTTQosLevel)willQos
-
141  willRetainFlag:(BOOL)willRetainFlag
-
142  withClientId:(NSString *)clientId;
-
143 
-
160 - (void)connectTo:(NSString *)host
-
161  port:(NSInteger)port
-
162  tls:(BOOL)tls
-
163  keepalive:(NSInteger)keepalive
-
164  clean:(BOOL)clean
-
165  auth:(BOOL)auth
-
166  user:(NSString *)user
-
167  pass:(NSString *)pass
-
168  willTopic:(NSString *)willTopic
-
169  will:(NSData *)will
-
170  willQos:(MQTTQosLevel)willQos
-
171  willRetainFlag:(BOOL)willRetainFlag
-
172  withClientId:(NSString *)clientId;
-
173 
-
176 - (void)connectToLast;
-
177 
-
188 - (UInt16)sendData:(NSData *)data topic:(NSString *)topic qos:(MQTTQosLevel)qos retain:(BOOL)retainFlag;
-
189 
-
192 - (void)disconnect;
-
193 
-
194 @end
-
Definition: MQTTSessionManager.h:16
-
NSError * lastErrorCode
Definition: MQTTSessionManager.h:59
+
38 @optional
+
39 
+
44 - (void)messageDelivered:(UInt16)msgID;
+
45 @end
+
46 
+
49 @interface MQTTSessionManager : NSObject <MQTTSessionDelegate>
+
50 
+
53 @property (weak, nonatomic) id<MQTTSessionManagerDelegate> delegate;
+
54 
+
62 @property (strong, nonatomic) NSDictionary *subscriptions;
+
63 
+
66 @property (nonatomic, readonly) MQTTSessionManagerState state;
+
67 
+
70 @property (nonatomic, readonly) NSError *lastErrorCode;
+
71 
+
80 - (MQTTSessionManager *)initWithPersistence:(BOOL)persistent
+
81  maxWindowSize:(NSUInteger)maxWindowSize
+
82  maxMessages:(NSUInteger)maxMessages
+
83  maxSize:(NSUInteger)maxSize;
+
84 
+
85 
+
86 
+
106 - (void)connectTo:(NSString *)host
+
107  port:(NSInteger)port
+
108  tls:(BOOL)tls
+
109  keepalive:(NSInteger)keepalive
+
110  clean:(BOOL)clean
+
111  auth:(BOOL)auth
+
112  user:(NSString *)user
+
113  pass:(NSString *)pass
+
114  will:(BOOL)will
+
115  willTopic:(NSString *)willTopic
+
116  willMsg:(NSData *)willMsg
+
117  willQos:(MQTTQosLevel)willQos
+
118  willRetainFlag:(BOOL)willRetainFlag
+
119  withClientId:(NSString *)clientId
+
120  securityPolicy:(MQTTSSLSecurityPolicy *)securityPolicy
+
121  certificates:(NSArray *)certificates;
+
122 
+
140 - (void)connectTo:(NSString *)host
+
141  port:(NSInteger)port
+
142  tls:(BOOL)tls
+
143  keepalive:(NSInteger)keepalive
+
144  clean:(BOOL)clean
+
145  auth:(BOOL)auth
+
146  user:(NSString *)user
+
147  pass:(NSString *)pass
+
148  will:(BOOL)will
+
149  willTopic:(NSString *)willTopic
+
150  willMsg:(NSData *)willMsg
+
151  willQos:(MQTTQosLevel)willQos
+
152  willRetainFlag:(BOOL)willRetainFlag
+
153  withClientId:(NSString *)clientId;
+
154 
+
171 - (void)connectTo:(NSString *)host
+
172  port:(NSInteger)port
+
173  tls:(BOOL)tls
+
174  keepalive:(NSInteger)keepalive
+
175  clean:(BOOL)clean
+
176  auth:(BOOL)auth
+
177  user:(NSString *)user
+
178  pass:(NSString *)pass
+
179  willTopic:(NSString *)willTopic
+
180  will:(NSData *)will
+
181  willQos:(MQTTQosLevel)willQos
+
182  willRetainFlag:(BOOL)willRetainFlag
+
183  withClientId:(NSString *)clientId;
+
184 
+
187 - (void)connectToLast;
+
188 
+
199 - (UInt16)sendData:(NSData *)data topic:(NSString *)topic qos:(MQTTQosLevel)qos retain:(BOOL)retainFlag;
+
200 
+
203 - (void)disconnect;
+
204 
+
205 @end
+
Definition: MQTTSessionManager.h:17
+
NSDictionary * subscriptions
Definition: MQTTSessionManager.h:62
+
NSError * lastErrorCode
Definition: MQTTSessionManager.h:70
-
Definition: MQTTSessionManager.h:40
+
Definition: MQTTSessionManager.h:49
Definition: MQTTSession.h:32
-
NSMutableDictionary * subscriptions
Definition: MQTTSessionManager.h:51
-
id< MQTTSessionManagerDelegate > delegate
Definition: MQTTSessionManager.h:44
+
id< MQTTSessionManagerDelegate > delegate
Definition: MQTTSessionManager.h:53
-
MQTTSessionManagerState state
Definition: MQTTSessionManager.h:55
+
MQTTSessionManagerState state
Definition: MQTTSessionManager.h:66
diff --git a/MQTTClient/dist/documentation/html/annotated.html b/MQTTClient/dist/documentation/html/annotated.html index 3f806eb0..1d83570b 100644 --- a/MQTTClient/dist/documentation/html/annotated.html +++ b/MQTTClient/dist/documentation/html/annotated.html @@ -98,7 +98,7 @@ diff --git a/MQTTClient/dist/documentation/html/class_m_q_t_t_session-members.html b/MQTTClient/dist/documentation/html/class_m_q_t_t_session-members.html index de44065d..29d839f3 100644 --- a/MQTTClient/dist/documentation/html/class_m_q_t_t_session-members.html +++ b/MQTTClient/dist/documentation/html/class_m_q_t_t_session-members.html @@ -154,7 +154,7 @@ diff --git a/MQTTClient/dist/documentation/html/class_m_q_t_t_session_manager-members.html b/MQTTClient/dist/documentation/html/class_m_q_t_t_session_manager-members.html index f52f3ece..e737512f 100644 --- a/MQTTClient/dist/documentation/html/class_m_q_t_t_session_manager-members.html +++ b/MQTTClient/dist/documentation/html/class_m_q_t_t_session_manager-members.html @@ -117,12 +117,12 @@ - session:newMessage:onTopic:<MQTTSessionDelegate> stateMQTTSessionManagersubAckReceived:msgID:grantedQoss:<MQTTSessionDelegate> - subscriptionsMQTTSessionManager + subscriptionsMQTTSessionManagerunsubAckReceived:msgID:<MQTTSessionDelegate> diff --git a/MQTTClient/dist/documentation/html/classes.html b/MQTTClient/dist/documentation/html/classes.html index af06fb9f..7329b432 100644 --- a/MQTTClient/dist/documentation/html/classes.html +++ b/MQTTClient/dist/documentation/html/classes.html @@ -99,7 +99,7 @@ diff --git a/MQTTClient/dist/documentation/html/files.html b/MQTTClient/dist/documentation/html/files.html index cdbaf202..abc2bafb 100644 --- a/MQTTClient/dist/documentation/html/files.html +++ b/MQTTClient/dist/documentation/html/files.html @@ -93,7 +93,7 @@ diff --git a/MQTTClient/dist/documentation/html/functions.html b/MQTTClient/dist/documentation/html/functions.html index 359af5fe..4b43e7e0 100644 --- a/MQTTClient/dist/documentation/html/functions.html +++ b/MQTTClient/dist/documentation/html/functions.html @@ -275,6 +275,9 @@

- l -

    - m -

      +
    • messageDelivered: +: <MQTTSessionManagerDelegate> +
    • messageDelivered:msgID: : <MQTTSessionDelegate>
    • @@ -391,7 +394,7 @@

      - s -

      @@ -438,7 +441,7 @@

      - w -

        diff --git a/MQTTClient/dist/documentation/html/functions_func.html b/MQTTClient/dist/documentation/html/functions_func.html index d2b1bae4..b03f3342 100644 --- a/MQTTClient/dist/documentation/html/functions_func.html +++ b/MQTTClient/dist/documentation/html/functions_func.html @@ -239,6 +239,9 @@

        - i -

          - m -

            +
          • messageDelivered: +: <MQTTSessionManagerDelegate> +
          • messageDelivered:msgID: : <MQTTSessionDelegate>
          • @@ -350,7 +353,7 @@

            - u -

              diff --git a/MQTTClient/dist/documentation/html/functions_prop.html b/MQTTClient/dist/documentation/html/functions_prop.html index 0bd81276..66ff3c4e 100644 --- a/MQTTClient/dist/documentation/html/functions_prop.html +++ b/MQTTClient/dist/documentation/html/functions_prop.html @@ -144,7 +144,7 @@ : MQTTSession
            • subscriptions -: MQTTSessionManager +: MQTTSessionManager
            • userName : MQTTSession @@ -168,7 +168,7 @@ diff --git a/MQTTClient/dist/documentation/html/hierarchy.html b/MQTTClient/dist/documentation/html/hierarchy.html index 0fa82612..ecd00d5f 100644 --- a/MQTTClient/dist/documentation/html/hierarchy.html +++ b/MQTTClient/dist/documentation/html/hierarchy.html @@ -100,7 +100,7 @@ diff --git a/MQTTClient/dist/documentation/html/index.html b/MQTTClient/dist/documentation/html/index.html index 03c5f6d9..741615f8 100644 --- a/MQTTClient/dist/documentation/html/index.html +++ b/MQTTClient/dist/documentation/html/index.html @@ -131,7 +131,7 @@

              Comparison MQTT Clients for iOS (incomplete)

              diff --git a/MQTTClient/dist/documentation/html/interface_m_q_t_t_session.html b/MQTTClient/dist/documentation/html/interface_m_q_t_t_session.html index 72e36a63..3f8f562e 100644 --- a/MQTTClient/dist/documentation/html/interface_m_q_t_t_session.html +++ b/MQTTClient/dist/documentation/html/interface_m_q_t_t_session.html @@ -2711,7 +2711,7 @@

              Property Documentation

              diff --git a/MQTTClient/dist/documentation/html/interface_m_q_t_t_session_manager.html b/MQTTClient/dist/documentation/html/interface_m_q_t_t_session_manager.html index 2db62315..3da0de8a 100644 --- a/MQTTClient/dist/documentation/html/interface_m_q_t_t_session_manager.html +++ b/MQTTClient/dist/documentation/html/interface_m_q_t_t_session_manager.html @@ -161,8 +161,8 @@ Properties id< MQTTSessionManagerDelegatedelegate   -NSMutableDictionary * subscriptions -  +NSDictionary * subscriptions +  MQTTSessionManagerState state   NSError * lastErrorCode @@ -723,7 +723,7 @@

              Property Documentation

              - +
              @@ -731,7 +731,7 @@

              Property Documentation

              @@ -740,7 +740,7 @@

              Property Documentation

              - +
              - (NSMutableDictionary*) subscriptions- (NSDictionary*) subscriptions
              -

              subscriptions as a dictionary of NSNumber instances indicating the MQTTQoSLevel. The keys are topic filters. The SessionManager subscribes to the given subscriptions after successfull (re-)connect according to the cleansession parameter and the state of the session as indicated by the broker.

              +

              subscriptions as a dictionary of NSNumber instances indicating the MQTTQoSLevel. The keys are topic filters. The SessionManager subscribes to the given subscriptions after successfull (re-)connect according to the cleansession parameter and the state of the session as indicated by the broker. Setting a new subscriptions dictionary initiates SUBSCRIBE or UNSUBSCRIBE messages by SessionManager by comparing the old and new subscriptions.

              @@ -750,7 +750,7 @@

              Property Documentation

              diff --git a/MQTTClient/dist/documentation/html/protocol_m_q_t_t_session_delegate-p-members.html b/MQTTClient/dist/documentation/html/protocol_m_q_t_t_session_delegate-p-members.html index c1c0f3c2..ba7297c8 100644 --- a/MQTTClient/dist/documentation/html/protocol_m_q_t_t_session_delegate-p-members.html +++ b/MQTTClient/dist/documentation/html/protocol_m_q_t_t_session_delegate-p-members.html @@ -111,7 +111,7 @@ diff --git a/MQTTClient/dist/documentation/html/protocol_m_q_t_t_session_delegate-p.html b/MQTTClient/dist/documentation/html/protocol_m_q_t_t_session_delegate-p.html index 9f8622af..a91cac60 100644 --- a/MQTTClient/dist/documentation/html/protocol_m_q_t_t_session_delegate-p.html +++ b/MQTTClient/dist/documentation/html/protocol_m_q_t_t_session_delegate-p.html @@ -1043,7 +1043,7 @@ diff --git a/MQTTClient/dist/documentation/html/protocol_m_q_t_t_session_manager_delegate-p-members.html b/MQTTClient/dist/documentation/html/protocol_m_q_t_t_session_manager_delegate-p-members.html index 762a808e..2cd82fef 100644 --- a/MQTTClient/dist/documentation/html/protocol_m_q_t_t_session_manager_delegate-p-members.html +++ b/MQTTClient/dist/documentation/html/protocol_m_q_t_t_session_manager_delegate-p-members.html @@ -91,10 +91,11 @@

              This is the complete list of members for <MQTTSessionManagerDelegate>, including all inherited members.

              +
              handleMessage:onTopic:retained:<MQTTSessionManagerDelegate>
              messageDelivered:<MQTTSessionManagerDelegate>
              diff --git a/MQTTClient/dist/documentation/html/protocol_m_q_t_t_session_manager_delegate-p.html b/MQTTClient/dist/documentation/html/protocol_m_q_t_t_session_manager_delegate-p.html index 8dcc5833..77258bda 100644 --- a/MQTTClient/dist/documentation/html/protocol_m_q_t_t_session_manager_delegate-p.html +++ b/MQTTClient/dist/documentation/html/protocol_m_q_t_t_session_manager_delegate-p.html @@ -105,6 +105,8 @@ Instance Methods (void) - handleMessage:onTopic:retained:   +(void) - messageDelivered:

              Detailed Description

              delegate gives your application access to received messages

              @@ -147,6 +149,37 @@ +
              + + +
              +
              + + + + + +
              + + + + + + + + +
              - (void) messageDelivered: (UInt16) msgID
              +
              +optional
              +
              +

              gets called when a published message was actually delivered

              Parameters
              + + +
              msgIDthe Message Identifier of the delivered message
              +
              +
              +
              Note
              this method is called after a publish with qos 1 or 2 only
              +

              The documentation for this protocol was generated from the following file:
                @@ -155,7 +188,7 @@ diff --git a/MQTTClient/dist/documentation/html/search/all_7.js b/MQTTClient/dist/documentation/html/search/all_7.js index 7e12cca3..c2c69b9b 100644 --- a/MQTTClient/dist/documentation/html/search/all_7.js +++ b/MQTTClient/dist/documentation/html/search/all_7.js @@ -1,5 +1,6 @@ var searchData= [ + ['messagedelivered_3a',['messageDelivered:',['../protocol_m_q_t_t_session_manager_delegate-p.html#ae58c6a8f7ac61d31c85a9ea311fbd57d',1,'MQTTSessionManagerDelegate-p']]], ['messagedelivered_3amsgid_3a',['messageDelivered:msgID:',['../protocol_m_q_t_t_session_delegate-p.html#a9937e5c9917389b2fde60b1e3a2d390c',1,'MQTTSessionDelegate-p']]], ['messagehandler',['messageHandler',['../interface_m_q_t_t_session.html#a0af8d5512fae0ed59e572e9566ac9940',1,'MQTTSession']]], ['mqttsession',['MQTTSession',['../interface_m_q_t_t_session.html',1,'']]], diff --git a/MQTTClient/dist/documentation/html/search/all_b.js b/MQTTClient/dist/documentation/html/search/all_b.js index f57e3091..d1a578a3 100644 --- a/MQTTClient/dist/documentation/html/search/all_b.js +++ b/MQTTClient/dist/documentation/html/search/all_b.js @@ -13,5 +13,5 @@ var searchData= ['subscribetopic_3a',['subscribeTopic:',['../interface_m_q_t_t_session.html#af3bb097c036b9441ce48adff45917322',1,'MQTTSession']]], ['subscribetotopic_3aatlevel_3a',['subscribeToTopic:atLevel:',['../interface_m_q_t_t_session.html#ace91fa3ca0b5eb08a2a48706c840dab3',1,'MQTTSession']]], ['subscribetotopics_3a',['subscribeToTopics:',['../interface_m_q_t_t_session.html#aba1debfec65602b53c6e4b9c3bdf4af1',1,'MQTTSession']]], - ['subscriptions',['subscriptions',['../interface_m_q_t_t_session_manager.html#aad73993729e0ec889972042e99449957',1,'MQTTSessionManager']]] + ['subscriptions',['subscriptions',['../interface_m_q_t_t_session_manager.html#a7a78a03d8bef2780209c38b6b42d399a',1,'MQTTSessionManager']]] ]; diff --git a/MQTTClient/dist/documentation/html/search/functions_5.js b/MQTTClient/dist/documentation/html/search/functions_5.js index c3fd1833..7f9b5720 100644 --- a/MQTTClient/dist/documentation/html/search/functions_5.js +++ b/MQTTClient/dist/documentation/html/search/functions_5.js @@ -1,4 +1,5 @@ var searchData= [ + ['messagedelivered_3a',['messageDelivered:',['../protocol_m_q_t_t_session_manager_delegate-p.html#ae58c6a8f7ac61d31c85a9ea311fbd57d',1,'MQTTSessionManagerDelegate-p']]], ['messagedelivered_3amsgid_3a',['messageDelivered:msgID:',['../protocol_m_q_t_t_session_delegate-p.html#a9937e5c9917389b2fde60b1e3a2d390c',1,'MQTTSessionDelegate-p']]] ]; diff --git a/MQTTClient/dist/documentation/html/search/properties_7.js b/MQTTClient/dist/documentation/html/search/properties_7.js index 1d19f53c..79473363 100644 --- a/MQTTClient/dist/documentation/html/search/properties_7.js +++ b/MQTTClient/dist/documentation/html/search/properties_7.js @@ -3,5 +3,5 @@ var searchData= ['securitypolicy',['securityPolicy',['../interface_m_q_t_t_session.html#a74f593a2857ccf22a5073a71a408e465',1,'MQTTSession']]], ['state',['state',['../interface_m_q_t_t_session_manager.html#a4caf1f5fe21b8d36700d97b68b3bf978',1,'MQTTSessionManager']]], ['status',['status',['../interface_m_q_t_t_session.html#adff1474fe186b8af3bb4cac1ccd4ff2d',1,'MQTTSession']]], - ['subscriptions',['subscriptions',['../interface_m_q_t_t_session_manager.html#aad73993729e0ec889972042e99449957',1,'MQTTSessionManager']]] + ['subscriptions',['subscriptions',['../interface_m_q_t_t_session_manager.html#a7a78a03d8bef2780209c38b6b42d399a',1,'MQTTSessionManager']]] ];