更好的移动端数据库意味着更好的移动端应用。

Realm 快速、易用并且免费,深受开发者和亿万用户喜爱。

Choose Your Free Download:

Looking for the Realm Mobile Database?

Exploded view of Realm.io Platform
Trusted By Amazon Logo Google Logo Hipmunk Logo Starbucks Logo GoPro Logo eBay Logo Netflix Logo Intel Logo
CUSTOMER HIGHLIGHT

Cartasite delivers industrial IoT

Using Realm Mobile Platform, Cartasite built an offline-first app for heavy industries that seamlessly syncs field data with backend systems. Read more

 
CUSTOMER HIGHLIGHT

Integral Studio brings creative ideas to life

Digital management company uses Realm Mobile Platform to build innovative, reactive apps that bring musicians and their fans closer together. Read more

 
CUSTOMER HIGHLIGHT

Thread Learning brings education into the digital age

Realm Platform helps special education teams coordinate care by syncing data in real-time across multiple devices. Read more

 
CUSTOMER HIGHLIGHT

Arccos Golf ups its game with Realm

Arccos delivers a fast, responsive app experience with both online and offline availability for golfers around the world. Read more

 
双向数据同步、实时协作、离线有限、API 桥接以及数据推送

顶级的应用,炫目的功能

团队无论大小,都能从 Realm 移动端平台获益。它为您解决了复杂的问题例如双向同步和实时协作,使您能够拥有更多的时间让应用变得独一无二。

了解更多

Realtime collaboration in as little as 10 lines of code

See the Realm Mobile Platform demo app in action and the developer experience

Play Video

Realm 移动端平台

只需要不到十行代码,就能为你的应用部署数据同步服务及创建交互式的体验。Realm 对象服务和 Realm 移动端数据库 组成了 Realm 移动端平台

了解更多
// Authenticating the User
[RLMSyncUser logInWithCredentials:[RLMSyncCredentials credentialsWithGoogleToken:@"google token"]
                    authServerURL:[NSURL URLWithString:@"http://realm.example.com:9080"]
                     onCompletion:^(RLMSyncUser *user, NSError *error) {
  if (user) {
    // Opening a remote Realm
    NSURL *realmURL = [NSURL URLWithString:@"realm://realm.example.com:9080/~/userRealm"];
    RLMRealmConfiguration *config = [[RLMRealmConfiguration alloc] init];
    config.syncConfiguration = [[RLMSyncConfiguration alloc] initWithUser:user realmURL:realmURL];
    RLMRealm *realm = [RLMRealm realmWithConfiguration:config error:nil];
    // Any changes made to this Realm will be synced across all devices!
  } else if (error) {
    // handle error
  }
}];
// Authenticating the User
SyncUser.logIn(with: .google(token: "google token"),
               server: URL(string: "http://realm.example.com:9080")!)
{ user, error in
  if let user = user {
    // Opening a remote Realm
    let realmURL = URL(string: "realm://realm.example.com:9080/~/userRealm")!
    let config = Realm.Configuration(syncConfiguration: SyncConfiguration(user: user, realmURL: realmURL))
    let realm = try! Realm(configuration: config)
    // Any changes made to this Realm will be synced across all devices!
  } else if let error = error {
    // handle error
  }
}
// Authenticating the User
User user = User.login(Credentials.google("google token"),
                       "http://realm.example.com:9080/auth");
// Opening a remote Realm
String realmURL = "realm://realm.example.com:9080/~/userRealm";
SyncConfiguration config = new SyncConfiguration.Builder(user, realmURL).build();
Realm realm = Realm.getInstance(config);
// Any changes made to this Realm will be synced across all devices!
// Authenticating the User
Realm.Sync.User.registerWithProvider('http://realm.example.co:9080', 'google', googleAccessToken, (error, user) => {
  if (!error) {
    // Opening a remote Realm
    var realm = new Realm({
      sync: {
        user: user,
        url: 'realm://realm.example.co:9080/~/userRealm',
      }
    });
    // Any changes made to this Realm will be synced across all devices!
  }
})
var user = await User.LoginAsync(Credentials.Google("google token"),
                                 new Uri("http://realm.example.com:9080"));

var realmUrl = new Uri("realm://realm.example.com:9080/~/userRealm");
var config = new SyncConfiguration(user, realmUrl);

var realm = Realm.GetInstance(config);
// Any changes made to this Realm will be synced across all devices!

Realm 移动端数据库

更好的移动端数据库意味着更好的移动端应用。Realm 数据库让移动应用中的数据存储变得轻而易举。我们的数据库产品是 SQLite 和 Core Data 的更易用的替代方案。

了解更多
class Dog {}

Dog.schema = {
  name: 'Dog',
  properties: {
    name: 'string',
    age: 'int',
  }
};

let realm = new Realm();
realm.write(() => {
  realm.create('Dog', {name: 'Rex', age: 1});
});

let pups = realm.objects('Dog').filtered('age < 2');
@interface Dog : RLMObject
@property NSString *name;
@property NSInteger age;
@end
@implementation Dog
@end

Dog *dog = [Dog new];
dog.name = @"Rex";
dog.age = 1;

RLMRealm *realm = [RLMRealm defaultRealm];
[realm transactionWithBlock:^{
  [realm addObject:dog];
}];

RLMResults<Dog *> *allDogs = [Dog allObjects];
RLMResults<Dog *> *pups = [allDogs objectsWhere:@"age < 2"];
class Dog: Object {
  dynamic var name = ""
  dynamic var age = 0
}

let dog = Dog()
dog.name = "Rex"
dog.age = 1

let realm = try! Realm()
try! realm.write {
  realm.add(dog)
}

let pups = realm.objects(Dog.self).filter("age < 2")
public class Dog extends RealmObject {
  public String name;
  public int age;
}

Dog dog = new Dog();
dog.name = "Rex";
dog.age = 1;

Realm realm = Realm.getDefaultInstance();
realm.beginTransaction();
realm.copyToRealm(dog)
realm.commitTransaction();

RealmResults<Dog> pups = realm.where(Dog.class)
                               .lessThan("age", 2)
                               .findAll();
public class Dog : RealmObject 
{
  public string Name { get; set; }
  public int Age { get; set; }
}

var realm = Realm.GetInstance();
realm.Write(() => 
{
  realm.Add(new Dog
  {
    Name = "Rex",
    Age = 1
  });
});

var pups = realm.All<Dog>().Where(d => d.Age < 2);
Logos of companies using Realm, including Amazon, Google, Hipmunk, Starbucks, and more

二十亿在使用 Realm

财富500强和 app 商店里的优秀应用,都信任 Realm。每天都有亿万人在使用基于 Realm 创建的 app。

为您精选的技术文章

来我们的社区页面看看,这里有我们与您分享的最新的独家技术文章。我们一直在通过视频记录各种开发者聚会来传播有关应用开发的信息。

了解为什么 Realm 成为众多开发者的选择


开始使用