适用于iOS的Realm Mobile Platform入门

了解如何使用Realm Mobile Platform扩展iOS应用程序,实现数据的实时同步和管理。通过简单的代码,即可搭建服务器端后端,无需深入理解服务器维护的复杂性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在本教程中,我将继续上一期关于iO S的 Realm Mobile Database的教程,在该教程中,我们了解了Realm Mobile Database,它是Core Data的替代设备上数据库。 Realm还开发了一种同样优雅且无缝的服务器端解决方案,可在设备和云之间实时同步我们的数据。 这是Realm旗舰解决方案Realm Mobile Platfor m的一部分

什么是领域移动平台?

Realm Mobile Platform 1于2017年初发布。0表示该公司致力于将其数据库扩展到云中并为更多协作功能(如实时消息传递,脱机优先体验和更令人称奇的跨平台)提供支持。 通过新的Realm对象服务器,Realm Mobile Platform接管并处理了Realm数据库和服务器之间的数据编组和同步的复杂性。

Realm Mobile Platform充当Realm对象服务器和Realm Mobile数据库之间的管道。 当您在设备上本地保留数据时,数据会实时推送,但具有脱机时排队和延迟同步的功能。
Realm移动平台中数据流的图示

除了在设备之间同步数据(或领域)外,Realm Object Server还提供认证和访问控制服务(权限管理)以及通过Realm Functions进行的无服务器事件处理 。 让我们进一步了解Realm Mobile Platform提供的功能。 请注意,其中某些功能仅对企业客户可用。

领域功能

境界功能 小号行为的,作为应用逻辑层 ,由JavaScript供电,允许你没有专用服务器,并响应执行定制逻辑来改变对一个或所有境界(数据库)。

通过域中心,您可以编写,启动,停止和删除的功能,要在一个或多个国度变化,无服务器响应事件韩德林 。 您使用JavaScript和Node.js创建函数,这些函数由Realm Object Server的全局侦听API调用

领域仪表板截图

当前,Realm Mobile Platform的开发人员版本在任何给定时间都限于三个活动功能,尽管您可以拥有更多处于非活动状态的功能。

领域函数不在本教程的讨论范围之内,但是当然值得继续阅读。

领域仪表板

正如我们将在不久之后说明的那样, Realm Dashboar d是随Realm Object Server安装一起提供的,它提供了一个方便的工具来管理Realms,管理用户和功能,并了解应用程序服务器的运行方式。

基于浏览器的仪表板包括以下部分:

  • 仪表板提供输入和输出,打开的连接和打开的领域的实时数据速率脉冲。
  • 领域提供每个领域的路径,权限和所有者,您可以遍历每个领域以查看各个领域的模型和内容。
  • 用户为所有用户提供信息和管理服务,包括授予和删除管理权限。
  • 功能是您创建和管理领域功能的地方。
  • 日志是您可以在其中查看对象服务器的系统日志的地方。

通常可以通过本地或主机位于的http:// localhost:908 0路径访问仪表板。

领域连接

这是仅限企业的功能,尽管对某些企业非常有用。 领域连接是通过现代API网关将公司旧版系统暴露于平台的渠道,从而使开发人员可以更轻松地挂接到以前混淆的数据源中。

Realm对象服务器的企业版提供了基于Node.js的适配器API,使您可以访问所有低级对象服务器操作和数据。 这可用于使同步的Realm与现有的旧数据库(例如PostgreSQL)进行交互:Realm也将与外部数据库保持实时同步。 客户端应用程序可以使用Realm Mobile Database API,并获得使用实时本地对象的好处。

服务等级

该公司目前提供三层服务。 开发人员版是小型团队的免费产品,用户可以从中受益,例如使用实时对象进行实时自动数据同步。 专业版增加了高级功能,例如事件处理和服务器端访问。

Realm移动平台定价表

