App Making Made Simple.

With an MBaaS toolset that makes any backend task simple to set up and easy to manage.

Codeless, serverless, and API service solutions for your mobile backend needs.

All Your APIs in One Place

If your APIs are scattered across different platforms, your team is not developing as efficiently as it could be. Code can easily be lost on outside servers or old employee accounts, and compartmentalization makes redundant coding common. Learn how Backendless solves these problems by managing and housing all your APIs in one place.

Learn More
Intuitive User Management

Managing a growing user base is a constant challenge. Successful user management today means multiple authentication options including social login, session control and concurrent login rules, automated user data validation, and the ability to enable and disable users at will. Learn how Backendless gives you these abilities and more.

Learn More
Real-Time Messaging for a Real-Time World

Anything less than real-time data and messaging means your users – and therefore your app – are falling behind. Your users interact with your app in real-time, so the app should interact with them in real-time as well. Learn how the Backendless mobile backend-as-a-service (MBaaS) brings real-time data to every app we support.

Learn More
Tap Into Your Existing Data

Established businesses that started in the pre-mobile era may rely on enterprise and legacy systems such as relational databases, ERP and SCM applications. These systems are not as mobile-friendly, however. As you develop your mobile strategy, it is necessary to find a way to retrospectively integrate your existing enterprise data and workflows with the new generation of mobile and web applications. Learn how Backendless makes your legacy data mobile.

Learn More
Location, Location, Location

The market for location-aware apps has never been larger thanks to the proliferation of the gig economy. Whether you’re looking to build an app that offers users the ability to perform services local to them or if you want an app that supports businesses with a local presence or mobile workforce, geolocation is a necessity. Learn how Backendless brings the power of location to your backend.

Learn More
It's Always Your Data

You’re in the business of developing a product and delivering it to your customers. You’re NOT in the business of server management, and you shouldn’t have to be. Server maintenance, security, scaling, threading, load balancing… leave these to the experts at Backendless so you can focus on growing your business. Learn how Backendless makes hosting secure, scalable, and affordable.

Learn More
API YOU WILL LOVE TO USE

For Developers, By Developers

Our APIs are designed and implemented with love and care. Our goal is to make your development experience as enjoyable as possible. Backends can be boring, our APIs make them fun. Please enjoy!

User Service API
Database API
Files API
Real-Time Messaging
Geolocation API
Push Notifications
Data Caching API
Atomic Counters API
Email Marketing
.NET
JAVA
KOTLIN
OBJECTIVE-C
SWIFT
DART
REST
Codeless
Backendless.InitApp( YOUR-APP-ID, YOUR-DOTNET-API-KEY );

// ************************************************************
// USER REGISTRATION
// ************************************************************
BackendlessUser newUser = new BackendlessUser();
newUser.Email = "demouser@somedomain.com";
newUser.Password = "p@ssw0rd!";
await Backendless.UserService.RegisterAsync( newUser );

// ************************************************************
// USER LOGIN
// ************************************************************
var username = "demouser@somedomain.com";
var password = "p@ssw0rd!";
var stayLoggedIn = true;
await Backendless.UserService.LoginAsync( username, password, stayLoggedIn );
Backendless.initApp( context, YOUR_APP_ID, YOUR_API_KEY );

// ************************************************************
// USER REGISTRATION
// ************************************************************
BackendlessUser newUser = new BackendlessUser();
newUser.setEmail( "demouser@somedomain.com" );
newUser.setPassword( "p@ssw0rd" );
Backendless.UserService.register( newUser );

// ************************************************************
// USER LOGIN
// ************************************************************
String username = "demouser@somedomain.com";
String password = "p@ssw0rd";
boolean stayLoggedIn = true;
Backendless.UserService.login( username, password, stayLoggedIn );
Backendless.initApp(context, YOUR_APP_ID, YOUR_API_KEY)

// ************************************************************
// USER REGISTRATION
// ************************************************************
val newUser = BackendlessUser()
newUser.email = "demouser@somedomain.com"
newUser.password = "p@ssw0rd"
Backendless.UserService.register(newUser)

// ************************************************************
// USER LOGIN
// ************************************************************
val username = "demouser@somedomain.com"
val password = "p@ssw0rd"
val stayLoggedIn = true
Backendless.UserService.login(username, password, stayLoggedIn)
[Backendless.shared initAppWithApplicationId:YOUR_APP_ID apiKey:YOUR_IOS_API_KEY];
    
// ************************************************************
// USER REGISTRATION
// ************************************************************
    
BackendlessUser *newUser = [BackendlessUser new];
newUser.email = @"demouser@somedomain.com";
newUser.password = @"p@ssw0rd!";
[Backendless.shared.userService registerUserWithUser:newUser responseHandler:^(BackendlessUser *registeredUser) {
    // success
} errorHandler:^(Fault *fault) {
    // failure
}];
    
// ************************************************************
// USER LOGIN
// ************************************************************
    
NSString *userName = @"demouser@somedomain.com";
NSString *password = @"p@ssw0rd!";
Backendless.shared.userService.stayLoggedIn = YES;
[Backendless.shared.userService loginWithIdentity:userName password:password responseHandler:^(BackendlessUser *loggedInUser) {
    // success
} errorHandler:^(Fault *fault) {
    // failure
}];
Backendless.shared.initApp(applicationId: YOUR_APP_ID, apiKey: YOUR_IOS_API_KEY)
        
// ************************************************************
// USER REGISTRATION
// ************************************************************
        
let newUser = BackendlessUser()
newUser.email = "demouser@somedomain.com"
newUser.password = "p@ssw0rd!"
Backendless.shared.userService.registerUser(user: newUser, responseHandler: { registeredUser in
    // success
}, errorHandler: { fault in
    // failure
})
        
// ************************************************************
// USER LOGIN
// ************************************************************
        
let userName = "demouser@somedomain.com"
let password = "p@ssw0rd!"
Backendless.shared.userService.stayLoggedIn = true
Backendless.shared.userService.login(identity: userName, password: password, responseHandler: { loggedInUser in
    // success
}, errorHandler: { fault in
   // failure
})
Backendless.initApp( YOUR-APP-ID, YOUR-JS-API-KEY );

// ************************************************************
// USER REGISTRATION
// ************************************************************
var newUser = new Backendless.User();
newUser.email = 'demouser@somedomain.com';
newUser.password = 'p@ssw0rd!';

Backendless.UserService.register( newUser )
 .then( function(registeredUser) {
 })
 .catch( function(error) { 
 });

// ************************************************************
// USER LOGIN
// ************************************************************
var username = 'demouser@somedomain.com';
var password = 'p@ssw0rd!';
var stayLoggedIn = true;

Backendless.UserService.login( username, password, stayLoggedIn )
 .then( function(loggedInUser) {
 })
 .catch( function(error) {  
 });
Backendless.initApp(YOUR_APP_ID, YOUR_ANDROID_API_KEY, YOUR_IOS_API_KEY);

// ************************************************************
// USER REGISTRATION
// ************************************************************
BackendlessUser newUser = BackendlessUser();
newUser.setEmail("demouser@somedomain.com");
newUser.setPassword("p@ssw0rd");
await Backendless.UserService.register(newUser);

// ************************************************************
// USER LOGIN
// ************************************************************
String username = "demouser@somedomain.com";
String password = "p@ssw0rd";
bool stayLoggedIn = true;
await Backendless.UserService.login(username, password, stayLoggedIn);
// ************************************************************
// USER REGISTRATION
// ************************************************************

curl \
  -H Content-Type:application/json \
  -X POST \
  -d '{"name":"James Bond", "password":"p@ssw0rd!", "email":"demouser@somedomain.com"}' \
  -v https://api.backendless.com///users/register

// ************************************************************
// USER LOGIN
// ************************************************************

curl \  
  -H Content-Type:application/json   
  -X POST   
  -d '{"login":"demouser@somedomain.com", "password":"p@ssw0rd!"}'   
  -v https://api.backendless.com///users/login

.NET
JAVA
KOTLIN
OBJECTIVE-C
SWIFT
DART
REST
Codeless
Backendless.InitApp( YOUR-APP-ID, YOUR-DOTNET-API-KEY );

// ***********************************************************************
// SAVE OBJECT IN DB
// ***********************************************************************
Dictionary movieObject = new Dictionary();
movieObject[ "title" ] = "Batman Returns";
movieObject[ "yearReleased" ] = 1992;
movieObject[ "director" ] = "Tim Burton";
await Backendless.Data.Of( "Movies" ).SaveAsync( movieObject );

