CA Mobile App Services (CA MAS) Features

Built for organizations that require secure messaging, storage and data sharing.

Messaging

Messaging is at the heart of every social mobile app. With CA Mobile App Services (CA MAS), you can create collaborative apps with secure, reliable messaging.

  • Out-of-the-box messaging between users from your enterprise identity provider
  • Security is woven into the app fabric for data at rest and in motion
  • Reliable message delivery and end-to-end security by the service and SDKs
  • Extensible and customizable using CA Mobile API Gateway administrative tool

 

Learn more about messaging and get code samples

Implementation Highlights

MAS Messaging is implemented using the MQTT protocol. Why MQTT? It is lightweight and simple for constrained communication environments like IoT. Not to mention it has a small code footprint where network bandwidth is at a premium.

Code Sample

All of the backend complexity is abstracted away, so your interaction with the SDK looks simply like this:

 

Send Messages

    //Authenticated users have the ability to send messages (Text, Data, Image) to a user

MASUser *myUser = [MASUser currentUser];
MASUser *userB = Some user retrieved from the server

[myUser sendMessage:@"Hello World" toUser:userB completion:^(BOOL success, NSError * _Nullable error) {
    
    NSLog(@"Message Sent : %@\nerror : %@", success ? @"YES":@"NO", error);
}];
    //Authenticated users can send messages (Text, Data, Image) to a user on a specific topic

MASUser *myUser = [MASUser currentUser];
MASUser *userB = Some user retrieved from the server

//
// Get image from App Bundle
//
NSString* filePath = [[NSBundle mainBundle] pathForResource:@"image" ofType:@"jpg"];
NSData *message = [NSData dataWithContentsOfFile:filePath];

//
// Create MASMessage object
//
MASMessage *messageImage = [[MASMessage alloc] initWithPayloadData:message contentType:@"image/jpeg"];
//
// Send Message to Recipient
//
[myUser sendMessage:messageImage toUser:userB onTopic:@"vacations" completion:^(BOOL success, NSError * _Nullable error) {
    
    NSLog(@"Message Sent : %@\nerror : %@", success ? @"YES":@"NO", error);
}];

More code samples:

Learn more about messaging and get code samples

Implementation Highlights

MAS Messaging is implemented using the MQTT protocol. Why MQTT? It is lightweight and simple for constrained communication environments like IoT. Not to mention it has a small code footprint where network bandwidth is at a premium.

Code Sample

All of the backend complexity is abstracted away, so your interaction with the SDK looks simply like this:

 

Send Messages

    //Authenticated users have the ability to send messages (Text, Data, Image) to a user

MASUser *myUser = [MASUser currentUser];
MASUser *userB = Some user retrieved from the server

[myUser sendMessage:@"Hello World" toUser:userB completion:^(BOOL success, NSError * _Nullable error) {
    
    NSLog(@"Message Sent : %@\nerror : %@", success ? @"YES":@"NO", error);
}];
    //Authenticated users can send messages (Text, Data, Image) to a user on a specific topic

MASUser *myUser = [MASUser currentUser];
MASUser *userB = Some user retrieved from the server

//
// Get image from App Bundle
//
NSString* filePath = [[NSBundle mainBundle] pathForResource:@"image" ofType:@"jpg"];
NSData *message = [NSData dataWithContentsOfFile:filePath];

//
// Create MASMessage object
//
MASMessage *messageImage = [[MASMessage alloc] initWithPayloadData:message contentType:@"image/jpeg"];
//
// Send Message to Recipient
//
[myUser sendMessage:messageImage toUser:userB onTopic:@"vacations" completion:^(BOOL success, NSError * _Nullable error) {
    
    NSLog(@"Message Sent : %@\nerror : %@", success ? @"YES":@"NO", error);
}];

More code samples:

User Management

Seamlessly integrate your app with an existing enterprise user directory. Whether an address book or contacts app, you need to easily access users and groups in IDPs without managing those objects yourself. 

  • Standards-based APIs
  • IDP-independent app development
  • Ability to control the user data that gets externalized
  • App-level access control and real-time access revocation
 

