Messaging
This interface enables publication and receipt of Real-Time Messages and Push Notifications.
This interface has the following classes:
- ICAppDelegate
- ICMessaging
- ICMessagingActionsDelegate
- ICMessagingDelegate
- ICMediaFile
- ICMessage
- ICTopic
- ICThread
- ICMessageStore
- ICDefaultMessageStore
ICAppDelegate
This class is mandatory to use push notifications.
didFinishLaunchingWithOptions
This method is used to initialize the SDK. It reads the configuration from the IMIconnectConfiguration.plist
file. If the app is allowed to use push notifications, it will register the app for push notifications.
Syntax: - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(nullable NSDictionary *)launchOptions;
Example:
// AppDelegate.h
@interface AppDelegate : ICAppDelegate <UIApplicationDelegate>
@end
// AppDelegate.m
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// Do something...
[super application:application didFinishLaunchingWithOptions:launchOptions];
// Do something...
return YES;
}
// AppDelegate.m
@interface AppDelegate ()
@property (nonatomic) ICAppDelegate *icAppDelegate;
@end
@implementation AppDelegate
- (ICAppDelegate *)icAppDelegate
{
if (_icAppDelegate != nil)
{
return _icAppDelegate;
}
_icAppDelegate = [ICAppDelegate new];
return _icAppDelegate;
}
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// Do something...
[self.icAppDelegate application:application didFinishLaunchingWithOptions:launchOptions];
// Do something...
return YES;
}
didRegisterUserNotificationSettings
This method is used to register the app for push notifications if the app is allowed to use it.
Syntax: - (void)application:(UIApplication *)application didRegisterUserNotificationSettings:(UIUserNotificationSettings *)notificationSettings;
Example:
// AppDelegate.h
@interface AppDelegate : ICAppDelegate <UIApplicationDelegate>
@end
// AppDelegate.m
@implementation AppDelegate
- (void)application:(UIApplication *)application didRegisterUserNotificationSettings:(UIUserNotificationSettings *)notificationSettings
{
// Do something...
[super application:application didRegisterUserNotificationSettings:notificationSettings];
// Do something...
}
// AppDelegate.m
@interface AppDelegate ()
@property (nonatomic) ICAppDelegate *icAppDelegate;
@end
@implementation AppDelegate
- (ICAppDelegate *)icAppDelegate
{
if (_icAppDelegate != nil)
{
return _icAppDelegate;
}
_icAppDelegate = [ICAppDelegate new];
return _icAppDelegate;
}
- (void)application:(UIApplication *)application didRegisterUserNotificationSettings:(UIUserNotificationSettings *)notificationSettings
{
// Do something...
[self.icAppDelegate application:application didRegisterUserNotificationSettings:notificationSettings];
// Do something...
}
handleActionWithIdentifier for LocalNotifications
This method is used handle the action sent by a local notification and selected by the user then it will send a read receipt to the back end. This feature will work only if the app is allowed to use either Push or RTM.
Syntax:
- (void)application:(UIApplication *)application handleActionWithIdentifier:(nullable NSString *)identifier forLocalNotification:(UILocalNotification *)notification completionHandler:(void(^)())completionHandler;
Example:
// AppDelegate.h
@interface AppDelegate : ICAppDelegate <UIApplicationDelegate>
@end
// AppDelegate.m
@implementation AppDelegate
- (void)application:(UIApplication *)application handleActionWithIdentifier:(nullable NSString *)identifier forLocalNotification:(UILocalNotification *)notification completionHandler:(void(^)())completionHandler
{
// Do something...
[super application:application handleActionWithIdentifier:identifier forLocalNotification:notification completionHandler:completionHandler];
// Do something...
}
// AppDelegate.m
@interface AppDelegate ()
@property (nonatomic) ICAppDelegate *icAppDelegate;
@end
@implementation AppDelegate
- (ICAppDelegate *)icAppDelegate
{
if (_icAppDelegate != nil)
{
return _icAppDelegate;
}
_icAppDelegate = [ICAppDelegate new];
return _icAppDelegate;
}
- (void)application:(UIApplication *)application handleActionWithIdentifier:(nullable NSString *)identifier forLocalNotification:(UILocalNotification *)notification completionHandler:(void(^)())completionHandler
{
// Do something...
[self.icAppDelegate application:application handleActionWithIdentifier:identifier forLocalNotification:notification completionHandler:completionHandler];
// Do something...
}
handleActionWithIdentifier forLocalNotification withResponseInfo
This method is used handle the action sent by a local notification and selected by the user then it will send a read receipt to the back end. You can pass additional details through the responseInfo dictionary. This feature will work only if the app is allowed to use either Push or RTM.
Syntax:
- (void)application:(UIApplication *)application handleActionWithIdentifier:(nullable NSString *)identifier forLocalNotification:(UILocalNotification *)notification withResponseInfo:(NSDictionary *)responseInfo completionHandler:(void(^)())completionHandler;
Example:
// AppDelegate.h
@interface AppDelegate : ICAppDelegate <UIApplicationDelegate>
@end
// AppDelegate.m
@implementation AppDelegate
- (void)application:(UIApplication *)application handleActionWithIdentifier:(nullable NSString *)identifier forLocalNotification:(UILocalNotification *)notification withResponseInfo:(NSDictionary *)responseInfo completionHandler:(void(^)())completionHandler
{
// Do something...
[super application:application handleActionWithIdentifier:identifier forLocalNotification:notification withResponseInfo:responseInfo completionHandler:completionHandler];
// Do something...
}
// AppDelegate.m
@interface AppDelegate ()
@property (nonatomic) ICAppDelegate *icAppDelegate;
@end
@implementation AppDelegate
- (ICAppDelegate *)icAppDelegate
{
if (_icAppDelegate != nil)
{
return _icAppDelegate;
}
_icAppDelegate = [ICAppDelegate new];
return _icAppDelegate;
}
- (void)application:(UIApplication *)application handleActionWithIdentifier:(nullable NSString *)identifier forLocalNotification:(UILocalNotification *)notification withResponseInfo:(NSDictionary *)responseInfo completionHandler:(void(^)())completionHandler
{
// Do something...
[self.icAppDelegate application:application handleActionWithIdentifier:identifier forLocalNotification:notification withResponseInfo:responseInfo completionHandler:completionHandler];
// Do something...
}
handleActionWithIdentifier forRemoteNotification
This method is used handle the action sent by a remote notification and selected by the user then it will send a read receipt to the back end. This feature will work only if the app is allowed to use Push.
Syntax:
- (void)application:(UIApplication *)application handleActionWithIdentifier:(nullable NSString *)identifier forRemoteNotification:(NSDictionary *)userInfo completionHandler:(void(^)())completionHandler;
Example:
// AppDelegate.h
@interface AppDelegate : ICAppDelegate <UIApplicationDelegate>
@end
// AppDelegate.m
@implementation AppDelegate
- (void)application:(UIApplication *)application handleActionWithIdentifier:(nullable NSString *)identifier forRemoteNotification:(NSDictionary *)userInfo completionHandler:(void(^)())completionHandler
{
// Do something...
[super application:application handleActionWithIdentifier:identifier forRemoteNotification:userInfo completionHandler:completionHandler];
// Do something...
}
// AppDelegate.m
@interface AppDelegate ()
@property (nonatomic) ICAppDelegate *icAppDelegate;
@end
@implementation AppDelegate
- (ICAppDelegate *)icAppDelegate
{
if (_icAppDelegate != nil)
{
return _icAppDelegate;
}
_icAppDelegate = [ICAppDelegate new];
return _icAppDelegate;
}
- (void)application:(UIApplication *)application handleActionWithIdentifier:(nullable NSString *)identifier forRemoteNotification:(NSDictionary *)userInfo completionHandler:(void(^)())completionHandler
{
// Do something...
[self.icAppDelegate application:application handleActionWithIdentifier:identifier forRemoteNotification:userInfo completionHandler:completionHandler];
// Do something...
}
handleActionWithIdentifier forRemoteNotification withResponseInfo
This method is used handle the action sent by a remote notification and selected by the user then it will send a read receipt to the back end. You can pass additional details through the responseInfo dictionary. This feature will work only if the app is allowed to use Push.
Syntax:
- (void)application:(UIApplication *)application handleActionWithIdentifier:(nullable NSString *)identifier forRemoteNotification:(NSDictionary *)userInfo withResponseInfo:(NSDictionary *)responseInfo completionHandler:(void(^)())completionHandler;
.
Example:
// AppDelegate.h
@interface AppDelegate : ICAppDelegate <UIApplicationDelegate>
@end
// AppDelegate.m
@implementation AppDelegate
- (void)application:(UIApplication *)application handleActionWithIdentifier:(nullable NSString *)identifier forRemoteNotification:(NSDictionary *)userInfo withResponseInfo:(NSDictionary *)responseInfo completionHandler:(void(^)())completionHandler
{
// Do something...
[super application:application handleActionWithIdentifier:identifier forRemoteNotification:userInfo withResponseInfo:responseInfo completionHandler:completionHandler];
// Do something...
}
// AppDelegate.m
@interface AppDelegate ()
@property (nonatomic) ICAppDelegate *icAppDelegate;
@end
@implementation AppDelegate
- (ICAppDelegate *)icAppDelegate
{
if (_icAppDelegate != nil)
{
return _icAppDelegate;
}
_icAppDelegate = [ICAppDelegate new];
return _icAppDelegate;
}
- (void)application:(UIApplication *)application handleActionWithIdentifier:(nullable NSString *)identifier forRemoteNotification:(NSDictionary *)userInfo withResponseInfo:(NSDictionary *)responseInfo completionHandler:(void(^)())completionHandler
{
// Do something...
[self.icAppDelegate application:application handleActionWithIdentifier:identifier forRemoteNotification:userInfo withResponseInfo:responseInfo completionHandler:completionHandler];
// Do something...
}
didRegisterForRemoteNotificationsWithDeviceToken
This method is used to send the device token to the back end in order to be used to send push notification to the user.
Syntax: - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken;
Example:
// AppDelegate.h
@interface AppDelegate : ICAppDelegate <UIApplicationDelegate>
@end
// AppDelegate.m
@implementation AppDelegate
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
{
// Do something...
[super application:application didRegisterForRemoteNotificationsWithDeviceToken:deviceToken];
// Do something...
}
// AppDelegate.m
@interface AppDelegate ()
@property (nonatomic) ICAppDelegate *icAppDelegate;
@end
@implementation AppDelegate
- (ICAppDelegate *)icAppDelegate
{
if (_icAppDelegate != nil)
{
return _icAppDelegate;
}
_icAppDelegate = [ICAppDelegate new];
return _icAppDelegate;
}
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
{
// Do something...
[self.icAppDelegate application:application didRegisterForRemoteNotificationsWithDeviceToken:deviceToken];
// Do something...
}
didFailToRegisterForRemoteNotificationsWithError
This method is used to log the reason why the app has failed to register for push notification.
Syntax: - (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error;
Example:
// AppDelegate.h
@interface AppDelegate : ICAppDelegate <UIApplicationDelegate>
@end
// AppDelegate.m
@implementation AppDelegate
- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error
{
// Do something...
[super application:application didFailToRegisterForRemoteNotificationsWithError:error];
// Do something...
}
// AppDelegate.m
@interface AppDelegate ()
@property (nonatomic) ICAppDelegate *icAppDelegate;
@end
@implementation AppDelegate
- (ICAppDelegate *)icAppDelegate
{
if (_icAppDelegate != nil)
{
return _icAppDelegate;
}
_icAppDelegate = [ICAppDelegate new];
return _icAppDelegate;
}
- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error
{
// Do something...
[self.icAppDelegate application:application didFailToRegisterForRemoteNotificationsWithError:error];
// Do something...
}
didReceiveRemoteNotification
This method is used to handle the received remote notification. Using this method a notification can be sent to the user or to notify the app with changes done on IMIconnect. A delivery report will be send to the back end.
It is recommended to use the method - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult result))completionHandler
instead of this method. This method will not be invoked when you implement - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult result))completionHandler
.
Syntax: - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo;
didReceiveRemoteNotification with fetchCompletionHandler
This method is used to handle the received remote notification. Using this method a notification can be sent to the user or to notify the app with changes done on IMIconnect.
Syntax: - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult result))completionHandler;
Example:
// AppDelegate.h
@interface AppDelegate : ICAppDelegate <UIApplicationDelegate>
@end
// AppDelegate.m
@implementation AppDelegate
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult result))completionHandler
{
// Do something...
[super application:application didReceiveRemoteNotification:userInfo fetchCompletionHandler:completionHandler];
// Do something...
}
// AppDelegate.m
@interface AppDelegate ()
@property (nonatomic) ICAppDelegate *icAppDelegate;
@end
@implementation AppDelegate
- (ICAppDelegate *)icAppDelegate
{
if (_icAppDelegate != nil)
{
return _icAppDelegate;
}
_icAppDelegate = [ICAppDelegate new];
return _icAppDelegate;
}
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult result))completionHandler
{
// Do something...
[self.icAppDelegate application:application didReceiveRemoteNotification:userInfo fetchCompletionHandler:completionHandler];
// Do something...
}
didReceiveLocalNotification
This method is used to handle the received local notification.
Syntax: - (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification;
Example:
// AppDelegate.h
@interface AppDelegate : ICAppDelegate <UIApplicationDelegate>
@end
// AppDelegate.m
@implementation AppDelegate
- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification;
{
// Do something...
[super application:application didReceiveLocalNotification:notification];
// Do something...
}
// AppDelegate.m
@interface AppDelegate()
@property(nonatomic) ICAppDelegate * icAppDelegate;
@end
@implementation AppDelegate
-
(ICAppDelegate * ) icAppDelegate {
if (_icAppDelegate != nil) {
return _icAppDelegate;
}
_icAppDelegate = [ICAppDelegate new];
return _icAppDelegate;
}
-
(void) application: (UIApplication * ) application didReceiveLocalNotification: (UILocalNotification * ) notification; {
// Do something...
[self.icAppDelegate application: application didReceiveLocalNotification: notification];
// Do something...
}
performFetchWithCompletionHandler
This method is used to launch the monitoring process and retrieve pending messages. If new messages are available, a local notification is sent to the user.
Syntax: - (void)application:(UIApplication *)application performFetchWithCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler;
Example:
// AppDelegate.h
@interface AppDelegate : ICAppDelegate <UIApplicationDelegate>
@end
// AppDelegate.m
@implementation AppDelegate
- (void)application:(UIApplication *)application performFetchWithCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler
{
// Do something...
[super application:application performFetchWithCompletionHandler:completionHandler];
// Do something...
}
// AppDelegate.m
@interface AppDelegate()
@property(nonatomic) ICAppDelegate * icAppDelegate;
@end
@implementation AppDelegate
-(ICAppDelegate * ) icAppDelegate {
if (_icAppDelegate != nil)
{
return _icAppDelegate;
}
_icAppDelegate = [ICAppDelegate new];
return _icAppDelegate;
}
-(void) application: (UIApplication * ) application performFetchWithCompletionHandler: (void( ^ )(UIBackgroundFetchResult)) completionHandler {
// Do something...
[self.icAppDelegate application: application performFetchWithCompletionHandler: completionHandler];
// Do something...
}
ICMessaging
The ICMessaging singleton class facilitates the ability to send and receive RTM messages and update the read status for RTM and Push.
Property | Description |
---|---|
@property (nonatomic, weak) id delegate; | This property refers to the delegate implementing ICMessagingDelegate methods. |
@property (nonatomic, weak) id actionsDelegate; | This property refers to the delegate implementing ICMessagingActionsDelegate methods. |
@property (nonatomic, readonly) BOOL isConnected; | This property returns YES if RTM connection is currently connected. |
@property (nonatomic, readonly) ICConnectionStatus connectionStatus; | This property returns the current connection status between the SDK and the IMIconnect platform. |
@property (nonatomic) id messageStore | The ICMessageStore implementation which the SDK will use to store data. Passing a null value is valid and disables storage capability. |
shared
This method is returns the ICMessaging
singleton instance. The instance is created internally on demand.
Syntax: + (instancetype)shared;
Return Value:
Returns ICMessaging
singleton instance.
connect
Once the RT feature is enabled in the app asset created on IMIconnect and user registration is done, the App Developer can establish a connection between the app and IMIconnect platform by calling the connect method appropriately. This enables the messages sent from IMIconnect to be received on the app. When the application is running in the background, SDK is disconnected from IMIconnect. While in the disconnected state, incoming In-App messages are not received, however when the application comes to foreground again, SDK will establish a connection with IMIconnect platform and allow messages to be received.
The connect method is used to establish a connection to receive Real Time Messages from IMIconnect platform. When the connection is successful, the status events are notified through ICMessagingDelegate didChangeConnectionStatus
.
It throws an error as defined if the user is not currently registered to the IMIconnect or if RTM feature is not enabled in the policy.
Syntax: - (BOOL)connect:(NSError **)error;
Example:
NSError * error;
[ICMessaging shared].delegate = self;
[[ICMessaging shared] connect: & error];
if (error) {
NSLog(@ "Connection Failed. Reason: %@", error.localizedDescription);
}
disconnect
This method is used to disconnect the connection between the app and IMIconnect platform. If there is no active connection, then this method fails silently. When the disconnection is successful, the status events are notified through ICMessagingDelegate didChangeConnectionStatus
.
It throws an error as defined if the user is not currently registered with IMIconnect or if RTM feature is not enabled in the policy.
Syntax: - (BOOL)disconnect:(NSError **)error;
Example:
NSError * error;
[[ICMessaging shared] disconnect: & error];
if (error) {
NSLog(@ "Disconnection failed. Reason: %@", error.localizedDescription);
} else {
NSLog(@ "Disconnection succeeded.");
}
subscribeTopic
This method is used to subscribe to the passed topic, allowing the SDK to receive messages on that topic. If the subscription succeeds, error in completionHandler will be null. Incoming messages are received through ICMessagingDelegate didReceiveMessage
.
Syntax: - (void)subscribeTopic:(NSString *)topic completionHandler: (void(^)(NSError *error))completionHandler;
Parameters:
Parameter | Type | Description |
---|---|---|
topic | String | Specifies the topic name to subscribe. |
Example:
[[ICMessaging shared] subscribeTopic:topic completionHandler:^(NSError *error)
{
if (error)
{
NSLog(@"Subscription failed. Reason: %@", error.localizedDescription);
}
else
{
NSLog(@"Subscription succeeded.");
}
}];
unsubscribeTopic
This method is used to unsubscribe to the passed topic, preventing the SDK to receive messages on that topic. The messages may still be received until the callback has reported success (error == nil). The results of the operation are reported through the completionHandler
.
Syntax: - (void)unsubscribeTopic:(NSString *)topic completionHandler:(void(^)(NSError *error))completionHandler;
Parameters:
Parameter | Type | Description |
---|---|---|
topic | String | Specifies the topic name to unsubscribe. |
Example:
[[ICMessaging shared] unsubscribeTopic:topic
completionHandler:^(NSError *error)
{
if (error)
{
NSLog(@"Unsubscription failed. Reason: %@", error.localizedDescription);
}
else
{
NSLog(@"Unsubscription succeeded.");
}
}];
publishMessage
This method is used to publish the passed ICMessage
instance through RTM connection. If the message is published, error in completionHandler
will be nil.
Syntax: - (void)publishMessage:(ICMessage *)message completionHandler:(void(^)(NSError *error))completionHandler;
Parameters:
Parameters | Type | Description |
---|---|---|
message | ICMessage | Refer to ICMessage class. |
Example:
ICMessage *icMessage = [ICMessage new];
icMessage.message = @"My message";
icMessage.thread = thread;
[[ICMessaging shared] publishMessage:icMessage
completionHandler:^(NSError *error)
{
if (error)
{
NSLog(@"Publication failed. Reason: %@", error.localizedDescription);
}
else
{
NSLog(@"Publication succeeded.");
}
}];
setMessageAsReadForTransactionId
This method is used to update the status of the message identified by transactionId as Read. If the message status is set to read, error in completionHandler
will be nil.
Syntax: -(void)setMessageAsReadForTransactionId:(NSString *)transactionId completionHandler:(void(^)(NSError *error))completionHandler;
Parameters:
Parameter | Type | Description |
---|---|---|
transactionId | String | Specifies a unique transaction id. |
[[ICMessaging shared] setMessageAsReadForTransactionId:message.transactionId
completionHandler:^(NSError *error)
{
if (error)
{
NSLog(@"Can't set the message: %@ to read. Reason: %@"
,message.transactionId
,error.localizedDescription);
}
else
{
NSLog(@"Message:%@ has been set as read", message.transactionId);
}
}];
setMessagesAsReadForTransactionIds
This method is used to update the status of the messages identified by transactionIds array as Read. The results of the operation are reported through the completionHandler
.
Syntax: -(void)setMessagesAsReadForTransactionIds:(NSArray *)transactionIds completionHandler:(void(^)(NSError *error))completionHandler;
Parameters:
Parameter | Type | Description |
---|---|---|
transactionIds | NSArray | Specifies an array of unique transaction ids. |
setNotificationCategories
This method is used to register new notification categories that are used for interactive notifications.
Syntax: - (void)setNotificationCategories:(NSArray *)notificationCategories;
Parameters:
Parameter | Type | Description |
---|---|---|
notificationCategories | NSArray | Specifies an array of notificationCategories to register. |
handleActionWithIdentifier
This method is used to handles the interactive action or default action selected by a user. This method should be called only if the action is selected while the app is active. For the default action case, a nil identifier should be passed.
Syntax: - (void)handleActionWithIdentifier:(NSString *)identifier forMessage:(ICMessage *)message withResponse:(NSString *)response;
Parameters:
Parameter | Type | Description |
---|---|---|
identifier | NSString | Specifies an identifier of the action selected by the user (nil for default action). |
response | NSString | Specifies an extra response associated to the action. |
fetchTopics
This method is used to get a list of topics that are configured with IMIconnect application. To control the type of topics that are returned, use the filter parameter.
Syntax: - (void)fetchTopics:(int)offset completionHandler:(void(^)(NSArray *topics, NSError *error))completionHandler
Parameters:
Parameter | Type | Description |
---|---|---|
offset | Integer | Pass offset value to fetch topics from that Offset value. |
completionHandler | NSError | Invoked when the response is received. |
Example:
[[ICMessaging shared] fetchTopics:0
completionHandler:^(NSArray *topics, NSError *error)
{
if (topics != nil && topics.count > 0)
{
for (ICTopic *topic in topics)
{
NSLog(@"Topic name: %@",topic.name);
}
}
}];
fetchStreams (Deprecated)
This method fetches a list of streams which have been configured to be used with the current IMIconnect application.
Syntax: - (void)fetchStreams:(void(^)(NSArray *streams, NSError *error))completionHandler
Parameters:
Parameter | Type | Description |
---|---|---|
completionHandler | NSError | Invoked when the response is received. |
Example:
[[ICMessaging shared] fetchStreams:^(NSArray *streams, NSError *error)
{
for (ICStream *stream in streams)
{
NSLog(@"Stream name: %@", stream.name);
}
}];
createThread
This method creates a thread based on a title for a stream.
Syntax: - (void) createThreadWithTitle:(NSString *) title forStreamName:(NSString *) streamName completionHandler:(void(^) (ICThread *thread, NSError *error)) completionHandler
Parameters:
Parameter | Type | Description |
---|---|---|
title | String | The title of the thread that will be created. |
streamName | String | The stream name linked to the thread. |
completionHandler | Error | A completionHandler that will be called once the response is receive. |
Example:
[[ICMessaging shared] createThreadWithTitle:@"My new thread title"
forStreamName:@"My Stream name"
completionHandler:^(ICThread *thread, NSError *error)
{
if (thread != nil)
{
NSLog(@"Thread id: %@",thread.threadId);
}
}];
Example:
fetchMessages
This method fetches a list of messages received or sent before the date parameter. The messages will be fetched 50 by 50. To see if more messages are available, check hasMoreMessages
parameter.
Syntax: - (void)fetchMessagesForThreadId:(NSString *) threadId untilDate:(NSDate *) date completionHandler:(void(^)(NSArray *messages, BOOL hasMoreMessages, NSError *error))completionHandler
Parameter | Type | Description |
---|---|---|
threadId | String | The threadId on which the messages have been received. |
date | Date | The date until when the messages will be fetched. |
Parameters:
Example:
[[ICMessaging shared] fetchMessagesForThreadId:@"My thread id"
untilDate:[NSDate date]
completionHandler:^(NSArray *messages, BOOL hasMoreMessages, NSError *error)
{
if (messages != nil && messages.count > 0)
{
for (ICMessage *message in messages)
{
NSLog(@"Message: %@",message.message);
}
}
}];
fetchThreads
This method is used to get a list of threads that are created before the date with limit passed and at least one message transaction completed. Results are reported through the ICFetchThreadsCallback callback.
Syntax:- (void)fetchThreadsUpdatedBeforeDate:(NSDate *)updatedBefore limit:(NSInteger)limit completionHandler:(void(^)(NSArray *threads, BOOL hasMoreThreads, NSError *error))completionHandler
Parameters:
Parameter | Type | Description |
---|---|---|
updatedBefore | NSDate | pass value to fetch Threads before that Date |
limit | NSInteger | pass value to limit the fetching thread count |
completionHandler | Integer | Invoked to report operation success or failure |
ICMessaging.getInstance().fetchThreads(beforeDate,10, new ICFetchThreadsCallback()
{
@Override
public void onFetchThreadsComplete(final ICThread[] threads, final boolean hasMoreData, final ICException exception)
{
if (exception != null)
{
Log.e("fetchThreads", "fetchThreads failed! Reason:" + exception.toString());
return;
}
Log.e("fetchThreads", "fetchThreads success:");
}
});
fetchMessages
This method is used to get a list of messages from connect platform. Results are reported through the ICFetchMessagesCallback callback.
Syntax:- (void)fetchMessagesForThreadId:(NSString *)threadId untilDate:(NSDate *)date limit:(NSInteger)limit completionHandler:(void(^)(NSArray *messages, BOOL hasMoreMessages, NSError *error))completionHandler
Parameters:
Parameter | Type | Description |
---|---|---|
threadId | NSString | Specifies the ThreadId value. |
date | NSDate | Specifies the date before the messages needs to returned. |
limit | NSInteger | Pass value to limit the fetching message count |
completionHandler | Interger | Invoked to report operation success or failure |
ICMessaging.getInstance().fetchMessages(threadId,beforeDate,10, new ICFetchMessagesCallback()
{
@Override
public void onFetchMessagesComplete(final ICMessage[] messages, final boolean hasMoreData, final ICException exception)
{
if (exception != null)
{
Log.e("fetchMessages", "fetchMessages failed! Reason:" + exception.toString());
return;
}
Log.e("fetchMessages", "fetchMessages success:");
}
});
ICMessagingActionsDelegate
This class allows you to override the process done after a user has clicked on an action displayed by an interactive notification.
shouldOverrideAction
This method is invoked whenever a user clicks on an action to know if the developer wants to override the internal process of the SDK. If not implemented, the default value is NO.
Syntax: - (BOOL)shouldOverrideAction:(NSString *)action withIdentifier:(NSString *)identifier forMessage:(ICMessage *)message;
Parameters:
Parameter | Type | Description |
---|---|---|
message | ICMessage | Refer to ICMessage class. |
identifier | NSString | Specifies an identifier of the action selected by the user. |
action | NSString | Specifies the action related to the notification. |
Example:
- (BOOL)shouldOverrideAction:(NSString *)action withIdentifier:(NSString *)identifier forMessage:(ICMessage *)message
{
return YES;
}
performAction
This method is invoked whenever a user clicks on an action and if shouldOverrideAction returns YES for this action.
Syntax: - (void)performAction:(NSString *)action withIdentifier:(NSString *)identifier forMessage:(ICMessage *)message withResponseInfo:(NSDictionary *)responseInfo;
Parameters:
Parameter | Type | Description |
---|---|---|
responseInfo | NSDictionary | Specifies an extra response associated to the action. |
message | ICMessage | Refer to ICMessage class. |
identifier | NSString | Specifies an identifier of the action selected by the user. |
action | NSString | Specifies the action related to the notification. |
Example:
- (void)performAction:(NSString *)action withIdentifier:(NSString *)identifier forMessage:(ICMessage *)message withResponseInfo:(NSDictionary *)responseInfo
{
NSLog(@"action: %@,message: %@",action,identifier,message.message);
}
ICMessagingDelegate
This class allows the interception of incoming messages and RTM connection status changes.
didReceiveMessage
This method is invoked whenever a new Push or RTM message is received. This method is invoked after internal processing is complete, such as local notification may have already been generated.
Syntax: - (void) didReceiveMessage:(ICMessage *)message);
Parameters:
Parameter | Type | Description |
---|---|---|
message | ICMessage | Refer to ICMessage class. |
Example:
- (void)didReceiveMessage:(ICMessage *)message
{
NSLog(@"%@", [message description]);
}
didChangeConnectionStatus
This method is invoked whenever there is a change in RTM connection status.
Syntax: (void) didChangeConnectionStatus:(ICConnectionStatus)connectionStatus;
Parameters:
Parameter | Type | Description |
---|---|---|
connectionStatus | ICConnectionStatus | Refer to ICConnectionStatus class. |
Example:
-(void) didChangeConnectionStatus: (ICConnectionStatus) connectionStatus {
switch (connectionStatus) {
case ICConnectionStatusConnected:
NSLog(@ "Connected");
break;
case ICConnectionStatusConnecting:
NSLog(@ "Connecting");
break;
case ICConnectionStatusNone:
case ICConnectionStatusError:
case ICConnectionStatusClosed:
case ICConnectionStatusRefused:
default:
NSLog(@ "Not Connected");
break;
}
}
ICMediaFile
This class exposes data relating to media file attachments that are received through RTM or Push, also used to attach media files to outgoing RTM messages.
Property | Description |
---|---|
@property (nonatomic) NSString *contentType; | This property refers to the content type of the media such as image or video. |
@property (nonatomic) long duration; | This property refers to the duration of the media in seconds. It is applicable to audio and video files. |
@property (nonatomic) double latitude; | This property refers to the latitude associated with the media. |
@property (nonatomic) double longitude; | This property refers to the longitude associated with the media. |
@property (nonatomic) UIImage *preview; | This property refers to the preview thumbnail as a UIImage. |
@property (nonatomic) long size; | This property refers to the size of the file in bytes. |
@property (nonatomic) NSURL *url; | This property refers to a URL to where the file is located. |
ICMessage
This class exposes message data from the various channels (RTM and Push) in a generalised form and is also used to send Real Time Messages from an app to the IMIconnect platform.
Property | Description |
---|---|
@property (nonatomic, readonly) NSString *category; | This property returns the category of message. The category will be used by the SDK to create an interactive notification. It will be nil if the message is basic. This property can be nullable. |
@property (nonatomic, readonly) ICMessageChannel channel; | This property returns the channel on which the message was received (Push or RTM). This property can not be null. |
@property (nonatomic) NSMutableDictionary *customTags; | This property refers to any custom, developer specified, data that was sent or to be sent as part of the message payload.This property can be nullable. |
@property (nonatomic, readonly) NSDictionary *extras; | This property returns any supplementary data that was sent as part of the message payload. This format of this data is controlled by the IMIconnect platform and enables certain standard features such as interactive messages. This property can be nullable. |
@property (nonatomic) NSMutableArray *medias; | This property refers to any media file which are or has to be attached to the message. This property can be nullable. |
@property (nonatomic) NSString *message; | This property refers to the content of the message. Usually this is the text that is displayed to the end users. This property can be nullable. |
@property (nonatomic, readonly) int priority; | This property returns the priority of the message. |
@property (nonatomic, readonly) NSString *reference; | This property returns the message reference. |
@property (nonatomic, readonly) NSString *replyToTopic; | This property returns the topic to which replies should be sent. |
@property (nonatomic) NSString *conversationId; | This property refers to the conversationId, this is an arbitrary value to identify the conversation on which the message belongs. |
@property (nonatomic) NSString *topic; | This property refers to the topic on which the message was received or sent. |
@property (nonatomic, readonly) NSString *transactionId; | This property returns the transactionid which uniquely identifies the message transaction within the IMIconnect platform. This property can not be null. |
@property (nonatomic, readonly) ICMessageType type; | This property returns the type of the message. This property can not be null. |
@property (nonatomic, readonly) NSString *userId; | This property returns the userId from which the message originated. Returns nil if the message did not arrive from another user. This property can not be null. |
@property (nonatomic) ICMessageStatus status; | The message status such as None/Sent/NotSent/Delivered/Read. This property can not be null. |
ICTopic
This class exposes Push or Real Time Messaging topic data that is used to publish outgoing messages or subscribe to receive incoming messages.
Property | Description |
---|---|
@property (nonatomic, readonly) NSString *name; | Returns the topic name. |
@property (nonatomic, readonly) BOOL isSubscribed; | Returns yes if a user is subscribed the topic. |
@property (nonatomic, readonly) ICAccessLevel accessLevel; | Returns the topic access level (write or readwrite). |
@property (nonatomic, readonly) NSString *createdBy; | Returns the name who created the topic. |
@property (nonatomic, readonly) NSDate *createdDate; | Returns the topic creation date. |
@property (nonatomic, readonly) NSDate *updatedDate; | Returns the date of the latest update in the topic. |
createdAt
This method is used to get date on which the topic is created.
Syntax: @property (nonatomic, readonly) NSDate *createdAt
topicId
This method is used to get topic Id.
Syntax: @property (nonatomic, readonly) NSString *topicId
Return Value: Returns the ID for the topic.
name
This method is used to get the topic name.
Syntax: @property (nonatomic, readonly) NSString *name
getTitle
This method is used to get the topic title.
Syntax: public String getTitle()
Return Value: Returns the topic title.
group
This method is used to get the topic’s group.
Syntax: @property (nonatomic, readonly) NSString *group
isSubscribed
This method is used to verify whether the current user is subscribed to the topic.
Syntax: @property (nonatomic, readonly) BOOL isSubscribed
desc
This method is used to get topic description.
Syntax: @property (nonatomic, readonly) NSString *desc
Return Type: Returns description of a topic.
ICThread
This class exposes the thread data from RTM and Push channels in a generalized form. It is also used to send Real-Time Messages from an application to the IMIconnect platform.
Property | Description |
---|---|
@property (nonatomic, readonly) NSString *threadId; | The thread id. |
@property (nonatomic) NSString *title; | The thread title. |
@property (nonatomic, readonly) NSDate *createdAt; | The thread creation date. |
@property (nonatomic, readonly) NSDate *updatedAt; | The update date of the thread. |
@property (nonatomic) ICThreadType type; | The thread type. |
@property (nonatomic, readonly) ICThreadStatus status; | The thread status. |
@property (nonatomic) NSString *category; | The thread category. |
@property (nonatomic) NSString *externalId; | The external id. |
@property (nonatomic) NSMutableDictionary *extras; | The thread extras. |
ICMessageData
transactionId
This method is used to retrieves the message’s transactionId.
Syntax: - (NSString *)transactionId
Return Value: Returns the transaction id.
status
This method is used to retrieves the message's status.
Syntax: - (ICMessageStatus)status
Return Value: Returns the status of the message.
date
This method is used to retrieves the date to be displayed in the inbox or in the conversation.
Syntax: - (NSDate *)date
Return Value: Returns the date that will be displayed.
isOutgoing
This method is used to informs if the message is outgoing or not.
Syntax: - (BOOL)isOutgoing
Return Value: Returns 'YES' if the message is outgoing, 'NO' otherwise.
thread
This method is used to retrieves the thread associated with the message
Syntax: (ICThread *)thread
Return Value: Returns the message’s thread.
type
This method is used to retrieves the message type.
Syntax: - (ICMessageType)type
Return Value: Returns the message’s type.
ICMessageSynchronizer.java
setPolicy
This method allows to set the policy object which describes the extent of data to be synchronized.
Syntax: + (void)setPolicy:(ICMessageSynchronizationPolicy *)policy
parameter:
Parameter | Type | Description |
---|---|---|
policy | ICMessageSynchronizationPolicy | message synchronization policy object. |
ICMessageSynchronizationPolicy.java
Property | Description |
---|---|
@property (nonatomic) ICMessageSynchronizationMode mode | The mode of synchronization. |
@property (nonatomic) NSInteger maxThreads | The maximum number of threads that will be synchronized at once |
@property (nonatomic) NSInteger maxMessagesPerThread | The maximum number of messages that will be synchronized per thread |
init
This method instantiates a new policy
Syntax: (instancetype)initWithMode:(ICMessageSynchronizationMode)mode maxThreads:(NSInteger)maxThreads maxMessagesPerThread:(NSInteger)maxMessagesPerThread
parameter:
Parameter | Type | Description |
---|---|---|
mode | ICMessageSynchronizationMode | The synchronization mode |
maxThreads | NSInteger | maximum number of threads which will be synchronized. |
maxMessagesPerThread | NSInteger | maximum number of messages per thread which will be synchronized |
ICMessageStore
This protocol defines the methods used to persist and retrieve data from an underlying data storage mechanism. A default secure implementation will be provided by the SDK, but developers may also choose to provide their own implementation.
Methods |
---|
deleteAll deleteMessage deleteThread numberOfMessages numberOfThreads loadMessage loadMessages loadThread loadThreads saveMessage saveMessages saveThread saveThreads |
deleteAll
This method deletes complete threads & messages
Syntax: - (BOOL)deleteAll
Return Value: Returns 'true' if deletion completes, 'false' Otherwise.
deleteMessage
This method deletes complete threads & messages
Syntax: - (BOOL)deleteMessageWithTransactionId:(NSString *)transactionId
Parameters:
Parameter | Type | Description |
---|---|---|
transactionId | NSString | The transactionId to be deleted from local storage |
Return Value: Returns true
if delete message completes, false
Otherwise.
deleteThread
This method allows to delete single {@link ICThread} from local storage based on threadId.
Syntax: - (BOOL)deleteThreadWithThreadId:(NSString *)threadId
Parameters:
Parameter | Type | Description |
---|---|---|
threadId | NSString | The threadId is deleted from local storage |
Return Value: Returns true
if delete thread completes, false
Otherwise.
numberOfMessages :
This method provides a count of messages from local storage based on threadId.
Syntax: - - (int)numberOfMessagesForThreadId:(NSString *)threadId
Parameters:
Parameter | Type | Description |
---|---|---|
Returns count of threads | NSString | The threadId to be fetched count from local storage |
Return Value: Returns count of messages.
numberOfThreads
This method provides total number of threads count from local storage.
Syntax: - (int)numberOfThreads
Return Value: Returns count of threads.
loadMessage
This method loads single {@link ICMessage} from local storage based on transactionId.
Syntax: - (ICMessage *)loadMessageWithTransactionId:(NSString *)transactionId
Parameters:
Parameter | Type | Description |
---|---|---|
transactionId | NSString | The transactionId to be retrieved from local storage |
Return Value: {@link ICMessage} instance if message exists with transactionId.
loadMessages
***This method Loads {@link ICMessage} from local storage based on threadId and submitted date with a specific limit
Syntax: - (NSArray *)loadMessagesWithThreadId:(NSString *)threadId submittedBefore:(NSDate *)submittedBefore submittedAfter:(NSDate *)submittedAfter limit:(int)limit
Parameters:
Parameter | Type | Description |
---|---|---|
threadId | NSString | The threadId to be retrieved from local storage |
submittedBefore | NSDate | The submittedBefore to be used to fetch messages before submittedBefore from local storage |
submittedAfter | NSDate | The submittedAfter to be used to fetch messages after submittedAfter from local storage |
limit | int | The limit to be used to fetch limited number of messages from local storage |
Return Value: Array of {@link ICMessage} instance if message exists with threadId.
loadThread
This method loads single {@link ICThread} from local storage based on threadId
Syntax: - (ICThread *)loadThreadWithThreadId:(NSString *)threadId
Parameters:
Parameter | Type | Description |
---|---|---|
threadId | NSString | The threadId to be retrieved from local storage |
Return Value: Returns {@link ICThread} instance if thread exists with threadId.
loadThreads
This method Loads {@link ICThread}s from local storage based date modifiedBefore with the specific limit
Syntax: - (NSArray *)loadThreadsUpdatedBeforeDate:(NSDate *)updatedBefore updatedAfter:(NSDate *)updatedAfter limit:(int)limit
Parameters:
Parameter | Type | Description |
---|---|---|
updatedBefore | NSDate | the updatedBefore to be used to fetch threads modified before from local storage |
updatedAfter | NSDate | the updatedAfter to be used to fetch threads modified after from local storage |
limit | int | the limit to be used to fetch limited number of threads from local storage |
Return Value: Returns array of {@link ICThread}s instance if threads exists between before & after modified date with limit.
loadThreads
This method Loads {@link ICThread}s from local storage based date modifiedBefore with specific limit
Syntax: - (NSArray *)loadThreadsUpdatedBeforeDate:(NSDate *)updatedBefore limit:(int)limit
Parameters:
Parameters | Type | Description |
---|---|---|
updatedBefore | NSDate | The updatedBefore to be used to fetch threads modified before from local storage |
limit | int | The limit to be used to fetch limited number of threads from local storage |
Return Value: Returns array of {@link ICThread}s instance if threads exists before modified date with limit.
saveMessage
This method saves single {@link ICMessage}
Syntax: - (BOOL)saveMessage:(ICMessage *)message
Parameters:
Parameters | Type | Description |
---|---|---|
Message | ICMessage | The {@link ICMessage} to be saved |
Return Value: Return true
if message storage completes, false
Otherwise
saveMessages
This method saves multiple {@link ICMessage}s
Syntax: - (BOOL)saveMessages:(NSArray *)messages
Parameters:
Parameters | Type | Description |
---|---|---|
Messages | NSArray | The array of {@link ICMessage}s to be saved |
Return Value: Return true
if message storage completes, false
Otherwise.
saveThread
This method saves single {@link ICThread}
Syntax: - (BOOL)saveThread:(ICThread *)thread
Parameters:
Parameters | Type | Description |
---|---|---|
thread | ICThread | The {@link ICThread} to be saved |
Return Value: Return true
if thread storage completes, false
Otherwise.
saveThreads
This method saves multiple {@link ICMessage}s
Syntax: - BOOL)saveThreads:(NSArray *)threads
Parameters:
Parameters | Type | Description |
---|---|---|
threads | NSArray | The array of {@link ICThread}s to be saved |
Return Value: Return true
if thread storage completes, false
Otherwise.
ICDefaultMessageStore
This class provides a default secure ICMessageStore
implementation which enables out of the box data persistence support.
Syntax: - (instancetype)initWithPassword:(NSString *)password
Parameters:
Parameter | Type | Description |
---|---|---|
password | NSString | Specifies a password to secure the database. |
Updated almost 2 years ago