// ***********************************************************************
// LOAD DATA FROM DB
// ***********************************************************************
DataQueryBuilder queryBuilder = DataQueryBuilder.Create();
queryBuilder.SetWhereClause( "director LIKE 'Tim%' and yearReleased > 2000" );
queryBuilder.AddSortBy( "title" );
queryBuilder.AddRelated( "cast" );
var foundMovies = await Backendless.Data.Of( "Movies" ).FindAsync( queryBuilder );
Backendless.initApp( context, YOUR_APP_ID, YOUR_API_KEY );

// ***********************************************************************
// SAVE OBJECT IN DB
// ***********************************************************************
Map movieObject = new HashMap<>();
movieObject.put( "title", "Batman Returns" );
movieObject.put( "yearReleased", 1992 );
movieObject.put("director", "Tim Burton");
Backendless.Data.of("Movies").save(movieObject);

// ***********************************************************************
// LOAD DATA FROM DB
// ***********************************************************************
DataQueryBuilder queryBuilder = DataQueryBuilder.create();
queryBuilder.setWhereClause("director LIKE 'Tim%' and yearReleased > 2000");
queryBuilder.addSortBy("title");
queryBuilder.addRelated("cast");
List foundMovies = Backendless.Data.of("Movies").find(queryBuilder);
Backendless.initApp(context, YOUR_APP_ID, YOUR_API_KEY)

// ***********************************************************************
// SAVE OBJECT IN DB
// ***********************************************************************
val movieObject = HashMap()
movieObject["title"] = "Batman Returns"
movieObject["yearReleased"] = 1992
movieObject["director"] = "Tim Burton"
Backendless.Data.of("Movies").save(movieObject)

// ***********************************************************************
// LOAD DATA FROM DB
// ***********************************************************************
val queryBuilder = DataQueryBuilder.create()
queryBuilder.whereClause = "director LIKE 'Tim%' and yearReleased > 2000"
queryBuilder.addSortBy("title")
queryBuilder.addRelated("cast")
val foundMovies = Backendless.Data.of("Movies").find(queryBuilder)
[Backendless.shared initAppWithApplicationId:YOUR_APP_ID apiKey:YOUR_IOS_API_KEY];
    
// ***********************************************************************
// SAVE OBJECT IN DB
// ***********************************************************************
    
NSDictionary *movieObject = @{@"title": @"Batman Returns",
                              @"yearReleased": @1992,
                              @"director": @"Tim Burton"};
[[Backendless.shared.data ofTable:@"Movies"] saveWithEntity:movieObject responseHandler:^(NSDictionary *savedMoviewObject) {
    // success
} errorHandler:^(Fault *fault) {
    // failure
}];
    
// ***********************************************************************
// LOAD DATA FROM DB
// ***********************************************************************
    
DataQueryBuilder *queryBuilder = [DataQueryBuilder new];
[queryBuilder setWhereClauseWithWhereClause:@"director LIKE ‘Tim%’ and yearReleased > 2000"];
[queryBuilder addSortBySortBy:@"title"];
[queryBuilder addRelatedWithRelated:@"cast"];
[[Backendless.shared.data ofTable:@"Movies"] findWithQueryBuilder:queryBuilder responseHandler:^(NSArray *foundMovies) {
    // success
} errorHandler:^(Fault *fault) {
    // failure
}];
Backendless.shared.initApp(applicationId: YOUR_APP_ID, apiKey: YOUR_IOS_API_KEY)
        
// ***********************************************************************
// SAVE OBJECT IN DB
// ***********************************************************************
        
let movieObject = ["title": "Batman Returns",
                   "yearReleased": 1992,
                   "director": "Tim Burton"] as [String : Any]
Backendless.shared.data.ofTable("Movies").save(entity: movieObject, responseHandler: { savedMovieObject in
    // success
}, errorHandler: { fault in
    // failure
})
        
// ***********************************************************************
// LOAD DATA FROM DB
// ***********************************************************************
        
let queryBuilder = DataQueryBuilder()
queryBuilder.setWhereClause(whereClause: "director LIKE ‘Tim%’ and yearReleased > 2000")
queryBuilder.addSortBy(sortBy: "title")
queryBuilder.addRelated(related: "cast")
Backendless.shared.data.ofTable("Movies").find(queryBuilder: queryBuilder, responseHandler: { foundMovies in
    // success
}, errorHandler: { fault in
    // failure
})
Backendless.initApp( YOUR-APP-ID, YOUR-JS-API-KEY );

// ***********************************************************************
// SAVE OBJECT IN DB
// ***********************************************************************
var movieObject = {};
movieObject.title = 'Batman Returns';
movieObject.yearReleased = 1992;
movieObject.director = 'Tim Burton';

Backendless.Data.of('Movies').save(movieObject)
 .then(function(savedObject) {

 })
 .catch(function(error) {

 });

// ***********************************************************************
// LOAD DATA FROM DB
// ***********************************************************************
var queryBuilder = new Backendless.DataQueryBuilder();
queryBuilder.setWhereClause('director LIKE \'Tim%\' and yearReleased > 2000');
queryBuilder.setSortBy('title');
queryBuilder.addRelated('cast');

Backendless.Data.of('Movies').find(queryBuilder)
 .then(function(foundMovies) {

 })
 .catch(function(error) {

 });
Backendless.initApp(YOUR_APP_ID, YOUR_ANDROID_API_KEY, YOUR_IOS_API_KEY);

// ***********************************************************************
// SAVE OBJECT IN DB
// ***********************************************************************
Map movieObject = {
  "title": "Batman Returns",
  "yearReleased": 1992,
  "director": "Tim Burton"};
await Backendless.Data.of("Movies").save(movieObject);

// ***********************************************************************
// LOAD DATA FROM DB
// ***********************************************************************
DataQueryBuilder queryBuilder = DataQueryBuilder();
queryBuilder.whereClause = "director LIKE 'Tim%' and yearReleased > 2000";
queryBuilder.addSortBy("title");
queryBuilder.addRelated("cast");
List foundMovies = await Backendless.Data.of("Movies").find(queryBuilder);
// ***********************************************************************
// SAVE OBJECT IN DB
// ***********************************************************************

curl \
-H Content-Type:application/json \
-X POST  \
-d "{\"title\":\"Batman Returns\", \"yearReleased\":1992, \"director\":\"Tim Burton\"}" \
-v https://api.backendless.com///data/Movies

// ***********************************************************************
// LOAD DATA FROM DB
// ***********************************************************************

curl "https://api.backendless.com///data/Person?where=director%20LIKE%20%E2%80%98Tim%25%E2%80%99%20and%20yearReleased%20%3E%202000&sortBy=title&loadRelations=[cast]"
.NET
JAVA
KOTLIN
OBJECTIVE-C
SWIFT
DART
REST
Codeless
Backendless.InitApp( YOUR-APP-ID, YOUR-DOTNET-API-KEY );
 
// ***********************************************************************
// CREATE A REMOTE FILE
// ***********************************************************************
var fileContentsString = “The quick brown fox jumps over the lazy dog”;
var fileBytes = Encoding.ASCII.GetBytes( fileContentsString );
var remoteDirectory = “notes”;
var fileName = “reminder.txt”;
await Backendless.Files.UploadAsync( fileBytes, remoteDirectory, fileName );
 
// ***********************************************************************
// GET DIRECTORY LISTING
// ***********************************************************************
var path = “web”;
var pattern = “*.htm”;
var recursive = true;
var directoryContents = await Backendless.Files.ListingAsync( path, pattern, recursive );
foreach( var fileInfo in directoryContents )
Console.WriteLine( fileInfo.FullName );
Backendless.initApp( context, YOUR_APP_ID, YOUR_API_KEY );

// ***********************************************************************
// CREATE A REMOTE FILE
// ***********************************************************************
String fileContentsString = "The quick brown fox jumps over the lazy dog";
byte[] fileBytes = fileContentsString.getBytes();
String remoteDirectory = "notes";
String fileName = "reminder.txt";
OutputStreamRouter streamRouter = outputStream -> outputStream.write(fileBytes);
Backendless.Files.uploadFromStream( streamRouter, fileName, remoteDirectory );

// ***********************************************************************
// GET DIRECTORY LISTING
// ***********************************************************************
String path = "web";
String pattern = "*.htm";
boolean recursive = true;
List directoryContents = Backendless.Files.listing(path, pattern, recursive);
for (FileInfo fileInfo : directoryContents) {
    System.out.println(fileInfo.getName());
}
Backendless.initApp(context, YOUR_APP_ID, YOUR_API_KEY)