Learn more about user management and get code samples

Implementation Highlights

MAS User and Group Management implements the SCIM 2.0 specification. Why SCIM? SCIM emphasizes simplicity of development and integration, while applying existing authentication, authorization, and privacy models.

iOS: User and Group Management

Code Samples

All of this complexity is abstracted away so your interaction with the SDK looks simply like this:

 

Retrieve a user by username:

    //Retrieve a MASUser object that matches the given userName
[MASUser getUserByUserName:sampleUserName completion:^(MASUser *user, NSError *error) {

  //your code here            
}];

Retrieve a user by id:

    //Retrieve a MASUser object that matches the given objectId
[MASUser getUserByObjectId:sampleUserObjectId completion:^(MASUser *user, NSError *error) {
  
  //your code here            
}];

More code samples:

Learn more about user management and get code samples

Implementation Highlights

MAS User and Group Management implements the SCIM 2.0 specification. Why SCIM? SCIM emphasizes simplicity of development and integration, while applying existing authentication, authorization, and privacy models.

iOS: User and Group Management

Code Samples

All of this complexity is abstracted away so your interaction with the SDK looks simply like this:

 

Retrieve a user by username:

    //Retrieve a MASUser object that matches the given userName
[MASUser getUserByUserName:sampleUserName completion:^(MASUser *user, NSError *error) {

  //your code here            
}];

Retrieve a user by id:

    //Retrieve a MASUser object that matches the given objectId
[MASUser getUserByObjectId:sampleUserObjectId completion:^(MASUser *user, NSError *error) {
  
  //your code here            
}];

More code samples:

Private Cloud Storage

Many enterprise apps need to securely store data in a private cloud. This is perfect for sharing data across devices. For example, you can share data on an Android phone with an iOS tablet. With CA MAS, you can store, manage and access data in a private cloud.

 

Learn more about private cloud storage and get code samples

Implementation Highlights

You can access data in the private cloud by user, application, or user within application.

Code Samples

All of the backend security is abstracted away so your interaction with the SDK looks simply like this:

 

Save an object to cloud storage:
Any object conforming to the NSObject from the Apple’s Foundation library can be saved into the cloud storage.

    - (void)saveObjectMethod
{
    NSObject *myObject = [[NSObject alloc] init];
    NSString *key = @"someKey";
    NSString *type = @"objectType";

    //
    // Save object to Cloud Storage
    //
    [MASCloudStorage saveObject:myObject withKey:key type:type mode:MASCloudStorageSegmentApplication completion:^(BOOL success, NSError *error) {
        
        //Your code here
    }];
}

Find an object from cloud storage:

    - (void)findObjectMethod
{
    //
    // Find Cloud Storage Data
    //
    [MASCloudStorage findObjectUsingKey:key mode:MASCloudStorageSegmentApplication completion:(void (^)(MASObject *object, NSError *error))completion; {
        
        //Your code here
    }];
}

More code samples:

Learn more about private cloud storage and get code samples

Implementation Highlights

You can access data in the private cloud by user, application, or user within application.

Code Samples

All of the backend security is abstracted away so your interaction with the SDK looks simply like this:

 

Save an object to cloud storage:
Any object conforming to the NSObject from the Apple’s Foundation library can be saved into the cloud storage.

    - (void)saveObjectMethod
{
    NSObject *myObject = [[NSObject alloc] init];
    NSString *key = @"someKey";
    NSString *type = @"objectType";

    //
    // Save object to Cloud Storage
    //
    [MASCloudStorage saveObject:myObject withKey:key type:type mode:MASCloudStorageSegmentApplication completion:^(BOOL success, NSError *error) {
        
        //Your code here
    }];
}

Find an object from cloud storage:

    - (void)findObjectMethod
{
    //
    // Find Cloud Storage Data
    //
    [MASCloudStorage findObjectUsingKey:key mode:MASCloudStorageSegmentApplication completion:(void (^)(MASObject *object, NSError *error))completion; {
        
        //Your code here
    }];
}

More code samples:

Pub/Sub

