AWSIoTDataManager
Objective-C
@interface AWSIoTDataManager : AWSService
/**
The service configuration used to instantiate this service client.
@warning Once the client is instantiated, do not modify the configuration object. It may cause unspecified behaviors.
*/
@property (nonatomic, strong, readonly) AWSServiceConfiguration *configuration;
/**
The MQTT configuration used by this service client. Any changes to this configuration object
will take effect upon the next invocation of either the connectWithClientId or connectUsingWebSocketWithClientId
methods.
*/
@property (nonatomic, strong, readonly) AWSIoTMQTTConfiguration *mqttConfiguration;
/**
Returns the singleton service client. If the singleton object does not exist, the SDK instantiates the default service client with `defaultServiceConfiguration` from `[AWSServiceManager defaultServiceManager]`. The reference to this object is maintained by the SDK, and you do not need to retain it manually.
For example, set the default service configuration in `- application:didFinishLaunchingWithOptions:`
*Swift*
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
let credentialProvider = AWSCognitoCredentialsProvider(regionType: .USEast1, identityPoolId: "YourIdentityPoolId")
let configuration = AWSServiceConfiguration(region: .USEast1, credentialsProvider: credentialProvider)
AWSServiceManager.default().defaultServiceConfiguration = configuration
return true
}
*Objective-C*
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
AWSCognitoCredentialsProvider *credentialsProvider = [[AWSCognitoCredentialsProvider alloc] initWithRegionType:AWSRegionUSEast1
identityPoolId:@"YourIdentityPoolId"];
AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUSEast1
credentialsProvider:credentialsProvider];
[AWSServiceManager defaultServiceManager].defaultServiceConfiguration = configuration;
return YES;
}
Then call the following to get the default service client:
*Swift*
let IoTDataManager = AWSIoTDataManager.default()
*Objective-C*
AWSIoTDataManager *IoTDataManager = [AWSIoTDataManager defaultIoTDataManager];
@return The default service client.
*/
+ (instancetype)defaultIoTDataManager __attribute__ ((deprecated("Use `registerIoTDataManagerWithConfiguration:forKey:` with the custom endpoint to initialize AWSIoTDataManager")));
/**
Creates a service client with the given service configuration and registers it for the key.
For example, set the default service configuration in `- application:didFinishLaunchingWithOptions:`
*Swift*
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
let credentialProvider = AWSCognitoCredentialsProvider(regionType: .USEast1, identityPoolId: "YourIdentityPoolId")
let configuration = AWSServiceConfiguration(region: .USWest2, credentialsProvider: credentialProvider)
AWSIoTDataManager.register(with: configuration!, forKey: "USWest2IoTDataManager")
return true
}
*Objective-C*
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
AWSCognitoCredentialsProvider *credentialsProvider = [[AWSCognitoCredentialsProvider alloc] initWithRegionType:AWSRegionUSEast1
identityPoolId:@"YourIdentityPoolId"];
AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUSWest2
credentialsProvider:credentialsProvider];
[AWSIoTDataManager registerIoTDataManagerWithConfiguration:configuration forKey:@"USWest2IoTDataManager"];
return YES;
}
Then call the following to get the service client:
*Swift*
let IoTDataManager = AWSIoTDataManager(forKey: "USWest2IoTDataManager")
*Objective-C*
AWSIoTDataManager *IoTDataManager = [AWSIoTDataManager IoTDataManagerForKey:@"USWest2IoTDataManager"];
@warning After calling this method, do not modify the configuration object. It may cause unspecified behaviors.
@param configuration A service configuration object.
@param key A string to identify the service client.
*/
+ (void)registerIoTDataManagerWithConfiguration:(AWSServiceConfiguration *)configuration forKey:(NSString *)key;
/**
Creates a service client with the given service configuration and
AWSIoTMQTTConfiguration and registers it for the key.
For example:
*Swift*
let credentialProvider = AWSCognitoCredentialsProvider(regionType: .USEast1, identityPoolId: "YourIdentityPoolId")
let configuration = AWSServiceConfiguration(region: .USWest2, credentialsProvider: credentialProvider)
let mqttConfig = AWSIoTMQTTConfiguration(keepAliveTimeInterval: 60.0,
baseReconnectTimeInterval: 1.0,
minimumConnectionTimeInterval: 20.0,
maximumReconnectTimeInterval: 128.0,
runLoop: RunLoop.current,
runLoopMode: RunLoopMode.defaultRunLoopMode.rawValue,
autoResubscribe: true,
lastWillAndTestament: AWSIoTMQTTLastWillAndTestament() )
AWSIoTDataManager.register(with: configuration!, with: mqttConfig!, forKey: "USWest2IoTDataManager")
*Objective-C*
AWSCognitoCredentialsProvider *credentialsProvider =
[ [AWSCognitoCredentialsProvider alloc] initWithRegionType:AWSRegionUSEast1
identityPoolId:@"YourIdentityPoolId"];
AWSServiceConfiguration *configuration =
[ [AWSServiceConfiguration alloc] initWithRegion:AWSRegionUSWest2
credentialsProvider:credentialsProvider];
AWSIoTMQTTConfiguration *mqttConfig =
[ [AWSIoTMQTTConfiguration alloc] initWithKeepAliveTimeInterval:60.0
baseReconnectTimeInterval:1.0
minimumConnectionTimeInterval:20.0
maximumReconnectTimeInterval:128.0
runLoop:[NSRunLoop currentRunLoop]
runLoopMode:NSDefaultRunLoopMode
autoResubscribe:YES
lastWillAndTestament:[AWSIoTMQTTLastWillAndTestament new] ];
[AWSIoTDataManager registerIoTDataManagerWithConfiguration:configuration
withMQTTConfiguration:mqttConfig
forKey:@"USWest2IoTDataManager"];
Then call the following to get the service client:
*Swift*
let IoTDataManager = AWSIoTDataManager(forKey: "USWest2IoTDataManager")
*Objective-C*
AWSIoTDataManager *IoTDataManager = [AWSIoTDataManager IoTDataManagerForKey:@"USWest2IoTDataManager"];
@warning After calling this method, do not modify the configuration object. It may cause unspecified behaviors.
@param configuration A service configuration object.
@param mqttConfig A AWSIoTMQTTConfiguration object.
@param key A string to identify the service client.
*/
+ (void)registerIoTDataManagerWithConfiguration:(AWSServiceConfiguration *)configuration
withMQTTConfiguration:(AWSIoTMQTTConfiguration *)mqttConfig
forKey:(NSString *)key;
/**
Retrieves the service client associated with the key. You need to call `+ registerIoTDataManagerWithConfiguration:forKey:` before invoking this method.
For example, set the default service configuration in `- application:didFinishLaunchingWithOptions:`
*Swift*
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
let credentialProvider = AWSCognitoCredentialsProvider(regionType: .USEast1, identityPoolId: "YourIdentityPoolId")
let configuration = AWSServiceConfiguration(region: .USWest2, credentialsProvider: credentialProvider)
AWSIoTDataManager.register(with: configuration!, forKey: "USWest2IoTDataManager")
return true
}
*Objective-C*
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
AWSCognitoCredentialsProvider *credentialsProvider = [[AWSCognitoCredentialsProvider alloc] initWithRegionType:AWSRegionUSEast1
identityPoolId:@"YourIdentityPoolId"];
AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUSWest2
credentialsProvider:credentialsProvider];
[AWSIoTDataManager registerIoTDataManagerWithConfiguration:configuration forKey:@"USWest2IoTDataManager"];
return YES;
}
Then call the following to get the service client:
*Swift*
let IoTDataManager = AWSIoTDataManager(forKey: "USWest2IoTDataManager")
*Objective-C*
AWSIoTDataManager *IoTDataManager = [AWSIoTDataManager IoTDataManagerForKey:@"USWest2IoTDataManager"];
@param key A string to identify the service client.
@return An instance of the service client.
*/
+ (instancetype)IoTDataManagerForKey:(NSString *)key;
/**
Removes the service client associated with the key and release it.
@warning Before calling this method, make sure no method is running on this client.
@param key A string to identify the service client.
*/
+ (void)removeIoTDataManagerForKey:(NSString *)key;
/**
Enable or disable sending SDK name and version in the Mqtt Connect message. Enabled by default.
Must be called before calling connect.
*/
- (void)enableMetricsCollection:(BOOL)enabled;
/**
@deprecated This method is deprecated and will be deleted in the next minor version. Please use `updateUserMetaData` instead.
Set user-specified dictionary of the additional values to be passed as components of
connection username.
*Swift*
let userMetaData: [String: String] = ["AFRSDK": "ios", "AFRSDKVersion": "1.0.0", "AFRLibVersion":"1.4.1"]
iotDataManager.addUserMetaData(userMetaData)
@param userMetaData A dictionary of key-value metadata pairs to be appended to the connection username
*/
- (void)addUserMetaData:(NSDictionary<NSString *, NSString *> *)userMetaData
DEPRECATED_MSG_ATTRIBUTE("Use `updateUserMetaData` for updating the user meta data");
/**
Set user-specified dictionary of the additional values to be passed as components of
connection username.
*Swift*
let userMetaData: [String: String] = ["AFRSDK": "ios", "AFRSDKVersion": "1.0.0", "AFRLibVersion":"1.4.1"]
iotDataManager.addUserMetaData(userMetaData)
@param userMetaData A dictionary of key-value metadata pairs to be appended to the connection username
*/
- (void)updateUserMetaData:(NSDictionary<NSString *, NSString *> *)userMetaData;
/**
Initialises the MQTT session and connects to AWS IoT using certificate-based mutual authentication
@return true if initialise finished with success
@param clientId The Client Identifier identifies the Client to the Server.
@param cleanSession specifies if the server should discard previous session information.
@param certificateId contains the ID of the certificate to use in the connection; must be in the keychain
@param callback When new mqtt session status is received callback will be called with new connection status.
*/
- (BOOL)connectWithClientId:(NSString *)clientId
cleanSession:(BOOL)cleanSession
certificateId:(NSString *)certificateId
statusCallback:(void (^)(AWSIoTMQTTStatus status))callback;
/**
Initialises the MQTT session and connects to AWS IoT on port 443 using certificate-based mutual authentication
and ALPN (Application Layer Protocol Negotiation)
@return true if initialise finished with success
@param clientId The Client Identifier identifies the Client to the Server.
@param cleanSession specifies if the server should discard previous session information.
@param certificateId contains the ID of the certificate to use in the connection; must be in the keychain
@param callback When new mqtt session status is received callback will be called with new connection status.
*/
- (BOOL)connectUsingALPNWithClientId:(NSString *)clientId
cleanSession:(BOOL)cleanSession
certificateId:(NSString *)certificateId
statusCallback:(void (^)(AWSIoTMQTTStatus status))callback
API_AVAILABLE(ios(11), macosx(10.13));
/**
Initialises the MQTT session and connects to AWS IoT using WebSocket/SigV4 authentication. IAM
credentials are taken from the current service configuration.
@return true if initialise finished with success
@param clientId The Client Identifier identifies the Client to the Server.
@param cleanSession specifies if the server should discard previous session information.
@param callback When new mqtt session status is received the callback will be called with new connection status.
*/
- (BOOL)connectUsingWebSocketWithClientId:(NSString *)clientId
cleanSession:(BOOL)cleanSession
statusCallback:(void (^)(AWSIoTMQTTStatus status))callback;
/**
Initialises the MQTT session and connects to AWS IoT using WebSocket/CustomAuthorizer mechanism.
@param clientId The Client Identifier identifies the Client to the Server.
@param cleanSession specifies if the server should discard previous session information.
@param customAuthorizerName Name of the AWS IoT custom authorizer.
@param tokenKeyName This specifies the key name that your device chooses, which indicates the token in the
custom authorization HTTP request header.
@param tokenValue This specifies the custom authorization token to authorize the request to the AWS IoT gateway.
@param tokenSignature This specifies the token signature for the custom authorizer to validate the tokenValue.
@param callback When new mqtt session status is received the callback will be called with new connection status.
@return true if initialise finished with success.
*/
- (BOOL)connectUsingWebSocketWithClientId:(NSString *)clientId
cleanSession:(BOOL)cleanSession
customAuthorizerName:(NSString *)customAuthorizerName
tokenKeyName:(NSString *)tokenKeyName
tokenValue:(NSString *)tokenValue
tokenSignature:(NSString *)tokenSignature
statusCallback:(void (^)(AWSIoTMQTTStatus status))callback;
/**
Disconnect from a mqtt client (close current mqtt session)
*/
- (void)disconnect;
/**
Get the current connection status
@return AWSIoTMQTTStatus
*/
- (AWSIoTMQTTStatus)getConnectionStatus;
/**
Send MQTT message to specified topic
@param string The message (As NSString object) to be sent.
@param qos The QoS value to use when publishing (optional, default AWSIoTMQTTQoSAtMostOnce).
@param topic The topic for publish to.
@return Boolean value indicating success or failure.
*/
- (BOOL) publishString:(NSString *)string
onTopic:(NSString *)topic
QoS:(AWSIoTMQTTQoS)qos;
/**
Send MQTT message to specified topic
@param string The message (As NSString object) to be sent.
@param qos The QoS value to use when publishing (optional, default AWSIoTMQTTQoSAtMostOnce).
@param topic The topic for publish to.
@param ackCallback the callback for ack if QoS > 0.
@return Boolean value indicating success or failure.
*/
- (BOOL)publishString:(NSString *)string
onTopic:(NSString *)topic
QoS:(AWSIoTMQTTQoS)qos
ackCallback:(nullable AWSIoTMQTTAckBlock)ackCallback;
/**
Send MQTT message to specified topic
@param data The message (As NSData) to be sent.
@param qos The QoS value to use when publishing (optional, default AWSIoTMQTTQoSAtMostOnce).
@param topic The topic for publish to.
@return Boolean value indicating success or failure.
*/
- (BOOL)publishData:(NSData *)data
onTopic:(NSString *)topic
QoS:(AWSIoTMQTTQoS)qos;
/**
Send MQTT message to specified topic
@param data The message (As NSData) to be sent.
@param topic The topic for publish to.
@param qos The QoS value to use when publishing (optional, default AWSIoTMQTTQoSAtMostOnce).
@param ackCallback the callback for ack if QoS > 0.
@return Boolean value indicating success or failure.
*/
- (BOOL)publishData:(NSData *)data
onTopic:(NSString *)topic
QoS:(AWSIoTMQTTQoS)qos
ackCallback:(nullable AWSIoTMQTTAckBlock)ackCallback;
/**
Send MQTT message to specified topic
@param data The message (As NSData) to be sent.
@param topic The topic for publish to.
@param qos The QoS value to use when publishing (optional, default AWSIoTMQTTQoSAtMostOnce).
@param retain The retain message flag.
@param ackCallback the callback for ack if QoS > 0.
@return Boolean value indicating success or failure.
*/
- (BOOL)publishData:(NSData *)data
onTopic:(NSString *)topic
QoS:(AWSIoTMQTTQoS)qos
retain:(BOOL)retain
ackCallback:(nullable AWSIoTMQTTAckBlock)ackCallback;
/**
Subscribes to a topic at a specific QoS level
@param topic The Topic to subscribe to.
@param qos Specifies the QoS Level of the subscription: AWSIoTMQTTQoSAtMostOnce or AWSIoTMQTTQoSAtLeastOnce
@param callback Reference to AWSIOTMQTTNewMessageBlock. When new message is received the callback will be invoked.
@return Boolean value indicating success or failure.
*/
- (BOOL) subscribeToTopic:(NSString *)topic
QoS:(AWSIoTMQTTQoS)qos
messageCallback:(AWSIoTMQTTNewMessageBlock)callback;
/**
Subscribes to a topic at a specific QoS level
@param topic The Topic to subscribe to.
@param qos Specifies the QoS Level of the subscription: AWSIoTMQTTQoSAtMostOnce or AWSIoTMQTTQoSAtLeastOnce
@param callback Reference to AWSIOTMQTTNewMessageBlock. When new message is received the callback will be invoked.
@param ackCallback the callback for ack if QoS > 0.
@return Boolean value indicating success or failure.
*/
- (BOOL)subscribeToTopic:(NSString *)topic
QoS:(AWSIoTMQTTQoS)qos
messageCallback:(AWSIoTMQTTNewMessageBlock)callback
ackCallback:(nullable AWSIoTMQTTAckBlock)ackCallback;
/**
Subscribes to a topic at a specific QoS level
@param topic The Topic to subscribe to.
@param qos Specifies the QoS Level of the subscription: AWSIoTMQTTQoSAtMostOnce or AWSIoTMQTTQoSAtLeastOnce
@param callback Reference to AWSIOTMQTTExtendedNewMessageBlock. When new message is received the callback will be invoked.
@return Boolean value indicating success or failure.
*/
- (BOOL) subscribeToTopic:(NSString *)topic
QoS:(AWSIoTMQTTQoS)qos
extendedCallback:(AWSIoTMQTTExtendedNewMessageBlock)callback;
/**
Subscribes to a topic at a specific QoS level
@param topic The Topic to subscribe to.
@param qos Specifies the QoS Level of the subscription: AWSIoTMQTTQoSAtMostOnce or AWSIoTMQTTQoSAtLeastOnce
@param callback Reference to AWSIOTMQTTExtendedNewMessageBlock. When new message is received the callback will be invoked.
@param ackCallback the callback for ack if QoS > 0.
@return Boolean value indicating success or failure.
*/
- (BOOL)subscribeToTopic:(NSString *)topic
QoS:(AWSIoTMQTTQoS)qos
extendedCallback:(AWSIoTMQTTExtendedNewMessageBlock)callback
ackCallback:(nullable AWSIoTMQTTAckBlock)ackCallback;
/**
Subscribes to a topic at a specific QoS level
@param topic The Topic to subscribe to.
@param qos Specifies the QoS Level of the subscription: AWSIoTMQTTQoSAtMostOnce or AWSIoTMQTTQoSAtLeastOnce
@param callback Reference to AWSIoTMQTTFullMessageBlock. When new message is received the callback will be invoked.
@return Boolean value indicating success or failure.
*/
- (BOOL)subscribeToTopic:(NSString *)topic
QoS:(AWSIoTMQTTQoS)qos
fullCallback:(AWSIoTMQTTFullMessageBlock)callback;
/**
Subscribes to a topic at a specific QoS level
@param topic The Topic to subscribe to.
@param qos Specifies the QoS Level of the subscription: AWSIoTMQTTQoSAtMostOnce or AWSIoTMQTTQoSAtLeastOnce
@param callback Reference to AWSIoTMQTTFullMessageBlock. When new message is received the callback will be invoked.
@param ackCallback the callback for ack if QoS > 0.
@return Boolean value indicating success or failure.
*/
- (BOOL)subscribeToTopic:(NSString *)topic
QoS:(AWSIoTMQTTQoS)qos
fullCallback:(AWSIoTMQTTFullMessageBlock)callback
ackCallback:(nullable AWSIoTMQTTAckBlock)ackCallback;
/**
Unsubscribes from a topic
@param topic The Topic to unsubscribe from.
*/
- (void)unsubscribeTopic:(NSString *)topic;
typedef NS_ENUM(NSInteger, AWSIoTShadowOperationType) {
//
// NOTE: the first 4 values in this enum may not be re-ordered.
// It must align with the same order in AWSIoTShadowOperationTypeStrings
// An internal array in the implementation depends on their
// values and order.
//
AWSIoTShadowOperationTypeUpdate,
AWSIoTShadowOperationTypeGet,
AWSIoTShadowOperationTypeDelete,
AWSIoTShadowOperationTypeCount, // Internal class use only
AWSIoTShadowOperationTypeNone // Internal class use only
};
typedef NS_ENUM(NSInteger, AWSIoTShadowOperationStatusType) {
//
// NOTE: the first 5 values in this enum may not be re-ordered.
// It must align with the same order in AWSIoTShadowOperationStatusTypeStrings
// An internal array in the implementation depends on their
// values and order.
//
AWSIoTShadowOperationStatusTypeAccepted,
AWSIoTShadowOperationStatusTypeRejected,
AWSIoTShadowOperationStatusTypeDelta,
AWSIoTShadowOperationStatusTypeDocuments,
AWSIoTShadowOperationStatusTypeCount, // Internal class use only
AWSIoTShadowOperationStatusTypeForeignUpdate,
AWSIoTShadowOperationStatusTypeTimeout
};
/**
Register for updates on a device shadow
@param name The device shadow to register for updates on.
@param options A dictionary with device shadow registration options. The options are:
enableDebugging: BOOL, set to YES to enable additional console debugging (default NO)
enableVersioning: BOOL, set to NO to disable versioning (default YES)
enableForeignStateUpdateNotifications: BOOL, set to YES to enable foreign state updates (default NO)
enableStaleDiscards: BOOL, set to NO to disable discarding stale updates (default YES)
enableIgnoreDeltas: BOOL, set to YES to disable delta updates (default NO)
QoS: AWSIoTMQTTQoS (default AWSIoTMQTTQoSMessageDeliveryAttemptedAtMostOnce)
shadowOperationTimeoutSeconds: double, device shadow operation timeout (default 10.0)
@param callback The function to call when updates are received for the device shadow.
@return Boolean value indicating success or failure.
*/
- (BOOL) registerWithShadow:(NSString *)name
options:(NSDictionary<NSString *, NSNumber *> * _Nullable)options
eventCallback:(void(^)(NSString *name, AWSIoTShadowOperationType operation, AWSIoTShadowOperationStatusType status, NSString *clientToken, NSData *payload))callback;
/**
Register for updates on a device shadow
@param name The device shadow to register for updates on.
@param options A dictionary with device shadow registration options. The options are:
enableDebugging: BOOL, set to YES to enable additional console debugging (default NO)
enableVersioning: BOOL, set to NO to disable versioning (default YES)
enableForeignStateUpdateNotifications: BOOL, set to YES to enable foreign state updates (default NO)
enableStaleDiscards: BOOL, set to NO to disable discarding stale updates (default YES)
enableIgnoreDeltas: BOOL, set to YES to disable delta updates (default NO)
QoS: AWSIoTMQTTQoS (default AWSIoTMQTTQoSMessageDeliveryAttemptedAtMostOnce)
shadowOperationTimeoutSeconds: double, device shadow operation timeout (default 10.0)
@param callback The function to call when updates are received for the device shadow.
@param completionCallback The function to call when the operation is completed.
@return Boolean value indicating success or failure.
*/
- (BOOL) registerWithShadow:(NSString *)name
options:(NSDictionary<NSString *, NSNumber *> * _Nullable)options
eventCallback:(void(^)(NSString *name, AWSIoTShadowOperationType operation, AWSIoTShadowOperationStatusType status, NSString *clientToken, NSData *payload))callback
completionCallback:(void(^)(void))completionCallback;
/**
Unregister from updates on a device shadow
@param name The device shadow to unregister from updates on.
@return Boolean value indicating success or failure.
*/
- (BOOL) unregisterFromShadow:(NSString *)name;
/**
Unregister from updates on a device shadow
@param name The device shadow to unregister from updates on.
@param completionCallback The function to call when the operation is completed.
@return Boolean value indicating success or failure.
*/
- (BOOL) unregisterFromShadow:(NSString *)name
completionCallback:(void(^)(void))completionCallback;
/**
Update a device shadow
@param name The device shadow to update.
@param jsonString The JSON string to update the device shadow with.
@return Boolean value indicating success or failure.
*/
- (BOOL) updateShadow:(NSString *)name
jsonString:(NSString *)jsonString;
/**
Update a device shadow with json data and client token.
If the json data is not valid, it returns false, and no update message
will be published. If the json data is valid, it publishes the data on
$aws/things/thingName/shadow/update topic, then return true.
@param name The name of the device shadow to be updated
@param jsonString The shadow state in format of JSON string
@param clientToken The client id to use when upadating the shadow
@return True if json string is valid and can be serialized successfully;
False if it cannot be serialized successfully.
*/
- (BOOL) updateShadow:(NSString *)name
jsonString:(NSString *)jsonString
clientToken:(NSString * _Nullable)clientToken;
/**
Get a device shadow
@param name The device shadow to get.
@return Boolean value indicating success or failure.
*/
- (BOOL) getShadow:(NSString *)name;
/**
Get a device shadow
@param name The device shadow to get.
@param clientToken A client token to use when requesting the device shadow.
@return Boolean value indicating success or failure.
*/
- (BOOL) getShadow:(NSString *)name
clientToken:(NSString * _Nullable)clientToken;
/**
Delete a device shadow
@param name The device shadow to delete.
@return Boolean value indicating success or failure.
*/
- (BOOL) deleteShadow:(NSString *)name;
/**
Delete a device shadow
@param name The device shadow to delete.
@param clientToken A client token to use when deleting the device shadow.
@return Boolean value indicating success or failure.
*/
- (BOOL) deleteShadow:(NSString *)name
clientToken:(NSString * _Nullable)clientToken;
@end
Swift
class AWSIoTDataManager
Undocumented
-
The service configuration used to instantiate this service client.
Warning
Once the client is instantiated, do not modify the configuration object. It may cause unspecified behaviors.Declaration
Objective-C
@property (nonatomic, strong, readonly) AWSServiceConfiguration *configuration
-
The MQTT configuration used by this service client. Any changes to this configuration object will take effect upon the next invocation of either the connectWithClientId or connectUsingWebSocketWithClientId methods.
Declaration
Objective-C
@property (nonatomic, strong, readonly) AWSIoTMQTTConfiguration *_Nonnull mqttConfiguration;
Swift
var mqttConfiguration: AWSIoTMQTTConfiguration { get }
-
Deprecated
Use
registerIoTDataManagerWithConfiguration:forKey:
with the custom endpoint to initialize AWSIoTDataManagerReturns the singleton service client. If the singleton object does not exist, the SDK instantiates the default service client with
defaultServiceConfiguration
from[AWSServiceManager defaultServiceManager]
. The reference to this object is maintained by the SDK, and you do not need to retain it manually.For example, set the default service configuration in
- application:didFinishLaunchingWithOptions:
Swift
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { let credentialProvider = AWSCognitoCredentialsProvider(regionType: .USEast1, identityPoolId: "YourIdentityPoolId") let configuration = AWSServiceConfiguration(region: .USEast1, credentialsProvider: credentialProvider) AWSServiceManager.default().defaultServiceConfiguration = configuration return true }
Objective-C
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { AWSCognitoCredentialsProvider *credentialsProvider = [[AWSCognitoCredentialsProvider alloc] initWithRegionType:AWSRegionUSEast1 identityPoolId:@"YourIdentityPoolId"]; AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUSEast1 credentialsProvider:credentialsProvider]; [AWSServiceManager defaultServiceManager].defaultServiceConfiguration = configuration; return YES; }
Then call the following to get the default service client:
Swift
let IoTDataManager = AWSIoTDataManager.default()
Objective-C
AWSIoTDataManager *IoTDataManager = [AWSIoTDataManager defaultIoTDataManager];
Declaration
Objective-C
+ (nonnull instancetype)defaultIoTDataManager;
Swift
class func `default`() -> Self
Return Value
The default service client.
-
Creates a service client with the given service configuration and registers it for the key.
For example, set the default service configuration in
- application:didFinishLaunchingWithOptions:
Swift
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { let credentialProvider = AWSCognitoCredentialsProvider(regionType: .USEast1, identityPoolId: "YourIdentityPoolId") let configuration = AWSServiceConfiguration(region: .USWest2, credentialsProvider: credentialProvider) AWSIoTDataManager.register(with: configuration!, forKey: "USWest2IoTDataManager") return true }
Objective-C
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { AWSCognitoCredentialsProvider *credentialsProvider = [[AWSCognitoCredentialsProvider alloc] initWithRegionType:AWSRegionUSEast1 identityPoolId:@"YourIdentityPoolId"]; AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUSWest2 credentialsProvider:credentialsProvider]; [AWSIoTDataManager registerIoTDataManagerWithConfiguration:configuration forKey:@"USWest2IoTDataManager"]; return YES; }
Then call the following to get the service client:
Swift
let IoTDataManager = AWSIoTDataManager(forKey: "USWest2IoTDataManager")
Objective-C
AWSIoTDataManager *IoTDataManager = [AWSIoTDataManager IoTDataManagerForKey:@"USWest2IoTDataManager"];
Warning
After calling this method, do not modify the configuration object. It may cause unspecified behaviors.
Declaration
Objective-C
+ (void)registerIoTDataManagerWithConfiguration:(id)configuration forKey:(nonnull NSString *)key;
Swift
class func register(withConfiguration configuration: Any!, forKey key: String)
Parameters
configuration
A service configuration object.
key
A string to identify the service client.
-
Creates a service client with the given service configuration and AWSIoTMQTTConfiguration and registers it for the key.
For example:
Swift
let credentialProvider = AWSCognitoCredentialsProvider(regionType: .USEast1, identityPoolId: “YourIdentityPoolId”) let configuration = AWSServiceConfiguration(region: .USWest2, credentialsProvider: credentialProvider) let mqttConfig = AWSIoTMQTTConfiguration(keepAliveTimeInterval: 60.0, baseReconnectTimeInterval: 1.0, minimumConnectionTimeInterval: 20.0, maximumReconnectTimeInterval: 128.0, runLoop: RunLoop.current, runLoopMode: RunLoopMode.defaultRunLoopMode.rawValue, autoResubscribe: true, lastWillAndTestament: AWSIoTMQTTLastWillAndTestament() )
AWSIoTDataManager.register(with: configuration!, with: mqttConfig!, forKey: “USWest2IoTDataManager”)
Objective-C
AWSCognitoCredentialsProvider *credentialsProvider = [ [AWSCognitoCredentialsProvider alloc] initWithRegionType:AWSRegionUSEast1 identityPoolId:@“YourIdentityPoolId”]; AWSServiceConfiguration *configuration = [ [AWSServiceConfiguration alloc] initWithRegion:AWSRegionUSWest2 credentialsProvider:credentialsProvider]; AWSIoTMQTTConfiguration *mqttConfig = [ [AWSIoTMQTTConfiguration alloc] initWithKeepAliveTimeInterval:60.0 baseReconnectTimeInterval:1.0 minimumConnectionTimeInterval:20.0 maximumReconnectTimeInterval:128.0 runLoop:[NSRunLoop currentRunLoop] runLoopMode:NSDefaultRunLoopMode autoResubscribe:YES lastWillAndTestament:[AWSIoTMQTTLastWillAndTestament new] ];
[AWSIoTDataManager registerIoTDataManagerWithConfiguration:configuration withMQTTConfiguration:mqttConfig forKey:@“USWest2IoTDataManager”];
Then call the following to get the service client:
Swift
let IoTDataManager = AWSIoTDataManager(forKey: “USWest2IoTDataManager”)
Objective-C
AWSIoTDataManager *IoTDataManager = [AWSIoTDataManager IoTDataManagerForKey:@“USWest2IoTDataManager”];
Warning
After calling this method, do not modify the configuration object. It may cause unspecified behaviors.
Declaration
Objective-C
+ (void)registerIoTDataManagerWithConfiguration:(id)configuration withMQTTConfiguration: (nonnull AWSIoTMQTTConfiguration *)mqttConfig forKey:(nonnull NSString *)key;
Swift
class func register(withConfiguration configuration: Any!, with mqttConfig: AWSIoTMQTTConfiguration, forKey key: String)
Parameters
configuration
A service configuration object.
mqttConfig
A AWSIoTMQTTConfiguration object.
key
A string to identify the service client.
-
Retrieves the service client associated with the key. You need to call
+ registerIoTDataManagerWithConfiguration:forKey:
before invoking this method.For example, set the default service configuration in
- application:didFinishLaunchingWithOptions:
Swift
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { let credentialProvider = AWSCognitoCredentialsProvider(regionType: .USEast1, identityPoolId: "YourIdentityPoolId") let configuration = AWSServiceConfiguration(region: .USWest2, credentialsProvider: credentialProvider) AWSIoTDataManager.register(with: configuration!, forKey: "USWest2IoTDataManager") return true }
Objective-C
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { AWSCognitoCredentialsProvider *credentialsProvider = [[AWSCognitoCredentialsProvider alloc] initWithRegionType:AWSRegionUSEast1 identityPoolId:@"YourIdentityPoolId"]; AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUSWest2 credentialsProvider:credentialsProvider]; [AWSIoTDataManager registerIoTDataManagerWithConfiguration:configuration forKey:@"USWest2IoTDataManager"]; return YES; }
Then call the following to get the service client:
Swift
let IoTDataManager = AWSIoTDataManager(forKey: "USWest2IoTDataManager")
Objective-C
AWSIoTDataManager *IoTDataManager = [AWSIoTDataManager IoTDataManagerForKey:@"USWest2IoTDataManager"];
Declaration
Objective-C
+ (nonnull instancetype)IoTDataManagerForKey:(nonnull NSString *)key;
Swift
convenience init(forKey key: String)
Parameters
key
A string to identify the service client.
Return Value
An instance of the service client.
-
Removes the service client associated with the key and release it.
Warning
Before calling this method, make sure no method is running on this client.
Declaration
Objective-C
+ (void)removeIoTDataManagerForKey:(nonnull NSString *)key;
Swift
class func remove(forKey key: String)
Parameters
key
A string to identify the service client.
-
Enable or disable sending SDK name and version in the Mqtt Connect message. Enabled by default. Must be called before calling connect.
Declaration
Objective-C
- (void)enableMetricsCollection:(BOOL)enabled;
Swift
func enableMetricsCollection(_ enabled: Bool)
-
Deprecated
Use
updateUserMetaData
for updating the user meta data@deprecated This method is deprecated and will be deleted in the next minor version. Please use
updateUserMetaData
instead. Set user-specified dictionary of the additional values to be passed as components of connection username. Swift let userMetaData: [String: String] = [“AFRSDK”: “ios”, “AFRSDKVersion”: “1.0.0”, “AFRLibVersion”:“1.4.1”] iotDataManager.addUserMetaData(userMetaData)Declaration
Objective-C
- (void)addUserMetaData: (nonnull NSDictionary<NSString *, NSString *> *)userMetaData;
Swift
func addUserMetaData(_ userMetaData: [String : String])
Parameters
userMetaData
A dictionary of key-value metadata pairs to be appended to the connection username
-
Set user-specified dictionary of the additional values to be passed as components of connection username. Swift let userMetaData: [String: String] = [“AFRSDK”: “ios”, “AFRSDKVersion”: “1.0.0”, “AFRLibVersion”:“1.4.1”] iotDataManager.addUserMetaData(userMetaData)
Declaration
Objective-C
- (void)updateUserMetaData: (nonnull NSDictionary<NSString *, NSString *> *)userMetaData;
Swift
func updateUserMetaData(_ userMetaData: [String : String])
Parameters
userMetaData
A dictionary of key-value metadata pairs to be appended to the connection username
-
Initialises the MQTT session and connects to AWS IoT using certificate-based mutual authentication
Declaration
Objective-C
- (BOOL)connectWithClientId:(nonnull NSString *)clientId cleanSession:(BOOL)cleanSession certificateId:(nonnull NSString *)certificateId statusCallback:(nonnull void (^)(AWSIoTMQTTStatus))callback;
Swift
func connect(withClientId clientId: String, cleanSession: Bool, certificateId: String, statusCallback callback: @escaping (AWSIoTMQTTStatus) -> Void) -> Bool
Parameters
clientId
The Client Identifier identifies the Client to the Server.
cleanSession
specifies if the server should discard previous session information.
certificateId
contains the ID of the certificate to use in the connection; must be in the keychain
callback
When new mqtt session status is received callback will be called with new connection status.
Return Value
true if initialise finished with success
-
Initialises the MQTT session and connects to AWS IoT on port 443 using certificate-based mutual authentication and ALPN (Application Layer Protocol Negotiation)
Declaration
Objective-C
- (BOOL)connectUsingALPNWithClientId:(nonnull NSString *)clientId cleanSession:(BOOL)cleanSession certificateId:(nonnull NSString *)certificateId statusCallback: (nonnull void (^)(AWSIoTMQTTStatus))callback;
Swift
func connectUsingALPN(withClientId clientId: String, cleanSession: Bool, certificateId: String, statusCallback callback: @escaping (AWSIoTMQTTStatus) -> Void) -> Bool
Parameters
clientId
The Client Identifier identifies the Client to the Server.
cleanSession
specifies if the server should discard previous session information.
certificateId
contains the ID of the certificate to use in the connection; must be in the keychain
callback
When new mqtt session status is received callback will be called with new connection status.
Return Value
true if initialise finished with success
-
Initialises the MQTT session and connects to AWS IoT using WebSocket/SigV4 authentication. IAM credentials are taken from the current service configuration.
Declaration
Objective-C
- (BOOL)connectUsingWebSocketWithClientId:(nonnull NSString *)clientId cleanSession:(BOOL)cleanSession statusCallback: (nonnull void (^)(AWSIoTMQTTStatus))callback;
Swift
func connectUsingWebSocket(withClientId clientId: String, cleanSession: Bool, statusCallback callback: @escaping (AWSIoTMQTTStatus) -> Void) -> Bool
Parameters
clientId
The Client Identifier identifies the Client to the Server.
cleanSession
specifies if the server should discard previous session information.
callback
When new mqtt session status is received the callback will be called with new connection status.
Return Value
true if initialise finished with success
-
-connectUsingWebSocketWithClientId:
cleanSession: customAuthorizerName: tokenKeyName: tokenValue: tokenSignature: statusCallback: Initialises the MQTT session and connects to AWS IoT using WebSocket/CustomAuthorizer mechanism.
Declaration
Objective-C
- (BOOL)connectUsingWebSocketWithClientId:(nonnull NSString *)clientId cleanSession:(BOOL)cleanSession customAuthorizerName: (nonnull NSString *)customAuthorizerName tokenKeyName:(nonnull NSString *)tokenKeyName tokenValue:(nonnull NSString *)tokenValue tokenSignature:(nonnull NSString *)tokenSignature statusCallback: (nonnull void (^)(AWSIoTMQTTStatus))callback;
Swift
func connectUsingWebSocket(withClientId clientId: String, cleanSession: Bool, customAuthorizerName: String, tokenKeyName: String, tokenValue: String, tokenSignature: String, statusCallback callback: @escaping (AWSIoTMQTTStatus) -> Void) -> Bool
Parameters
clientId
The Client Identifier identifies the Client to the Server.
cleanSession
specifies if the server should discard previous session information.
customAuthorizerName
Name of the AWS IoT custom authorizer.
tokenKeyName
This specifies the key name that your device chooses, which indicates the token in the custom authorization HTTP request header.
tokenValue
This specifies the custom authorization token to authorize the request to the AWS IoT gateway.
tokenSignature
This specifies the token signature for the custom authorizer to validate the tokenValue.
callback
When new mqtt session status is received the callback will be called with new connection status.
Return Value
true if initialise finished with success.
-
Disconnect from a mqtt client (close current mqtt session)
Declaration
Objective-C
- (void)disconnect;
Swift
func disconnect()
-
Get the current connection status
Declaration
Objective-C
- (AWSIoTMQTTStatus)getConnectionStatus;
Swift
func getConnectionStatus() -> AWSIoTMQTTStatus
Return Value
AWSIoTMQTTStatus
-
Send MQTT message to specified topic
Declaration
Objective-C
- (BOOL)publishString:(nonnull NSString *)string onTopic:(nonnull NSString *)topic QoS:(AWSIoTMQTTQoS)qos;
Swift
func publishString(_ string: String, onTopic topic: String, qoS qos: AWSIoTMQTTQoS) -> Bool
Parameters
string
The message (As NSString object) to be sent.
qos
The QoS value to use when publishing (optional, default AWSIoTMQTTQoSAtMostOnce).
topic
The topic for publish to.
Return Value
Boolean value indicating success or failure.
-
Send MQTT message to specified topic
Declaration
Objective-C
- (BOOL)publishString:(nonnull NSString *)string onTopic:(nonnull NSString *)topic QoS:(AWSIoTMQTTQoS)qos ackCallback:(nullable AWSIoTMQTTAckBlock)ackCallback;
Swift
func publishString(_ string: String, onTopic topic: String, qoS qos: AWSIoTMQTTQoS, ackCallback: AWSIoTMQTTAckBlock? = nil) -> Bool
Parameters
string
The message (As NSString object) to be sent.
qos
The QoS value to use when publishing (optional, default AWSIoTMQTTQoSAtMostOnce).
topic
The topic for publish to.
ackCallback
the callback for ack if QoS > 0.
Return Value
Boolean value indicating success or failure.
-
Send MQTT message to specified topic
Declaration
Objective-C
- (BOOL)publishData:(nonnull NSData *)data onTopic:(nonnull NSString *)topic QoS:(AWSIoTMQTTQoS)qos;
Swift
func publishData(_ data: Data, onTopic topic: String, qoS qos: AWSIoTMQTTQoS) -> Bool
Parameters
data
The message (As NSData) to be sent.
qos
The QoS value to use when publishing (optional, default AWSIoTMQTTQoSAtMostOnce).
topic
The topic for publish to.
Return Value
Boolean value indicating success or failure.
-
Send MQTT message to specified topic
Declaration
Objective-C
- (BOOL)publishData:(nonnull NSData *)data onTopic:(nonnull NSString *)topic QoS:(AWSIoTMQTTQoS)qos ackCallback:(nullable AWSIoTMQTTAckBlock)ackCallback;
Swift
func publishData(_ data: Data, onTopic topic: String, qoS qos: AWSIoTMQTTQoS, ackCallback: AWSIoTMQTTAckBlock? = nil) -> Bool
Parameters
data
The message (As NSData) to be sent.
topic
The topic for publish to.
qos
The QoS value to use when publishing (optional, default AWSIoTMQTTQoSAtMostOnce).
ackCallback
the callback for ack if QoS > 0.
Return Value
Boolean value indicating success or failure.
-
Send MQTT message to specified topic
Declaration
Objective-C
- (BOOL)publishData:(nonnull NSData *)data onTopic:(nonnull NSString *)topic QoS:(AWSIoTMQTTQoS)qos retain:(BOOL)retain ackCallback:(nullable AWSIoTMQTTAckBlock)ackCallback;
Swift
func publishData(_ data: Data, onTopic topic: String, qoS qos: AWSIoTMQTTQoS, retain: Bool, ackCallback: AWSIoTMQTTAckBlock? = nil) -> Bool
Parameters
data
The message (As NSData) to be sent.
topic
The topic for publish to.
qos
The QoS value to use when publishing (optional, default AWSIoTMQTTQoSAtMostOnce).
retain
The retain message flag.
ackCallback
the callback for ack if QoS > 0.
Return Value
Boolean value indicating success or failure.
-
Subscribes to a topic at a specific QoS level
Declaration
Objective-C
- (BOOL)subscribeToTopic:(nonnull NSString *)topic QoS:(AWSIoTMQTTQoS)qos messageCallback:(nonnull AWSIoTMQTTNewMessageBlock)callback;
Swift
func subscribe(toTopic topic: String, qoS qos: AWSIoTMQTTQoS, messageCallback callback: @escaping AWSIoTMQTTNewMessageBlock) -> Bool
Parameters
topic
The Topic to subscribe to.
qos
Specifies the QoS Level of the subscription: AWSIoTMQTTQoSAtMostOnce or AWSIoTMQTTQoSAtLeastOnce
callback
Reference to AWSIOTMQTTNewMessageBlock. When new message is received the callback will be invoked.
Return Value
Boolean value indicating success or failure.
-
Subscribes to a topic at a specific QoS level
Declaration
Objective-C
- (BOOL)subscribeToTopic:(nonnull NSString *)topic QoS:(AWSIoTMQTTQoS)qos messageCallback:(nonnull AWSIoTMQTTNewMessageBlock)callback ackCallback:(nullable AWSIoTMQTTAckBlock)ackCallback;
Swift
func subscribe(toTopic topic: String, qoS qos: AWSIoTMQTTQoS, messageCallback callback: @escaping AWSIoTMQTTNewMessageBlock, ackCallback: AWSIoTMQTTAckBlock? = nil) -> Bool
Parameters
topic
The Topic to subscribe to.
qos
Specifies the QoS Level of the subscription: AWSIoTMQTTQoSAtMostOnce or AWSIoTMQTTQoSAtLeastOnce
callback
Reference to AWSIOTMQTTNewMessageBlock. When new message is received the callback will be invoked.
ackCallback
the callback for ack if QoS > 0.
Return Value
Boolean value indicating success or failure.
-
Subscribes to a topic at a specific QoS level
Declaration
Objective-C
- (BOOL)subscribeToTopic:(nonnull NSString *)topic QoS:(AWSIoTMQTTQoS)qos extendedCallback:(nonnull AWSIoTMQTTExtendedNewMessageBlock)callback;
Swift
func subscribe(toTopic topic: String, qoS qos: AWSIoTMQTTQoS, extendedCallback callback: @escaping AWSIoTMQTTExtendedNewMessageBlock) -> Bool
Parameters
topic
The Topic to subscribe to.
qos
Specifies the QoS Level of the subscription: AWSIoTMQTTQoSAtMostOnce or AWSIoTMQTTQoSAtLeastOnce
callback
Reference to AWSIOTMQTTExtendedNewMessageBlock. When new message is received the callback will be invoked.
Return Value
Boolean value indicating success or failure.
-
Subscribes to a topic at a specific QoS level
Declaration
Objective-C
- (BOOL)subscribeToTopic:(nonnull NSString *)topic QoS:(AWSIoTMQTTQoS)qos extendedCallback:(nonnull AWSIoTMQTTExtendedNewMessageBlock)callback ackCallback:(nullable AWSIoTMQTTAckBlock)ackCallback;
Swift
func subscribe(toTopic topic: String, qoS qos: AWSIoTMQTTQoS, extendedCallback callback: @escaping AWSIoTMQTTExtendedNewMessageBlock, ackCallback: AWSIoTMQTTAckBlock? = nil) -> Bool
Parameters
topic
The Topic to subscribe to.
qos
Specifies the QoS Level of the subscription: AWSIoTMQTTQoSAtMostOnce or AWSIoTMQTTQoSAtLeastOnce
callback
Reference to AWSIOTMQTTExtendedNewMessageBlock. When new message is received the callback will be invoked.
ackCallback
the callback for ack if QoS > 0.
Return Value
Boolean value indicating success or failure.
-
Subscribes to a topic at a specific QoS level
Declaration
Objective-C
- (BOOL)subscribeToTopic:(nonnull NSString *)topic QoS:(AWSIoTMQTTQoS)qos fullCallback:(nonnull AWSIoTMQTTFullMessageBlock)callback;
Swift
func subscribe(toTopic topic: String, qoS qos: AWSIoTMQTTQoS, fullCallback callback: @escaping AWSIoTMQTTFullMessageBlock) -> Bool
Parameters
topic
The Topic to subscribe to.
qos
Specifies the QoS Level of the subscription: AWSIoTMQTTQoSAtMostOnce or AWSIoTMQTTQoSAtLeastOnce
callback
Reference to AWSIoTMQTTFullMessageBlock. When new message is received the callback will be invoked.
Return Value
Boolean value indicating success or failure.
-
Subscribes to a topic at a specific QoS level
Declaration
Objective-C
- (BOOL)subscribeToTopic:(nonnull NSString *)topic QoS:(AWSIoTMQTTQoS)qos fullCallback:(nonnull AWSIoTMQTTFullMessageBlock)callback ackCallback:(nullable AWSIoTMQTTAckBlock)ackCallback;
Swift
func subscribe(toTopic topic: String, qoS qos: AWSIoTMQTTQoS, fullCallback callback: @escaping AWSIoTMQTTFullMessageBlock, ackCallback: AWSIoTMQTTAckBlock? = nil) -> Bool
Parameters
topic
The Topic to subscribe to.
qos
Specifies the QoS Level of the subscription: AWSIoTMQTTQoSAtMostOnce or AWSIoTMQTTQoSAtLeastOnce
callback
Reference to AWSIoTMQTTFullMessageBlock. When new message is received the callback will be invoked.
ackCallback
the callback for ack if QoS > 0.
Return Value
Boolean value indicating success or failure.
-
Unsubscribes from a topic
Declaration
Objective-C
- (void)unsubscribeTopic:(nonnull NSString *)topic;
Swift
func unsubscribeTopic(_ topic: String)
Parameters
topic
The Topic to unsubscribe from.
-
Register for updates on a device shadow
enableDebugging: BOOL, set to YES to enable additional console debugging (default NO) enableVersioning: BOOL, set to NO to disable versioning (default YES) enableForeignStateUpdateNotifications: BOOL, set to YES to enable foreign state updates (default NO) enableStaleDiscards: BOOL, set to NO to disable discarding stale updates (default YES) enableIgnoreDeltas: BOOL, set to YES to disable delta updates (default NO) QoS: AWSIoTMQTTQoS (default AWSIoTMQTTQoSMessageDeliveryAttemptedAtMostOnce) shadowOperationTimeoutSeconds: double, device shadow operation timeout (default 10.0)
Declaration
Objective-C
- (BOOL) registerWithShadow:(nonnull NSString *)name options:(NSDictionary<NSString *, NSNumber *> *_Nullable)options eventCallback: (nonnull void (^)(NSString *_Nonnull, AWSIoTShadowOperationType, AWSIoTShadowOperationStatusType, NSString *_Nonnull, NSData *_Nonnull))callback;
Swift
func register(withShadow name: String, options: [String : NSNumber]? = nil, eventCallback callback: @escaping (String, AWSIoTShadowOperationType, AWSIoTShadowOperationStatusType, String, Data) -> Void) -> Bool
Parameters
name
The device shadow to register for updates on.
options
A dictionary with device shadow registration options. The options are:
callback
The function to call when updates are received for the device shadow.
Return Value
Boolean value indicating success or failure.
-
Register for updates on a device shadow
enableDebugging: BOOL, set to YES to enable additional console debugging (default NO) enableVersioning: BOOL, set to NO to disable versioning (default YES) enableForeignStateUpdateNotifications: BOOL, set to YES to enable foreign state updates (default NO) enableStaleDiscards: BOOL, set to NO to disable discarding stale updates (default YES) enableIgnoreDeltas: BOOL, set to YES to disable delta updates (default NO) QoS: AWSIoTMQTTQoS (default AWSIoTMQTTQoSMessageDeliveryAttemptedAtMostOnce) shadowOperationTimeoutSeconds: double, device shadow operation timeout (default 10.0)
Declaration
Objective-C
- (BOOL) registerWithShadow:(nonnull NSString *)name options:(NSDictionary<NSString *, NSNumber *> *_Nullable)options eventCallback: (nonnull void (^)(NSString *_Nonnull, AWSIoTShadowOperationType, AWSIoTShadowOperationStatusType, NSString *_Nonnull, NSData *_Nonnull))callback completionCallback:(nonnull void (^)(void))completionCallback;
Swift
func register(withShadow name: String, options: [String : NSNumber]? = nil, eventCallback callback: @escaping (String, AWSIoTShadowOperationType, AWSIoTShadowOperationStatusType, String, Data) -> Void, completionCallback: @escaping () -> Void) -> Bool
Parameters
name
The device shadow to register for updates on.
options
A dictionary with device shadow registration options. The options are:
callback
The function to call when updates are received for the device shadow.
completionCallback
The function to call when the operation is completed.
Return Value
Boolean value indicating success or failure.
-
Unregister from updates on a device shadow
Declaration
Objective-C
- (BOOL)unregisterFromShadow:(nonnull NSString *)name;
Swift
func unregister(fromShadow name: String) -> Bool
Parameters
name
The device shadow to unregister from updates on.
Return Value
Boolean value indicating success or failure.
-
Unregister from updates on a device shadow
Declaration
Objective-C
- (BOOL)unregisterFromShadow:(nonnull NSString *)name completionCallback:(nonnull void (^)(void))completionCallback;
Swift
func unregister(fromShadow name: String, completionCallback: @escaping () -> Void) -> Bool
Parameters
name
The device shadow to unregister from updates on.
completionCallback
The function to call when the operation is completed.
Return Value
Boolean value indicating success or failure.
-
Update a device shadow
Declaration
Objective-C
- (BOOL)updateShadow:(nonnull NSString *)name jsonString:(nonnull NSString *)jsonString;
Swift
func updateShadow(_ name: String, jsonString: String) -> Bool
Parameters
name
The device shadow to update.
jsonString
The JSON string to update the device shadow with.
Return Value
Boolean value indicating success or failure.
-
Update a device shadow with json data and client token. If the json data is not valid, it returns false, and no update message will be published. If the json data is valid, it publishes the data on $aws/things/thingName/shadow/update topic, then return true.
Declaration
Objective-C
- (BOOL)updateShadow:(nonnull NSString *)name jsonString:(nonnull NSString *)jsonString clientToken:(NSString *_Nullable)clientToken;
Swift
func updateShadow(_ name: String, jsonString: String, clientToken: String?) -> Bool
Parameters
name
The name of the device shadow to be updated
jsonString
The shadow state in format of JSON string
clientToken
The client id to use when upadating the shadow
Return Value
True if json string is valid and can be serialized successfully; False if it cannot be serialized successfully.
-
Get a device shadow
Declaration
Objective-C
- (BOOL)getShadow:(nonnull NSString *)name;
Swift
func getShadow(_ name: String) -> Bool
Parameters
name
The device shadow to get.
Return Value
Boolean value indicating success or failure.
-
Get a device shadow
Declaration
Objective-C
- (BOOL)getShadow:(nonnull NSString *)name clientToken:(NSString *_Nullable)clientToken;
Swift
func getShadow(_ name: String, clientToken: String?) -> Bool
Parameters
name
The device shadow to get.
clientToken
A client token to use when requesting the device shadow.
Return Value
Boolean value indicating success or failure.
-
Delete a device shadow
Declaration
Objective-C
- (BOOL)deleteShadow:(nonnull NSString *)name;
Swift
func deleteShadow(_ name: String) -> Bool
Parameters
name
The device shadow to delete.
Return Value
Boolean value indicating success or failure.
-
Delete a device shadow
Declaration
Objective-C
- (BOOL)deleteShadow:(nonnull NSString *)name clientToken:(NSString *_Nullable)clientToken;
Swift
func deleteShadow(_ name: String, clientToken: String?) -> Bool
Parameters
name
The device shadow to delete.
clientToken
A client token to use when deleting the device shadow.
Return Value
Boolean value indicating success or failure.