// ***********************************************************************
// CREATE A REMOTE FILE
// ***********************************************************************
val fileContentsString = "The quick brown fox jumps over the lazy dog"
val fileBytes = fileContentsString.toByteArray()
val remoteDirectory = "notes"
val fileName = "reminder.txt"
val streamRouter = OutputStreamRouter { outputStream -> outputStream.write(fileBytes) }
Backendless.Files.uploadFromStream(streamRouter, fileName, remoteDirectory)

// ***********************************************************************
// GET DIRECTORY LISTING
// ***********************************************************************
val path = "web"
val pattern = "*.htm"
val recursive = true
val directoryContents = Backendless.Files.listing(path, pattern, recursive)
directoryContents.forEach {
    println(it.name)
}
[Backendless.shared initAppWithApplicationId:YOUR_APP_ID apiKey:YOUR_IOS_API_KEY];
    
// ***********************************************************************
// CREATE A REMOTE FILE
// ***********************************************************************
    
NSString *fileContentsString = @"The quick brown fox jumps over the lazy dog";
NSData *fileBytes = [fileContentsString dataUsingEncoding:NSASCIIStringEncoding];
NSString *remoteDirectory = @"notes";
NSString *fileName = @"reminder.txt";
[Backendless.shared.file uploadFileWithFileName:fileName filePath:remoteDirectory content:fileBytes responseHandler:^(BackendlessFile *uploadedFile) {
    // success
} errorHandler:^(Fault *fault) {
    // failure
}];
    
// ***********************************************************************
// GET DIRECTORY LISTING
// ***********************************************************************
    
NSString *path = @"web";
NSString *pattern = @"*.htm";
BOOL recursive = YES;
[Backendless.shared.file listingWithPath:path pattern:pattern recursive:recursive responseHandler:^(NSArray *directoryContents) {
    for (BackendlessFileInfo *fileInfo in directoryContents) {
        NSLog(@"%@", fileInfo.name);
    }
} errorHandler:^(Fault *fault) {
    // failure
}];
Backendless.shared.initApp(applicationId: YOUR_APP_ID, apiKey: YOUR_IOS_API_KEY)
        
// ***********************************************************************
// CREATE A REMOTE FILE
// ***********************************************************************
        
let fileContentsString = "The quick brown fox jumps over the lazy dog"
let fileBytes = fileContentsString.data(using: .ascii)!
let remoteDirectory = "notes"
let fileName = "reminder.txt"
let filePath = remoteDirectory + "/" + fileName
Backendless.shared.file.uploadFile(fileName: fileName, filePath: filePath, content: fileBytes, responseHandler: { uploadedFile in
    // success
}, errorHandler: { fault in
    // failure
})
        
// ***********************************************************************
// GET DIRECTORY LISTING
// ***********************************************************************
        
let path = "web"
let pattern = "*.htm"
let recursive = true
Backendless.shared.file.listing(path: path, pattern: pattern, recursive: recursive, responseHandler: { directoryContents in
    for fileInfo in directoryContents {
        print(fileInfo.name ?? "")
    }
}, errorHandler: { fault in
    // failure
})
Backendless.initApp(YOUR-APP-ID, YOUR-JS-API-KEY);
 
// ***********************************************************************
// CREATE A REMOTE FILE
// ***********************************************************************
var fileContentsString = 'The quick brown fox jumps over the lazy dog';
var byteArray = new Blob( [ fileContentsString ] );
var remoteDirectory = 'notes';
var fileName = 'reminder.txt';
var overwrite = true;

Backendless.Files.saveFile( remoteDirectory, fileName, byteArray, overwrite )
 .then( function( savedFileURL ) {
 })
 .catch( function( error ) {
 });

// ***********************************************************************
// GET DIRECTORY LISTING
// ***********************************************************************
var path = 'web';
var pattern = '*.htm';
var recursive = true;

Backendless.Files.listing( path, pattern, recursive )
 .then( function( directoryContents ) {
   directoryContents.forEach( function( fileInfo ) {
     console.log( fileInfo.name );
   })
 })
 .catch( function( error ) {
 });
Backendless.initApp(YOUR_APP_ID, YOUR_ANDROID_API_KEY, YOUR_IOS_API_KEY);

// ***********************************************************************
// CREATE A REMOTE FILE
// ***********************************************************************
String fileContentsString = "The quick brown fox jumps over the lazy dog";
List fileBytes = utf8.encode(fileContentsString);
String remoteDirectory = "notes";
String fileName = "reminder.txt";
await Backendless.Files.uploadFromStream((outputStream) => outputStream.write(fileBytes), fileName, remoteDirectory);

// ***********************************************************************
// GET DIRECTORY LISTING
// ***********************************************************************
String path = "web";
String pattern = "*.htm";
bool recursive = true;
List directoryContents = await Backendless.Files.listing(path, pattern, recursive);
directoryContents.forEach((fileInfo) => print(fileInfo.name));
// ***********************************************************************
// CREATE A REMOTE FILE
// ***********************************************************************
curl -H Content-Type:“multipart/form-data” \
–form upload=@reminder.txt \
-X POST \
-v https://api.backendless.com///files/notes/reminder.txt

// ***********************************************************************
// GET DIRECTORY LISTING
// ***********************************************************************
curl “https://api.backendless.com///files/web?pattern=*.htm&sub=true”
.NET
JAVA
KOTLIN
OBJECTIVE-C
SWIFT
DART
REST
Codeless
Backendless.InitApp( YOUR-APP-ID, YOUR-DOTNET-API-KEY );
 
// ***********************************************************************
// SUBSCRIBE TO RECEIVE MESSAGES
// ***********************************************************************
var channel = Backendless.Messaging.Subscribe( “demoChannel” );
var selector = “importance = ‘high'”;
channel.AddMessageListener( selector,
new MessageReceived( receivedMessage =>
{
Console.WriteLine( $”received – {receivedMessage}” );
}));
 
// ***********************************************************************
// BROADCAST A MESSAGE
// ***********************************************************************
var message = “All your base are belong to us”;
var publishOptions = new PublishOptions();
publishOptions.AddHeader( “importance”, “high” );
await Backendless.Messaging.PublishAsync( message, “demoChannel”, publishOptions );
Backendless.initApp( context, YOUR_APP_ID, YOUR_API_KEY );

// ***********************************************************************
// SUBSCRIBE TO RECEIVE MESSAGES
// ***********************************************************************
Channel channel = Backendless.Messaging.subscribe( "demoChannel" );
String selector = "importance = ‘high'";
channel.addMessageListener( selector, new AsyncCallback() {
    @Override
    public void handleResponse( String receivedMessage ) {
        System.out.println("received - " + receivedMessage);
    }

    @Override
    public void handleFault( BackendlessFault fault ) {
        // Failure
    }
});

// ***********************************************************************
// BROADCAST A MESSAGE
// ***********************************************************************
String message = "All your base are belong to us";
PublishOptions publishOptions = new PublishOptions();
publishOptions.putHeader( "importance", "high" );
Backendless.Messaging.publish( "demoChannel", message, publishOptions );
Backendless.initApp(context, YOUR_APP_ID, YOUR_API_KEY)

// ***********************************************************************
// SUBSCRIBE TO RECEIVE MESSAGES
// ***********************************************************************
val channel = Backendless.Messaging.subscribe("demoChannel")
val selector = "importance = 'high'"
channel.addMessageListener(selector, object : AsyncCallback {
    override fun handleResponse(receivedMessage: String) = println("received - $receivedMessage")
    override fun handleFault(fault: BackendlessFault) { /* Failure */ }
})

// ***********************************************************************
// BROADCAST A MESSAGE
// ***********************************************************************
val message = "All your base are belong to us"
val publishOptions = PublishOptions()
publishOptions.putHeader("importance", "high")
Backendless.Messaging.publish("demoChannel", message, publishOptions)
[Backendless.shared initAppWithApplicationId:YOUR_APP_ID apiKey:YOUR_IOS_API_KEY];
    
// ***********************************************************************
// SUBSCRIBE TO RECEIVE MESSAGES
// ***********************************************************************
    
Channel *channel = [Backendless.shared.messaging subscribeWithChannelName:@"demoChannel"];
NSString *selector = @"importance = 'high'";
RTSubscription *subscription = [channel addStringMessageListenerWithSelector:selector responseHandler:^(NSString *receivedMessage) {
    NSLog(@"received - %@", receivedMessage);
} errorHandler:^(Fault *fault) {
    // failure
}];
    