满足中型团队的需求, 专业版是一个很好的中间立场,而没有企业版的开销 成本将根据您的规模进行调整,从而提供了从免费套餐轻松迁移的途径。

专业版的起价为每月1,500美元,而企业版则根据使用情况自定义定价。

您的第一个Realm Server应用

假设知识

本教程假定您具有Swift的使用知识,但不需要Core Data或先前的数据库知识。 此外,假设您已经阅读了有关iO S的 Realm Mobile Database的上一教程,并且已经完成了创建RealmDo ap p的教程练习。 我们将从上一篇文章的结尾处继续,然后将服务器端功能添加到我们的应用程序RealmD o中

与Realm一样,我们将使用iOS的以下部分:

  • UIKit:以视觉方式展示我们的数据
  • CocoaPod 小号 :将被用于安装领域的移动数据库第三方依赖库

本教程的目标

在本教程结束时,您将继续通过Realm Mobile Platform将数据持久存储在服务器上,从而进一步增强对Realm的了解并增强用Swift编写的简单待办应用程序。 您将创建一个具有服务器端后端的功能全面的,由Realm支持的待办事项应用程序,并且您将学习以下概念:

  1. 在本地设置Realm Object Server
  2. 将“活动对象”模型同步到领域对象服务器
  3. 通过仪表板监控数据

您可以从教程GitHub repo下载完整的源代码。

设置领域对象服务器

在再次点击Xcode进行项目之前,我们需要进行设置并运行Realm Object Server。

下载Mac系统bundl Ë ,假设你将在本地您的Mac上安装对象服务器。 如果要在Linux服务器上安装它,请参阅Realm文档。

完成下载后,在终端中导航至Downloads / realm-mobile-platform文件夹,然后输入以下命令启动服务器:

start-object-server.command

现在,您的终端应指示您的服务器正在启动,并且浏览器将自动打开以启动Realm Dashboard,位于http:// localhost:9080

首次运行服务器时,将要求您注册为新用户并提供电子邮件和密码。 请继续并完成注册过程,并记住您的凭据,因为稍后将使用它们。

领域注册屏幕

保持此浏览器窗口为打开状态,我们稍后将在运行完整的应用程序时返回该窗口,以观察服务器上如何存储数据。

使我们的项目可同步

现在我们准备开始编码,因此继续并启动上一个教程中正在研究的Xcode项目,因为我们将继续在视图控制器中从那里开始构建。

我们会做的第一件事就是修改我们的remindersList全局变量是可变的,所以我们需要去改变它从RLMResults对象的List类型。 我们还将添加一个新的对象类型NotificationToken ,当领域数据对象发生更改时,它将用于通知我们。

NotificationToken不是特定于服务器的对象,我们可以在上一教程中使用过它,但是当我们想在远程或本地检测实时变化并做出相应反应时,它无疑会派上用场。

var notificationToken: Notification? 
var remindersList = List<Reminder>()

viewDidLoad()方法中,我们将嵌入SyncUser.logIn()方法,该方法是Realm的身份验证机制,接受用户名,密码和服务器位置。 这本身就是一个有趣的话题,超出了本教程的范围,但是就目前而言,我们将仅硬编码先前注册Realm Object Server时设置的凭证。

我们还传递服务器位置,以及我们要使用的领域(数据库)的名称,即http://127.0.0.1:9080 。 在领域配置行中,除了服务器位置之外,还必须设置领域名称,此名称是realmDoApp 。 继续,将您的viewDidLoad()替换为以下内容:

override func viewDidLoad() {
        super.viewDidLoad()
        tableView.register(UITableViewCell.self, forCellReuseIdentifier: "cell")

        // You should make the username and password user-input supported
        SyncUser.logIn(with: .usernamePassword(username: "doron@doronkatz.com", password: "test123", register: false), server: URL(string: "http://127.0.0.1:9080")!) { user, error in
            guard let user = user else {
                fatalError(String(describing: error))
            }
      
            DispatchQueue.main.async(execute: {
                // Open Realm
                let configuration = Realm.Configuration(
                    syncConfiguration: SyncConfiguration(user: user, realmURL: URL(string: "realm://127.0.0.1:9080/~/realmDoApp")!)
                )

                self.realm = try! Realm(configuration: configuration)

                // Set realm notification block
                self.notificationToken = self.realm.addNotificationBlock{ _ in
                    self.updateRemindersList()
                }

                self.updateRemindersList()
            })
        }
    }

在实际的应用程序中,我们将使用表单获取用户凭据。 但是,在上面的代码中,我们将对凭据进行硬编码,并在登录成功后设置一个用户对象。 否则,应用程序将失败并出现致命错误。

最后,以上代码使用同步块将领域实例与领域对象服务器(而不是设备上的数据库)相关联。 这是使该应用程序基于云的独特之处。

最后,每次领域数据发生更改(本地或远程)时,我都会初始化notificationToken以调用方法updateRemindersList() )。

func updateRemindersList(){
        if self.remindersList.realm == nil{
            self.remindersList = self.realm.objects(Reminder.self).reduce(List<Reminder>()) { (list, element) -> List<Reminder> in
                list.append(element)
                return list
            }

        }
        self.tableView.reloadData()
    }

上面的代码块还转换了它从服务器接收到的self.realm.objects() ,因此我们可以将结果与新的List类型的RemindersList对象集相关联。

请注意,无论是从领域数据库还是从远程数据库获取数据,这都是模棱两可的。 这就是使Realm变得如此出色的原因-您不必担心本地或远程同步!

就是这样-使该应用程序与Realm Object Server一起使用所需的所有代码。 在构建和运行应用程序之前,需要完成最后一件事。 右键单击文件,将项目的info.plist作为源代码打开。 添加以下内容以允许非TLS请求正常工作。

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>

现在,继续构建并运行该应用程序,并添加一些新的提醒。 现在,我们将切换到浏览器,在这里我们可以看到正在运行的服务器并访问其仪表板,以观察将数据填充到新领域中的情况。

通过仪表板监控数据

现在,我们将通过启动Realm Object Server时启动的仪表板来监视和监视数据。 并排运行应用程序和仪表板,您可以看到添加项目后,该项目立即显示在仪表板上。 当您删除项目时,也会发生同样的情况,这表明该项目确实是实时的。

领域对象服务器

通过领域浏览器监视数据

您也可以使用Realm Browser监视您的应用程序数据。 在上一个教程中,我们使用了Realm Browser查看设备上的数据。 我们还可以使用它来查看Realm Object Server数据。

启动应用程序,选择“ 打开同步URL” ,然后键入您的远程对象服务器领域的位置(例如realm://127.0.0.1:9080 / 8e090f0fa57366808be106e004800a0f / realmDoApp)以及您的用户名和电子邮件。 您应该得到我们在上一个教程中看到的熟悉的视图,仅这次是我们连接到实时后端!

继续并在那里更改您的属性,您应该会在仪表板和应用程序中看到这一点。

待办事项显示提醒

结论与后续步骤

在本教程中,您学习了如何使用后端服务器解决方案扩展由Realm Mobile Database驱动的应用程序,该应用程序已经非常强大。 全部只有几行代码。

除了下载和安装Realm Object Server,我们还改进了具有以下功能的简单提醒应用程序:

最后,我们看到了如何通过仪表板以及熟悉的Realm Object Browser监视实时数据。

诸如Realm Object Server之类的平台的前提是使开发人员专注于其客户端代码,而不必担心维护后端服务器的复杂性

在本文中,我们只是从头开始。 Realm Object Server有许多文档和概念,包括使用允许无服务器逻辑触发的功能。

翻译自: https://code.tutsplus.com/tutorials/getting-started-with-realm-mobile-platform-for-ios--cms-29080

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值