Create notifications and event-based apps, like IoT apps for smart homes, healthcare, travel and hospitality, retail, and automotive.The Pub/Sub paradigm is perfect for reactive IoT apps, where data and events are propagated to other systems in near real time.

  • Security is woven into the app fabric for data at rest and in motion
  • Reliable message delivery and end-to-end security by the service and SDKs
  • Extensible and customizable using CA Mobile API Gateway administrative tools
 

Learn more about Pub/Sub and get code samples

Implementation Highlights

The Pub/Sub paradigm is a part of MAS Messaging, and is implemented using the MQTT protocol. Why MQTT? It is lightweight and simple for constrained communication environments such as IoT. Not to mention it has a small code footprint where network bandwidth is at a premium.

If you watch your app data move through MAS Messaging, it would look something like the diagram below. Where communications and security are handled on the CA Mobile API Gateway.

Code Samples

All of the backend complexity is abstracted away, so your interaction with the SDK looks simply like this:

 

Enable Pub/Sub

    - (void)viewDidLoad
{
    [super viewDidLoad];
    
    //
    //Creating a new MQTT client
    //
    MASMQTTClient *client = [[MASMQTTClient alloc] initWithClientId:@"myClientID" cleanSession:YES];
    
    
    //
    //Connecting the mqtt client to a host
    //
    [client connectWithHost:@"mas.ca.com" withPort:8883 enableTLS:YES completionHandler:^(MQTTConnectionReturnCode code) {
        
        //Your code here
    }];
    
    
    //
    //Handling messages that arrive
    //
    [client setMessageHandler:^(MASMQTTMessage *message) {
        
        //Your code here
    }];
    
    
    //
    //Subscribing to a topic
    //
    [client subscribeToTopic:@"caTopic" withQos:ExactlyOnce completionHandler:^(NSArray *grantedQos) {
        
        //Your code here
    }];
    
    
    //
    //Publishing a message to a topic
    //
    [client publishString:@"Hello World" toTopic:@"caTopic" withQos:ExactlyOnce retain:YES completionHandler:^(int mid) {
        
        //Your code here
    }];
}

More code samples:

Learn more about Pub/Sub and get code samples

Implementation Highlights

The Pub/Sub paradigm is a part of MAS Messaging, and is implemented using the MQTT protocol. Why MQTT? It is lightweight and simple for constrained communication environments such as IoT. Not to mention it has a small code footprint where network bandwidth is at a premium.

If you watch your app data move through MAS Messaging, it would look something like the diagram below. Where communications and security are handled on the CA Mobile API Gateway.

Code Samples

All of the backend complexity is abstracted away, so your interaction with the SDK looks simply like this:

 

Enable Pub/Sub

    - (void)viewDidLoad
{
    [super viewDidLoad];
    
    //
    //Creating a new MQTT client
    //
    MASMQTTClient *client = [[MASMQTTClient alloc] initWithClientId:@"myClientID" cleanSession:YES];
    
    
    //
    //Connecting the mqtt client to a host
    //
    [client connectWithHost:@"mas.ca.com" withPort:8883 enableTLS:YES completionHandler:^(MQTTConnectionReturnCode code) {
        
        //Your code here
    }];
    
    
    //
    //Handling messages that arrive
    //
    [client setMessageHandler:^(MASMQTTMessage *message) {
        
        //Your code here
    }];
    
    
    //
    //Subscribing to a topic
    //
    [client subscribeToTopic:@"caTopic" withQos:ExactlyOnce completionHandler:^(NSArray *grantedQos) {
        
        //Your code here
    }];
    
    
    //
    //Publishing a message to a topic
    //
    [client publishString:@"Hello World" toTopic:@"caTopic" withQos:ExactlyOnce retain:YES completionHandler:^(int mid) {
        
        //Your code here
    }];
}

More code samples:

Ad Hoc Groups

Access users and groups from different enterprise identity providers like LDAP, MSAD, and others. Whether an address book or contacts app, you need to easily access users and groups in IDPs without managing those objects yourself. Also, many apps need to create groups on the fly, and store data in a separate and parallel datastores to the IDP. These are all critical requirements for social and collaborative apps.

  • Standards-based APIs
  • IDP-independent app development
  • Control the user data that gets externalized
  • App-level access control and realtime access revocation
 