// ***********************************************************************
// BROADCAST A MESSAGE
// ***********************************************************************
    
NSString *message = @"All your base are belong to us";
PublishOptions *publishOptions = [PublishOptions new];
[publishOptions addHeaderWithName:@"importance" value:@"high"];
[Backendless.shared.messaging publishWithChannelName:@"demoChannel" message:message publishOptions:publishOptions responseHandler:^(MessageStatus *messageStatus) {
    // success
} errorHandler:^(Fault *fault) {
    // failure
}];
Backendless.shared.initApp(applicationId: YOUR_APP_ID, apiKey: YOUR_IOS_API_KEY)
        
// ***********************************************************************
// SUBSCRIBE TO RECEIVE MESSAGES
// ***********************************************************************
        
let channel = Backendless.shared.messaging.subscribe(channelName: "demoChannel")
let selector = "importance = 'high'"
let subscription = channel.addStringMessageListener(selector: selector, responseHandler: { receivedMessage in
    print("received - \(receivedMessage)")
}, errorHandler: { fault in
    // failure
})
        
// ***********************************************************************
// BROADCAST A MESSAGE
// ***********************************************************************
        
let message = "All your base are belong to us"
let publishOptions = PublishOptions()
publishOptions.addHeader(name: "importance", value: "high")
Backendless.shared.messaging.publish(channelName: "demoChannel", message: message, publishOptions: publishOptions, responseHandler: { messageStatus in
    // success
}, errorHandler: { fault in
   // failure
})
Backendless.initApp(YOUR-APP-ID, YOUR-JS-API-KEY);
 
// ***********************************************************************
// SUBSCRIBE TO RECEIVE MESSAGES
// ***********************************************************************
var channel = Backendless.Messaging.subscribe( 'demoChannel' );
var selector = 'importance = \'high\'';

channel.addMessageListener( selector, function( receivedMessage ) {
 console.log( receivedMessage );
});

// ***********************************************************************
// BROADCAST A MESSAGE
// ***********************************************************************
var message = 'All your base are belong to us';
var publishOptions = new Backendless.PublishOptions( { headers: { importance: 'high' } } );

Backendless.Messaging.publish( 'demoChannel', message, publishOptions )
 .then( function( response ) {
 })
 .catch( function( error ) {
 });
Backendless.initApp(YOUR_APP_ID, YOUR_ANDROID_API_KEY, YOUR_IOS_API_KEY);

// ***********************************************************************
// SUBSCRIBE TO RECEIVE MESSAGES
// ***********************************************************************
Channel channel = Backendless.Messaging.subscribe("demoChannel");
String selector = "importance = 'high'";
channel.addMessageListener((receivedMessage) => print("received - $receivedMessage"), selector: selector);

// ***********************************************************************
// BROADCAST A MESSAGE
// ***********************************************************************
String message = "All your base are belong to us";
PublishOptions publishOptions = PublishOptions();
publishOptions.putHeader("importance", "high");
await Backendless.Messaging.publish(message, channelName: "demoChannel", publishOptions: publishOptions);
// ***********************************************************************
// SUBSCRIBE TO RECEIVE MESSAGES
// ***********************************************************************
// Establishing a subscription:
curl -H Content-Type:application/json -X POST -d ‘{}’ \
-v https://api.backendless.com///messaging/demoChannel/subscribe

// Response:
{
“subscriptionId”: “1BA31C04-CDCA-2AC0-FF76-6E6F81101100”
}

// Retrieving messages for the subscription:
curl -X GET
-v https://api.backendless.com///messaging/demoChannel/1BA31C04-CDCA-2AC0-FF76-6E6F81101100

// ***********************************************************************
// BROADCAST A MESSAGE
// ***********************************************************************
curl -H Content-Type:application/json -X POST \
-d ‘{“message”:”All your base are belong to us”, “headers”:{“importance”:”high”}}’ \
-v https://api.backendless.com///messaging/demoChannel
.NET
JAVA
KOTLIN
OBJECTIVE-C
SWIFT
DART
REST
Codeless
Backendless.InitApp( YOUR-APP-ID, YOUR-DOTNET-API-KEY );
 
// ***********************************************************************
// LOAD GEO POINTS
// ***********************************************************************
var geoQuery = new BackendlessGeoQuery();
// search for geopoints in the “restaurants” category
geoQuery.Categories = new List( new string[] {“restaurants”} );
// ….in 1 mile radius
geoQuery.Radius = 1;
geoQuery.Units = Units.MILES;
// ….from this cool location
geoQuery.Latitude = 33.077497;
geoQuery.Longitude = -96.823402;
// ….where location rating is greater than 4 and they serve Italian
geoQuery.WhereClause = “rating > 4 AND cuisine = ‘Italian'”;
var geoPoints = await Backendless.Geo.GetPointsAsync( geoQuery );
foreach( var geoPoint in geoPoints )
Console.WriteLine( $” coordinates are {geoPoint.Latitude}, {geoPoint.Longitude}”);
Backendless.initApp( context, YOUR_APP_ID, YOUR_API_KEY );

// ***********************************************************************
// LOAD GEO POINTS
// ***********************************************************************
BackendlessGeoQuery geoQuery = new BackendlessGeoQuery();
// search for geopoints in the “restaurants” category
geoQuery.setCategories( Arrays.asList( "restaurants" ) );
// ….in 1 mile radius
geoQuery.setRadius( 1.0 );
geoQuery.setUnits( Units.MILES );
// ….from this cool location
geoQuery.setLatitude( 33.077497 );
geoQuery.setLongitude( -96.823402 );
// ….where location rating is greater than 4 and they serve Italian
geoQuery.setWhereClause( "rating > 4 AND cuisine = 'Italian'" );
List geoPoints = Backendless.Geo.getPoints( geoQuery );
for ( GeoPoint geoPoint : geoPoints ) {
    System.out.println(String.format("coordinates are %f, %f", geoPoint.getLatitude(), geoPoint.getLongitude()));
}
Backendless.initApp(context, YOUR_APP_ID, YOUR_API_KEY)

// ***********************************************************************
// LOAD GEO POINTS
// ***********************************************************************
val geoQuery = BackendlessGeoQuery()
// search for geopoints in the “restaurants” category
geoQuery.categories = listOf("restaurants")
// ….in 1 mile radius
geoQuery.radius = 1.0
geoQuery.units = Units.MILES
// ….from this cool location
geoQuery.latitude = 33.077497
geoQuery.longitude = -96.823402
// ….where location rating is greater than 4 and they serve Italian
geoQuery.whereClause = "rating > 4 AND cuisine = 'Italian'"
val geoPoints = Backendless.Geo.getPoints(geoQuery)
geoPoints.forEach {
    println("coordinates are ${it.latitude}, ${it.longitude}")
}
[Backendless.shared initAppWithApplicationId:YOUR_APP_ID apiKey:YOUR_IOS_API_KEY];
    
// ***********************************************************************
// LOAD GEO POINTS
// ***********************************************************************
    
BackendlessGeoQuery *geoQuery = [BackendlessGeoQuery new];
    
// search for geopoints in the "restaurants" category
geoQuery.categories = @[@"restaurants"];
    
// ….in 1 mile radius
geoQuery.radius = @1;
[geoQuery setUnitsWithUnits:UnitsMILES];
    
// ….from this cool location
geoQuery.geoPoint = [[GeoPoint alloc] initWithLatitude:33.077497 longitude:-96.823402];
    
// ….where location rating is greater than 4 and they serve Italian
geoQuery.whereClause = @"rating > 4 AND cuisine = 'Italian'";
    
[Backendless.shared.geo getPointsWithGeoQuery:geoQuery responseHandler:^(NSArray *geoPoints) {
    for (GeoPoint *geoPoint in geoPoints) {
        NSLog(@"coordinates are %f, %f", geoPoint.latitude, geoPoint.longitude);
    }
} errorHandler:^(Fault *fault) {
    // failure
}];
Backendless.sharedInstance()?.initApp(YOUR_APP_ID, apiKey: YOUR_IOS_API_KEY)
        
Backendless.shared.initApp(applicationId: YOUR_APP_ID, apiKey: YOUR_IOS_API_KEY)
        
// ***********************************************************************
// LOAD GEO POINTS
// ***********************************************************************
        
let geoQuery = BackendlessGeoQuery()
        
// search for geopoints in the "restaurants" category
geoQuery.categories = ["restaurants"]
        
