Realm
MongoDB Developer Center
chevron-right
Developer Topics
chevron-right
Products
chevron-right
Realm
chevron-right

Introduction to Atlas Device Sync for Android

Mohit SharmaPublished Feb 18, 2022 • Updated Jun 01, 2022
AndroidRealmKotlin
facebook icontwitter iconlinkedin icon
random alt
Rate this announcement
star-empty
star-empty
star-empty
star-empty
star-empty
Atlas App Services (Formerly Realm )
Atlas Device Sync (Formerly Realm Sync)
This is a beginner-level article, where we introduce you to Atlas Device Sync. As always, we demonstrate its usage by building an Android app using the MVVM architecture.

Prerequisites

You have created at least one app using Android Studio.

What Are We Trying to Solve?

In the
previous article
, we learned that the
Realm Java SDK
is easy to use when working with a local database. But in the world of the internet we want to share our data, so how do we do that with the Realm Mobile Database?
MongoDB Atlas Device Sync
Atlas Device Sync is the solution to our problem. It's one of the many features provided by
MongoDB Atlas App Services
. It synchronizes the data between client-side Realms and the server-side cloud,
MongoDB Atlas
, without worrying about conflict resolution and error handling.
The illustration below demonstrates how
MongoDB Atlas Sync
has simplified the complex architecture:
Atlas Device Sync has simplified the complex architecture
To demonstrate how to use
MongoDB Atlas App Services
Device Sync, we will extend our previous application, which tracks app views, to use Atlas Device Sync.

Step 1: Get the Base Code

Clone the original
repo
and rename it "HelloRealmSync."

Step 2: Enable Atlas Device Sync

Update the syncEnabled state as shown below in the Gradle file (at the module level):
Also, add the buildConfigField to buildTypes in the same file:
You can ignore the value of App Key for now, as it will be covered in a later step.
MongoDB cloud setup
Once this is done, we have a cloud database where all our mobile app data can be saved, i.e.,
MongoDB Atlas
. Now we are left with linking our cloud database (in Atlas) with the mobile app.

Step 4: Create a App Services App

MongoDB Atlas App setup
In layman's terms, App Services apps on the MongoDB cloud are just links between the data flowing between the mobile apps (
Realm Java SDK
) and Atlas.

Step 5: Add the App Services App ID to the Android Project

Copy the App ID and use it to replace App Key in the build.gradle file, which we added in Step 2.
With this done,
MongoDB Realm
and your Android App are connected.

Step 6: Enable Atlas Device Sync and Authentication

MongoDB Atlas App Services
is a very powerful tool and has a bunch of cool features from data security to its manipulation. This is more than sufficient for one application. Let's enable authentication and sync.
But Why Authentication?
MongoDB Atlas App Services
is designed to make apps secure by default, by not allowing an unknown user to access data.
We don't have to force a user to sign up for them to become a known user. We can enable anonymous authentication, which is a win-win for everyone.
So let's enable both of them:
Enabling anonymous authentication through the MongoDB Atlas UI
Enabling  Atlas Device Sync using the MongoDB Atlas UI
Let's quickly recap what we have done so far.
In the Android app:
  • Added App Services App ID to the Gradle file.
  • Enabled Atlas Device Sync.
  • Set up account.
  • Created a free cluster for
    MongoDB Atlas
    .
  • Created a App Services app.
  • Enabled anonymous authentication.
  • Enabled sync.
Now, the final piece is to make the necessary modifications to our Android app.

Step 7: Update the Android App Code

The only code change is to get an instance of the Realm mobile database from the App Services app instance.
  1. Get a App Services app instance from which the Realm instance can be derived:
  2. Update the creation of the View Model:
  3. Update the View Model constructor to accept the App Services app instance:
  4. Update the updateData method in HomeViewModel:
In the above snippet, we are doing two primary things:
  1. Getting a user instance by signing in anonymously.
  2. Getting a Realm instance using SyncConfiguration.Builder.
Where user.id is the partition key we defined in our
MongoDB Atlas
Sync configuration (Step 6). In simple terms, partition key is an identifier that helps you to get the exact data as per client needs. For more details, please refer to the article on
Atlas Device Sync Partitioning Strategies
.

Step 8: View Your Results in

MongoDB Atlas
Viewing the results in Atlas using the MongoDB Atlas UI
Thank you for reading. You can find the complete working code in our
GitHub repo
.
If you have questions, please head to our
developer community website
where the MongoDB engineers and the MongoDB community will help you build your next big idea with MongoDB.

Copy Link
facebook icontwitter iconlinkedin icon
Rate this announcement
star-empty
star-empty
star-empty
star-empty
star-empty
Related
News & Announcements
Realm Cocoa 5.0 - Multithreading Support with Integration for SwiftUI & Combine

May 16, 2022
Tutorial
Accessing Realm Data on iOS Using Realm Studio

May 09, 2022
Tutorial
How to Write Unit Tests for MongoDB Realm Serverless Functions

May 13, 2022
Tutorial
How to Update Realm SDK Database Schema for Android

May 12, 2022
Table of Contents