Learn more about ad hoc groups and get code samples

Implementation Highlights

MAS User and Group Management implements the SCIM 2.0 specification. Why SCIM? SCIM emphasizes simplicity of development and integration, while applying existing authentication, authorization, and privacy models.

Code Samples

All of this complexity is abstracted away so your interaction with the SDK looks simply like this:

 

Get all adhoc groups:

    //Retrieve all groups in Identity Management system
[MASGroup getAllGroupsWithCompletion:^(NSArray *groupList, NSError *error, NSUInteger totalResults){
	
	//your code here
}];

Create an adhoc group:

    //
//Creating MASGroup instance variable
//
MASGroup *newGroup = [MASGroup group];

//
//Adding data to the group
//
newGroup.groupName = @"My first Group";

//
//Saving the Group into the cloud
//
[newGroup saveInBackgroundWithCompletion:^(MASGroup *group, NSError *error) {

    //your code here
}];

Add a user to an adhoc group:

    //
//Getting a MASGroup instance
//
MASGroup *someGroup = //Some group retrieved from the cloud

//
//Getting a MASUser instance
//
MASUser *someUser = //Some user retrieved from the cloud

//
//Adding the User into the Group
//
[someGroup addMember:someUser completion:^(MASGroup *group, NSError *error) {
        
   //your code here
}];

Remove a user from an adhoc group:

    //
//Getting a MASGroup instance
//
MASGroup *someGroup = //Some group retrieved from the cloud

//
//Getting a MASUser instance
//
MASUser *someUser = //Some user retrieved from the cloud

//
//ARemoving the User from the Group
//
[someGroup removeMember:someUser completion:^(MASGroup *group, NSError *error) {
   //your code here
}];

Delete an adhoc group:

    MASGroup *thisGroup = retrieve the group to delete;

//Delete the group
[thisGroup deleteInBackgroundWithCompletion:^(BOOL success, NSError *error) {

	//your code here
}];

More code samples:

Learn more about ad hoc groups and get code samples

Implementation Highlights

MAS User and Group Management implements the SCIM 2.0 specification. Why SCIM? SCIM emphasizes simplicity of development and integration, while applying existing authentication, authorization, and privacy models.

Code Samples

All of this complexity is abstracted away so your interaction with the SDK looks simply like this:

 

Get all adhoc groups:

    //Retrieve all groups in Identity Management system
[MASGroup getAllGroupsWithCompletion:^(NSArray *groupList, NSError *error, NSUInteger totalResults){
	
	//your code here
}];

Create an adhoc group:

    //
//Creating MASGroup instance variable
//
MASGroup *newGroup = [MASGroup group];

//
//Adding data to the group
//
newGroup.groupName = @"My first Group";

//
//Saving the Group into the cloud
//
[newGroup saveInBackgroundWithCompletion:^(MASGroup *group, NSError *error) {

    //your code here
}];

Add a user to an adhoc group:

    //
//Getting a MASGroup instance
//
MASGroup *someGroup = //Some group retrieved from the cloud

//
//Getting a MASUser instance
//
MASUser *someUser = //Some user retrieved from the cloud

//
//Adding the User into the Group
//
[someGroup addMember:someUser completion:^(MASGroup *group, NSError *error) {
        
   //your code here
}];

Remove a user from an adhoc group:

    //
//Getting a MASGroup instance
//
MASGroup *someGroup = //Some group retrieved from the cloud

//
//Getting a MASUser instance
//
MASUser *someUser = //Some user retrieved from the cloud

//
//ARemoving the User from the Group
//
[someGroup removeMember:someUser completion:^(MASGroup *group, NSError *error) {
   //your code here
}];

Delete an adhoc group:

    MASGroup *thisGroup = retrieve the group to delete;

//Delete the group
[thisGroup deleteInBackgroundWithCompletion:^(BOOL success, NSError *error) {

	//your code here
}];

More code samples:

Local Storage