// ….in 1 mile radius
geoQuery.radius = 1
geoQuery.setUnits(units: Units.MILES.rawValue)
        
// ….from this cool location
geoQuery.geoPoint = GeoPoint(latitude: 33.077497, longitude: -96.823402)
        
// ….where location rating is greater than 4 and they serve Italian
geoQuery.whereClause = "rating > 4 AND cuisine = 'Italian'"
        
Backendless.shared.geo.getPoints(geoQuery: geoQuery, responseHandler: { geoPoints in
    for geoPoint in geoPoints {
        print("coordinates are \(geoPoint.latitude), \(geoPoint.longitude)")
    }
}, errorHandler: { fault in
    // failure
})
Backendless.initApp(YOUR-APP-ID, YOUR-JS-API-KEY);

// ***********************************************************************
// LOAD GEO POINTS
// ***********************************************************************
var geoQuery = {};

// search for geopoints in the "restaurants" category
geoQuery.categories = [ 'restaurants' ];
// ...in 1 mile radius
geoQuery.radius = 1;
geoQuery.units = Backendless.Geo.UNITS.MILES;
// ...from this cool location
geoQuery.latitude = 33.077497;
geoQuery.longitude = -96.823402;
// ...where location rating is greater than 4 and they serve Italian
geoQuery.whereClause = 'rating > 4 AND cuisine = \'Italian\'';

Backendless.Geo.find( geoQuery )
 .then( function( geoPoints ) {
   geoPoints.forEach( function( point ) {
     console.log(`coordinates are ${ point.latitude }, ${ point.longitude }`)
   })
 })
 .catch( function( error ) {
 });
Backendless.initApp(YOUR_APP_ID, YOUR_ANDROID_API_KEY, YOUR_IOS_API_KEY);

// ***********************************************************************
// LOAD GEO POINTS
// ***********************************************************************
BackendlessGeoQuery geoQuery = BackendlessGeoQuery();
// search for geopoints in the “restaurants” category
geoQuery.categories = ["restaurants"];
// ….in 1 mile radius
geoQuery.radius = 1.0;
geoQuery.units = Units.MILES;
// ….from this cool location
geoQuery.latitude = 33.077497;
geoQuery.longitude = -96.823402;
// ….where location rating is greater than 4 and they serve Italian
geoQuery.whereClause = "rating > 4 AND cuisine = 'Italian'";
List geoPoints = await Backendless.Geo.getPoints(query: geoQuery);
geoPoints.forEach((geoPoint) => print("coordinates are ${geoPoint.latitude}, ${geoPoint.longitude}"));
// ***********************************************************************
// LOAD GEO POINTS
// ***********************************************************************
curl ‘https://api.backendless.com///geo/points?units=MILES&categories=restaurants&r=1&units=MILES&lat=33.077497&lon=-96.823402’
.NET
JAVA
KOTLIN
OBJECTIVE-C
SWIFT
DART
REST
Backendless.InitApp( YOUR-APP-ID, YOUR-DOTNET-API-KEY );

// ***********************************************************************
// SEND A PUSH NOTIFICATION
// ***********************************************************************
PublishOptions publishOptions = new PublishOptions();
publishOptions.AddHeader( "android-ticker-text", "You just got a push notification!" );
publishOptions.AddHeader( "android-content-title", "This is a notification title" );
publishOptions.AddHeader( "android-content-text", "Push Notifications are cool" );
var messageStatus = await Backendless.Messaging.PublishAsync( "Welcome", publishOptions );


// ***********************************************************************
// SEND A PUSH NOTIFICATION WITH A TEMPLATE
// ***********************************************************************
await Backendless.Messaging.PushWithTemplateAsync( "WelcomeTemplate" );
Backendless.initApp( context, YOUR_APP_ID, YOUR_API_KEY );

// ***********************************************************************
// SEND A PUSH NOTIFICATION
// ***********************************************************************
PublishOptions publishOptions = new PublishOptions();
publishOptions.putHeader( "android-ticker-text", "You just got a push notification!" );
publishOptions.putHeader( "android-content-title", "This is a notification title" );
publishOptions.putHeader( "android-content-text", "Push Notifications are cool" );
MessageStatus messageStatus = Backendless.Messaging.publish( "default", "Welcome", publishOptions );

// ***********************************************************************
// SEND A PUSH NOTIFICATION WITH A TEMPLATE
// ***********************************************************************
Backendless.Messaging.pushWithTemplate( "WelcomeTemplate" );
Backendless.initApp(context, YOUR_APP_ID, YOUR_API_KEY)

// ***********************************************************************
// SEND A PUSH NOTIFICATION
// ***********************************************************************
val publishOptions = PublishOptions()
publishOptions.putHeader("android-ticker-text", "You just got a push notification!")
publishOptions.putHeader("android-content-title", "This is a notification title")
publishOptions.putHeader("android-content-text", "Push Notifications are cool")
val messageStatus = Backendless.Messaging.publish("default", "Welcome", publishOptions)

// ***********************************************************************
// SEND A PUSH NOTIFICATION WITH A TEMPLATE
// ***********************************************************************
Backendless.Messaging.pushWithTemplate("WelcomeTemplate")
[Backendless.shared initAppWithApplicationId:YOUR_APP_ID apiKey:YOUR_IOS_API_KEY];
    
// ***********************************************************************
// SEND A PUSH NOTIFICATION
// ***********************************************************************
    
PublishOptions *publishOptions = [PublishOptions new];
[publishOptions addHeaderWithName:@"ios-alert" value:@"Push Notifications are cool"];
[publishOptions addHeaderWithName:@"ios-badge" value:@1];
[publishOptions addHeaderWithName:@"ios-sound" value:@"default"];
[Backendless.shared.messaging publishWithChannelName:@"default" message:@"Welcome" publishOptions:publishOptions responseHandler:^(MessageStatus *messageStatus) {
    // success
} errorHandler:^(Fault *fault) {
    // failure
}];
    
// ***********************************************************************
// SEND A PUSH NOTIFICATION WITH A TEMPLATE
// ***********************************************************************
     
[Backendless.shared.messaging pushWithTemplateWithTemplateName:@"WelcomeTemplate" responseHandler:^(MessageStatus *messageStatus) {
    // success
} errorHandler:^(Fault *fault) {
    // failure
}];
Backendless.shared.initApp(applicationId: YOUR_APP_ID, apiKey: YOUR_IOS_API_KEY)
        
// ***********************************************************************
// SEND A PUSH NOTIFICATION
// ***********************************************************************
        
let publishOptions = PublishOptions()
publishOptions.addHeader(name: "ios-alert", value: "Push Notifications are cool")
publishOptions.addHeader(name: "ios-badge", value: 1)
publishOptions.addHeader(name: "ios-sound", value: "default")
        
Backendless.shared.messaging.publish(channelName: "default", message: "Welcome", publishOptions: publishOptions, responseHandler: { messageStatus in
    // success
}, errorHandler: { fault in
    // failure
})
        
// ***********************************************************************
// SEND A PUSH NOTIFICATION WITH A TEMPLATE
// ***********************************************************************
        
Backendless.shared.messaging.pushWithTemplate(templateName: "WelcomeTemplate", responseHandler: { messageStatus in
    // success
}, errorHandler: { fault in
    // failure
})
Backendless.initApp(YOUR-APP-ID, YOUR-JS-API-KEY);

// ***********************************************************************
// SEND A PUSH NOTIFICATION
// ***********************************************************************
var publishOptions = new Backendless.PublishOptions({
 headers: {
   'android-ticker-text'  : 'You just got a push notification!',
   'android-content-title': 'This is a notification title',
   'android-content-text' : 'Push Notifications are cool',
 }
});

var channelName = 'Welcome';

Backendless.Messaging.publish( channelName, publishOptions )
 .then( function( messageStatus ) {
   console.log( 'message has been published, message status - ' + messageStatus.status );
 })
 .catch( function( error ) {
 });

// ***********************************************************************
// SEND A PUSH NOTIFICATION WITH A TEMPLATE
// ***********************************************************************
var templateName = 'WelcomeTemplate';

Backendless.Messaging.pushWithTemplate( templateName )
 .then( function( messageStatus ) {  
 })
 .catch( function( error ) {
 });
Backendless.initApp(YOUR_APP_ID, YOUR_ANDROID_API_KEY, YOUR_IOS_API_KEY);

// ***********************************************************************
// SEND A PUSH NOTIFICATION
// ***********************************************************************
PublishOptions publishOptions = PublishOptions();
publishOptions.putHeader("android-ticker-text", "You just got a push notification!");
publishOptions.putHeader("android-content-title", "This is a notification title");
publishOptions.putHeader("android-content-text", "Push Notifications are cool");
MessageStatus messageStatus = await Backendless.Messaging.publish("Welcome", channelName: "default", publishOptions: publishOptions);

// ***********************************************************************
// SEND A PUSH NOTIFICATION WITH A TEMPLATE
// ***********************************************************************
await Backendless.Messaging.pushWithTemplate("WelcomeTemplate");
// ***********************************************************************
// SEND A PUSH NOTIFICATION
// ***********************************************************************
curl -H Content-Type:application/json -X POST \
-d ‘{“message”:”Hi Devices!”, \
“headers”:{ \
          “android-ticker-text”: “You just got a push notification!”, \
          “android-content-title”: “This is a notification title”,  \
          “android-content-text”: “Push Notifications are cool”  \
}}’  \
-v https://api.backendless.com///messaging/push/Welcome

// ***********************************************************************
// SEND A PUSH NOTIFICATION WITH A TEMPLATE
// ***********************************************************************
curl -H Content-Type:application/json -X POST \
-d ‘{“message”:”Hi Devices!”, \
“headers”:{ \
          “android-ticker-text”: “You just got a push notification!”, \
          “android-content-title”: “This is a notification title”,  \
          “android-content-text”: “Push Notifications are cool”  \
}}’  \
-v https://api.backendless.com///messaging/push/WelcomeTemplate
.NET
JAVA
KOTLIN
OBJECTIVE-C
SWIFT
DART
REST
Backendless.InitApp( YOUR-APP-ID, YOUR-DOTNET-API-KEY ); 

// PUT DATA INTO CACHE
var countries = new [] { "Afghanistan", "Albania", "Algeria", "..." }; 
await Backendless.Cache.PutAsync( "countriesList", countries );

// EXTEND TIME IN CACHE
await Backendless.Cache.ExpireInAsync( "countriesList", 7200 );

// GET VALUE FROM CACHE
var valueFromCache = await Backendless.Cache.GetAsync( "countriesList" );
Backendless.initApp(context, YOUR_APP_ID, YOUR_API_KEY);

// PUT DATA INTO CACHE
List countries = Arrays.asList( "Afghanistan", "Albania", "Algeria", "..." );
Backendless.Cache.put( "countriesList", countries );

// EXTEND TIME IN CACHE
Backendless.Cache.expireIn( "countriesList", 7200 );

// GET VALUE FROM CACHE
List valueFromCache = Backendless.Cache.get( "countriesList", List.class );
Backendless.initApp(context, YOUR_APP_ID, YOUR_API_KEY)

// PUT DATA INTO CACHE
val countries = listOf("Afghanistan", "Albania", "Algeria", "...")
Backendless.Cache.put("countriesList", countries)

// EXTEND TIME IN CACHE
Backendless.Cache.expireIn("countriesList", 7200)

// GET VALUE FROM CACHE
val valueFromCache = Backendless.Cache.get("countriesList", List::class.java)
[Backendless.shared initAppWithApplicationId:YOUR_APP_ID apiKey:YOUR_IOS_API_KEY];
    
// ***********************************************************************
// PUT DATA INTO CACHE
// ***********************************************************************
    
NSArray *countries = @[@"Afghanistan", @"Albania", @"Algeria", @"..."];
[Backendless.shared.cache putWithKey:@"countriesList" object:countries responseHandler:^{
    // success
} errorHandler:^(Fault *fault) {
    // failure
}];
    
// ***********************************************************************
// EXTEND TIME IN CACHE
// ***********************************************************************
    
[Backendless.shared.cache expireInKey:@"countriesList" seconds:7200 responseHandler:^{
    // success
} errorHandler:^(Fault *fault) {
    // failure
}];
    
// ***********************************************************************
// GET VALUE FROM CACHE
// ***********************************************************************
    
[Backendless.shared.cache getWithKey:@"countriesList" responseHandler:^(id result) {
    // success
} errorHandler:^(Fault *fault) {
    // failure
}];
Backendless.shared.initApp(applicationId: YOUR_APP_ID, apiKey: YOUR_IOS_API_KEY)
        
// ***********************************************************************
// PUT DATA INTO CACHE
// ***********************************************************************
        
let countries = ["Afghanistan", "Albania", "Algeria", "..."]
Backendless.shared.cache.put(key: "countriesList", object: countries, responseHandler: {
    // success
}, errorHandler: { fault in
    // failure
})
        
// ***********************************************************************
// EXTEND TIME IN CACHE
// ***********************************************************************
        
Backendless.shared.cache.expireIn(key: "countriesList", seconds: 7200, responseHandler: {
    // success
}, errorHandler: { fault in
    // failure
})
        
// ***********************************************************************
// GET VALUE FROM CACHE
// ***********************************************************************
        
Backendless.shared.cache.get(key: "countriesList", responseHandler: { result in
    // success
}, errorHandler: { fault in
    // failure
 })
Backendless.initApp( YOUR-APP-ID, YOUR-JS-API-KEY );

// PUT DATA INTO CACHE
var countries = [ 'Afghanistan', 'Albania', 'Algeria', '...' ];
var key = 'countriesList';

var timeToLive = 3600; // default value is 7200 seconds

Backendless.Cache.put( key, countries, timeToLive )
 .then( function( result ) {
 })
 .catch( function( error ) {
 });

// EXTEND TIME IN CACHE
Backendless.Cache.expireIn( key, 7200 )
 .then( function( result ) {
 })
 .catch( function( error ) {
 });

// GET VALUE FROM CACHE
Backendless.Cache.get( 'countriesList' )
 .then( function( valueFromCache ) {
 })
 .catch( function( error ) {
 });
Backendless.initApp(YOUR_APP_ID, YOUR_ANDROID_API_KEY, YOUR_IOS_API_KEY);

// PUT DATA INTO CACHE
List countries = ["Afghanistan", "Albania", "Algeria", "..."];
await Backendless.Cache.put("countriesList", countries);

// EXTEND TIME IN CACHE
await Backendless.Cache.expireIn("countriesList", 7200);

// GET VALUE FROM CACHE
dynamic valueFromCache = await Backendless.Cache.get("countriesList",);
// INCREMENT COUNTER BY 1
curl ‘https://api.backendless.com///counters/ordersReceived/increment/get’ -X PUT

// INCREMENT COUNTER BY 5
curl ‘https://api.backendless.com///counters/ordersReceived/incrementby/get?value=5’ -X PUT

// GET COUNTER VALUE
curl ‘https://api.backendless.com///counters/ordersReceived’

// RESET COUNTER
curl ‘https://api.backendless.com///counters/ordersReceived/reset’ -X PUT
.NET
JAVA
KOTLIN
OBJECTIVE-C
SWIFT
DART
REST
Backendless.InitApp( YOUR-APP-ID, YOUR-DOTNET-API-KEY ); 

// INCREMENT COUNTER BY 1
await Backendless.Counters.IncrementAndGetAsync( "ordersReceived" );

// INCREMENT COUNTER BY 5
await Backendless.Counters.AddAndGetAsync( "ordersReceived", 5 );

// GET COUNTER VALUE
var ordersReceived = await Backendless.Counters.GetAsync( "ordersReceived" );

// RESET COUNTER
await Backendless.Counters.ResetAsync( "ordersReceived" );
Backendless.initApp( context, YOUR_APP_ID, YOUR_API_KEY );

// INCREMENT COUNTER BY 1
Backendless.Counters.incrementAndGet( "ordersReceived" );

// INCREMENT COUNTER BY 5
Backendless.Counters.addAndGet( "ordersReceived", 5 );

// GET COUNTER VALUE
Long ordersReceived = Backendless.Counters.get( "ordersReceived" );

// RESET COUNTER
Backendless.Counters.reset( "ordersReceived" );
Backendless.initApp(context, YOUR_APP_ID, YOUR_API_KEY)

// INCREMENT COUNTER BY 1
Backendless.Counters.incrementAndGet("ordersReceived")

// INCREMENT COUNTER BY 5
Backendless.Counters.addAndGet("ordersReceived", 5)

// GET COUNTER VALUE
val ordersReceived = Backendless.Counters.get("ordersReceived")

// RESET COUNTER
Backendless.Counters.reset("ordersReceived")
[Backendless.shared initAppWithApplicationId:YOUR_APP_ID apiKey:YOUR_IOS_API_KEY];
    
// ***********************************************************************
// INCREMENT COUNTER BY 1
// ***********************************************************************
    