Store, manage, and access data on your local device with enterprise-grade encryption.

Some apps need to store data locally on a device (like emails) when the user is not connected to the network. You can also store data by user, by application, or user within application.

 

 

 

 

Learn more about local storage and get code samples

Implementation Highlights

By default, local storage is encrypted and decrypted. However, you can easily disable it if your app doesn’t require it.

Code Samples

Your interaction with the SDK looks like this:

 

Save an object to local storage using encryption:

Using encryption, saves any object conforming to the NSObjectfrom the Apple’s Foundation library. It uses a password, that is set by parameter in the method, to encrypt the object before saving it in the local storage.

    - (void)saveEncryptedObjectMethod
{
    NSObject *myObject = [[NSObject alloc] init];
    NSString *key = @"someKey";
    NSString *type = @"objectType";

    //
    // Save object to Local Storage
    //
    [MASLocalStorage saveObject:myObject withKey:key type:type mode:MASLocalStorageSegmentApplication password:@"S0m3Pwd!" completion:^(BOOL success, NSError *error) {

        
        //Your code here
    }];
}

Get all objects from local storage:

    - (void)findObjectsMethod
{
    //
    // Find all Local Storage Data by Mode
    //
    [MASLocalStorage findObjectsUsingMode:MASLocalStorageSegmentApplication completion:^(NSArray *objects, NSError *error) {
        
        //Your code here
    }];
}

More code samples:

Learn more about local storage and get code samples

Implementation Highlights

By default, local storage is encrypted and decrypted. However, you can easily disable it if your app doesn’t require it.

Code Samples

Your interaction with the SDK looks like this:

 

Save an object to local storage using encryption:

Using encryption, saves any object conforming to the NSObjectfrom the Apple’s Foundation library. It uses a password, that is set by parameter in the method, to encrypt the object before saving it in the local storage.

    - (void)saveEncryptedObjectMethod
{
    NSObject *myObject = [[NSObject alloc] init];
    NSString *key = @"someKey";
    NSString *type = @"objectType";

    //
    // Save object to Local Storage
    //
    [MASLocalStorage saveObject:myObject withKey:key type:type mode:MASLocalStorageSegmentApplication password:@"S0m3Pwd!" completion:^(BOOL success, NSError *error) {

        
        //Your code here
    }];
}

Get all objects from local storage:

    - (void)findObjectsMethod
{
    //
    // Find all Local Storage Data by Mode
    //
    [MASLocalStorage findObjectsUsingMode:MASLocalStorageSegmentApplication completion:^(NSArray *objects, NSError *error) {
        
        //Your code here
    }];
}

More code samples:

CA Mobile API Gateway (CA MAG) Features

A secure mobile backend that integrates systems and allows control over which users, devices and applications can access your APIs.

CA Mobile App Services is an extension of CA Mobile API Gateway that provides powerful features through SDKs and APIs for developers to help accelerate the app development process.

Secure API calls

Protect APIs with Mutual TLS and control API access on application, user and device level.

Authentication

Implement authentication with username/password, Facebook, Google, Twitter sign-in.

Second Factor Auth

Secure critical APIs with One Time Password.

Single Sign-On

Share user credentials between your apps without coding effort.

Enterprise Browser

Extend single sign on session to web applications.

Proximity Login

Transfer user session between devices and platforms.

Contacto
Contáctenos 1-800-225-5224
Contáctenos

Chat with CA

Just give us some brief information and we'll connect you to the right CA ExpertCA sales representative.

Our hours of availability are 8AM - 5PM CST.

All Fields Required

connecting

We're matching your request.

Unfortunately, we can't connect you to an agent. If you are not automatically redirected please click here.

  • {{message.agentProfile.name}} will be helping you today.

    View Profile


  • Transfered to {{message.agentProfile.name}}

    {{message.agentProfile.name}} joined the conversation

    {{message.agentProfile.name}} left the conversation

  • Your chat with {{$storage.chatSession.messages[$index - 1].agentProfile.name}} has ended.
    Thank you for your interest in CA.


    Rate Your Chat Experience.

    {{chat.statusMsg}}

agent is typing