[Backendless.shared.counters incrementAndGetWithCounterName:@"ordersReceived" responseHandler:^(NSInteger countersValue) {
    // success
} errorHandler:^(Fault *fault) {
    // failure
}];
    
// ***********************************************************************
// INCREMENT COUNTER BY 5
// ***********************************************************************
    
[Backendless.shared.counters addAndGetWithCounterName:@"ordersReceived" value:5 responseHandler:^(NSInteger countersValue) {
    // success
} errorHandler:^(Fault *fault) {
    // failure
}];
    
// ***********************************************************************
// GET COUNTER VALUE
// ***********************************************************************\
    
[Backendless.shared.counters getWithCounterName:@"ordersReceived" responseHandler:^(NSInteger countersNumber) {
    // success
} errorHandler:^(Fault *fault) {
    // failure
}];
    
// ***********************************************************************
// RESET COUNTER
// ***********************************************************************
    
[Backendless.shared.counters resetWithCounterName:@"ordersReceived" responseHandler:^{
    // success
} errorHandler:^(Fault *fault) {
    // failure
}];
Backendless.shared.initApp(applicationId: YOUR_APP_ID, apiKey: YOUR_IOS_API_KEY)
        
// ***********************************************************************
// INCREMENT COUNTER BY 1
// ***********************************************************************
        
Backendless.shared.counters.incrementAndGet(counterName: "ordersReceived", responseHandler: { counterValue in
    // success
}, errorHandler: { fault in
    // failure
})
        
// ***********************************************************************
// INCREMENT COUNTER BY 5
// ***********************************************************************
        
Backendless.shared.counters.addAndGet(counterName: "ordersReceived", value: 5, responseHandler: { counterValue in
    // success
}, errorHandler: { fault in
    // failure
})
        
// ***********************************************************************
// GET COUNTER VALUE
// ***********************************************************************
        
Backendless.shared.counters.get(counterName: "ordersReceived", responseHandler: { counterValue in
    // success
}, errorHandler: { fault in
    // failure
})
        
// ***********************************************************************
// RESET COUNTER
// ***********************************************************************
        
 Backendless.shared.counters.reset(counterName: "ordersReceived", responseHandler: {
    // success
}, errorHandler: { fault in
    // failure
})
Backendless.initApp( YOUR-APP-ID, YOUR-JS-API-KEY );

// INCREMENT COUNTER BY 1
Backendless.Counters.incrementAndGet('ordersReceived')
 .then(function(ordersReceived) {
 })
 .catch(function(error) {
 });

// INCREMENT COUNTER BY 5
Backendless.Counters.addAndGet('ordersReceived', 5)
 .then(function(ordersReceived) {
 })
 .catch(function(error) {
 });

// GET COUNTER VALUE
Backendless.Counters.get('ordersReceived')
 .then(function(ordersReceived) {
 })
 .catch(function(error) {
 });

// RESET COUNTER
Backendless.Counters.reset('ordersReceived')
 .then(function(result) {  
 })
 .catch(function(error) {  
 });
Backendless.initApp(YOUR_APP_ID, YOUR_ANDROID_API_KEY, YOUR_IOS_API_KEY);

// INCREMENT COUNTER BY 1
await Backendless.Counters.incrementAndGet("ordersReceived");

// INCREMENT COUNTER BY 5
await Backendless.Counters.addAndGet("ordersReceived", 5);

// GET COUNTER VALUE
int ordersReceived = await Backendless.Counters.getValue("ordersReceived");

// RESET COUNTER
await Backendless.Counters.reset("ordersReceived");
// INCREMENT COUNTER BY 1
curl ‘https://api.backendless.com///counters/ordersReceived/increment/get’ -X PUT

// INCREMENT COUNTER BY 5
curl ‘https://api.backendless.com///counters/ordersReceived/incrementby/get?value=5’ -X PUT

// GET COUNTER VALUE
curl ‘https://api.backendless.com///counters/ordersReceived’

// RESET COUNTER
curl ‘https://api.backendless.com///counters/ordersReceived/reset’ -X PUT
.NET
JAVA
KOTLIN
OBJECTIVE-C
SWIFT
DART
REST
Backendless.InitApp( YOUR-APP-ID, YOUR-DOTNET-API-KEY ); 

// ***********************************************************************
// BASIC EMAIL API
// ***********************************************************************
var subject = "Cool title of an email marketing campaign";
var message = "Hello!\n\n" +

              "This is an example of an email message delivered with Backendless.\n" +
              "Just something basic to give you an idea of how the API works,\n" +
              "however, there is so much more you can do with the platform\n\n" +

              "Enjoy!\n" +
              "Your friends @ Backendless";
var recipients = new List( new [] {"developers@world.com" } );
await Backendless.Messaging.SendHTMLEmailAsync( subject, message, recipients );

// ***********************************************************************
// EMAIL WITH TEMPLATE AND DYNAMIC USERS
// ***********************************************************************
var templateName = "CustomersWhoShowedInterest";
var recipientsQuery = $"shoppingCart.hasItems = 1 and lastVisit > '03/22/2019'";
await Backendless.Messaging.SendEmailWithTemplateAsync( templateName, recipientsQuery );
Backendless.initApp( context, YOUR_APP_ID, YOUR_API_KEY );

// ***********************************************************************
// BASIC EMAIL API
// ***********************************************************************
String subject = "Cool title of an email marketing campaign";
String message = "Hello!\n\n" +

        "This is an example of an email message delivered with Backendless.\n" +
        "Just something basic to give you an idea of how the API works,\n" +
        "however, there is so much more you can do with the platform\n\n" +

        "Enjoy!\n" +
        "Your friends @ Backendless";
List recipients = Arrays.asList( "developers@world.com" );
Backendless.Messaging.sendHTMLEmail( subject, message, recipients );

// ***********************************************************************
// EMAIL WITH TEMPLATE AND DYNAMIC USERS
// ***********************************************************************
String templateName = "CustomersWhoShowedInterest";
String recipientsQuery = "shoppingCart.hasItems = 1 and lastVisit > '03/22/2019'";
// TODO: send email with template
// Backendless.Messaging.sendEmailWithTemplate( templateName, recipientsQuery );
Backendless.initApp(context, YOUR_APP_ID, YOUR_API_KEY)

// ***********************************************************************
// BASIC EMAIL API
// ***********************************************************************
val subject = "Cool title of an email marketing campaign"
val message = "Hello!\n\n" +

        "This is an example of an email message delivered with Backendless.\n" +
        "Just something basic to give you an idea of how the API works,\n" +
        "however, there is so much more you can do with the platform\n\n" +

        "Enjoy!\n" +
        "Your friends @ Backendless"
val recipients = listOf("developers@world.com")
Backendless.Messaging.sendHTMLEmail(subject, message, recipients)

// ***********************************************************************
// EMAIL WITH TEMPLATE AND DYNAMIC USERS
// ***********************************************************************
val templateName = "CustomersWhoShowedInterest"
val recipientsQuery = "shoppingCart.hasItems = 1 and lastVisit > '03/22/2019'"
// TODO: send email with template
// Backendless.Messaging.sendEmailWithTemplate(templateName, recipientsQuery);
[Backendless.shared initAppWithApplicationId:YOUR_APP_ID apiKey:YOUR_IOS_API_KEY];
    
// ***********************************************************************
// BASIC EMAIL API
// ***********************************************************************
    
NSString *subject = @"Cool title of an email marketing campaign";
EmailBodyparts *body = [EmailBodyparts new];
body.htmlMessage = @"Hello\n\nThis is an example of an email message delivered with Backendless.\nJust something basic to give you an idea of how the API works,\nhowever, there is so much more you can do with the platform\n\nEnjoy!\nYour friends @ Backendless";
NSArray *recipients = @[@"developers@world.com"];
[Backendless.shared.messaging sendEmailWithSubject:subject bodyparts:body recipients:recipients attachments:nil responseHandler:^(MessageStatus *messageStatus) {
     // success
} errorHandler:^(Fault *fault) {
    // failure      
}];
    
// ***********************************************************************
// EMAIL WITH TEMPLATE AND DYNAMIC USERS
// ***********************************************************************
    
NSString *templateName = @"CustomersWhoShowedInterest";
EnvelopeWithQuery *envelope = [EmailEnvelope templateWithQuery];
[envelope setRecipientsQueryWithRecipientsQuery:@"shoppingCart.hasItems = 1 and lastVisit > '03/22/2019'"];        
[Backendless.shared.messaging sendEmailsWithTemplateName:templateName envelope:envelope responseHandler:^(MessageStatus *messageStatus) {
    // success
} errorHandler:^(Fault *fault) {
    // failure
}];
Backendless.shared.initApp(applicationId: YOUR_APP_ID, apiKey: YOUR_IOS_API_KEY)
        
// ***********************************************************************
// BASIC EMAIL API
// ***********************************************************************
        
let subject = "Cool title of an email marketing campaign"
let body = EmailBodyparts()
body.htmlMessage = """
Hello!
 
This is an example of an email message delivered with Backendless.
Just something basic to give you an idea of how the API works,
however, there is so much more you can do with the platform
 
Enjoy!
Your friends @ Backendless
"""
let recipients = ["developers@world.com"]
Backendless.shared.messaging.sendEmail(subject: subject, bodyparts: body, recipients: recipients, attachments: nil, responseHandler: { messageStatus in
    // success
}, errorHandler: { fault in
   // failure
})
        
// ***********************************************************************
// EMAIL WITH TEMPLATE AND DYNAMIC USERS
// ***********************************************************************
 
let templateName = "CustomersWhoShowedInterest"
let envelope = EmailEnvelope.templateWithQuery()
envelope.setRecipientsQuery(recipientsQuery: "shoppingCart.hasItems = 1 and lastVisit > '03/22/2019'")
Backendless.shared.messaging.sendEmails(templateName: templateName, envelope: envelope, responseHandler: { messageStatus in
    // success
}, errorHandler: { fault in
    // failure
})
Backendless.initApp(YOUR-APP-ID, YOUR-JS-API-KEY);

// ***********************************************************************
// BASIC EMAIL API
// ***********************************************************************
var subject = 'Cool title of an email marketing campaign';
var message = 'Hello!\n\n' +

 'This is an example of an email message delivered with Backendless.\n' +
 'Just something basic to give you an idea of how the API works,\n' +
 'however, there is so much more you can do with the platform\n\n' +

 'Enjoy!\n' +
 'Your friends @ Backendless';

var recipients = ['developers@world.com'];
var bodyParts = new Backendless.Bodyparts( { htmlmessage: message } );

Backendless.Messaging.sendEmail( subject, bodyParts, recipients )
 .then( function( response ) {  
 })
 .catch( function( error ) { 
 });

// ***********************************************************************
// EMAIL WITH TEMPLATE AND DYNAMIC USERS
// ***********************************************************************
var templateName = 'CustomersWhoShowedInterest';
var recipientsQuery = 'shoppingCart.hasItems = 1 and lastVisit > \'03/22/2019\'';

Backendless.Messaging.sendEmailWithTemplate( templateName, recipientsQuery )
 .then( function( response ) {
 })
 .catch( function( error ) {
 });
Backendless.initApp(YOUR_APP_ID, YOUR_ANDROID_API_KEY, YOUR_IOS_API_KEY);

// ***********************************************************************
// BASIC EMAIL API
// ***********************************************************************
String subject = "Cool title of an email marketing campaign";
String message = """Hello!\n\n

        This is an example of an email message delivered with Backendless.\n
        Just something basic to give you an idea of how the API works,\n
        however, there is so much more you can do with the platform\n\n

        Enjoy!\n
        Your friends @ Backendless""";
List recipients = ["developers@world.com"];
await Backendless.Messaging.sendHTMLEmail(subject, message, recipients);

// ***********************************************************************
// EMAIL WITH TEMPLATE AND DYNAMIC USERS
// ***********************************************************************
String templateName = "CustomersWhoShowedInterest";
String recipientsQuery = "shoppingCart.hasItems = 1 and lastVisit > '03/22/2019'";
// TODO: send email with template
// await Backendless.Messaging.sendEmailWithTemplate(templateName, recipientsQuery);
// ***********************************************************************
// BASIC EMAIL API
// ***********************************************************************
curl ‘https://api.backendless.com/F351D657-23B3-D14F-FF45-9DCB5345CE00/2F593D90-ED1A-340F-FF42-047920591F00/messaging/email’ \
-H ‘Content-Type: application/json’ \
-d ‘{“subject”:”Cool title of an email marketing campaign”,”bodyparts”:{“htmlmessage”:”Hello!\n\nThis is an example of an email message delivered with Backendless.\nJust something basic to give you an idea of how the API works,\nhowever, there is so much more you can do with the platform\n\nEnjoy!\nYour friends @ Backendless”},”to”:[“developers@world.com”]}’
Backendless Your Way

Your Place or Ours
(or a Little of Both)

Whether you’re looking to start fresh with a cloud-based, full-service solution, consolidate your backend servers and expand with a backend platform hosted on your own servers, or a mixture of both, we have the perfect MBaaS product for you.

Backendless Cloud

A centralized, cloud-based installation of the Backendless Platform.

Learn more
Backendless Pro

A dedicated instance on your servers with on-call support.

Learn more
Managed Backendless

The Backendless Platform, installed anywhere. Absolutely limitless.

Learn more

Client Showcase

We serve clients of all sizes spanning dozens of industries. From small startups with one or two team members to large multinational corporations with millions of users worldwide, Backendless has experience with a business just like yours.

Bank al Etihad

Bank al Etihad uses Backendless to power its mobile app as they offer financial services such as checking and savings accounts, credit cards, and home and business loans to individuals, entrepreneurs, local and global businesses, and the next generation of female leaders.

Bank al Etihad uses Backendless to power its mobile app as they offer financial services to individuals, entrepreneurs, local and global businesses, and the next generation of female leaders.

Learn More
FUNX

Digital Copel by FUNX is packed full of fun and educational lessons for young children ages 0-6 – although the app developer guarantees older children and adults alike will also find them challenging! Read on to learn how FUNX has leveraged Backendless technology to make learning fun.

Digital Copel by FUNX is packed full of fun and educational lessons for young children ages 0-6. Read on to learn how FUNX has leveraged Backendless technology to make learning fun.

Learn More
Educators International

Educators International is bringing a revolutionary tech-based approach to education in developing countries. E.I. produces classroom-friendly educational apps and works in partnership with developing countries to help them implement system-level educational reforms. Read on to learn how Educators International utilizes Backendless to battle illiteracy on a global scale.

Educators International is bringing a revolutionary tech-based approach to education by producing classroom-friendly educational apps and working in partnership with developing countries to help them implement system-level educational reforms. Read on to learn how Educators International utilizes Backendless to battle illiteracy on a global scale.

Learn More
YTCount

Starting as a fun side project, YTCount has grown to over 60,000 monthly active users on iOS alone. YTCount shows the powerful versatility and scalability of Backendless to support a startup from infancy through explosive growth.

Starting as a fun side project, YTCount has grown to over 60,000 monthly active users on iOS alone. YTCount shows the scalability of Backendless to support a startup from infancy through explosive growth.

Learn More
Lifebook

Lifebook gives users a means to preserve their sweetest memories in print using beautifully handcrafted photo books, customized and ordered straight through their mobile app.

Lifebook gives users a means to preserve their sweetest memories in print using beautifully handcrafted photo books, customized and ordered straight through their mobile app.

Learn More
BTC Market Ticker

The rise of Bitcoin and other cryptocurrencies has opened the door for entrepreneurs to bring new technologies to the financial market. BTC Market Ticker has jumped in the game with a sleek app powered by Backendless.

The rise of Bitcoin and other cryptocurrencies has opened the door for entrepreneurs to bring new technologies to the financial market. BTC Market Ticker has jumped in the game with a sleek app powered by Backendless.

Learn More
Game With Me

17-year-old Australian entrepreneur Mudasar created Game With Me, a mobile app that makes finding new gaming friends easy. Game With Me uses search filtersinstant messagingpush notifications and many more Backendless features.

17-year-old Australian entrepreneur Mudasar created Game With Me, a mobile app that makes finding new gaming friends easy. Game With Me uses search filtersinstant messagingpush notifications and many more Backendless features.

Learn More
Tacoma Japantown Walking Tour

Explore the American Pacific Northwest and its tragic history with an informative walking tour app powered by Backendless. With maps, photos, notes, and essays, the Tacoma Japantown app guides you back through time.

Explore the American Pacific Northwest and its tragic history with an informative walking tour app powered by Backendless. With maps, photos, notes, and essays, the Tacoma Japantown app guides you back through time.

Learn More

What's New

We are constantly adding educational and informative content to our blog, including examples, tutorials, and user success stories. Check out our latest offerings below, or click here to see all posts.

The next great app is waiting. Build it now.