多个Swift应用之间共享数据库

5
我需要能够有三个Swift应用程序可以相互通信。将应用程序1视为基础应用程序,它与服务器通信并在本地DB中存储信息,应用程序2和3需要读取(可能写入)在应用程序1中创建的DB中的信息。
在网上查找,似乎可以使用“应用程序组”来实现此功能。如果所有3个应用程序都在同一个应用程序组下,它们是否会自动拥有一个“共享文件夹”,我可以在其中创建和/或存储Realm DB?然后,应用程序2和3会使用NSFileManager与此共享文件进行交互吗?我似乎找不到任何示例。

你不能强制用户安装三个应用程序才能使用其中一个。你需要实现一个服务器端,可以保存所有数据并将更改推送到其他应用程序。你可以有多个应用程序可以一起工作,但它们不能共享内部数据库。 - JoakimE
1个回答

1
您需要一个中央数据库,用于从多个客户端应用程序读取和写入数据,这就是API的最简形式。换句话说,您需要为您的应用程序创建API。您可能认为这比使用共享文件夹和共享Realm DB更具挑战性,但实际上,您正在尝试重新发明N个移动应用程序之间共享数据的方式,这样做会使问题变得更加复杂,无论N个应用程序是否都驻留在同一设备上,在iOS中,应用程序位于沙盒中,您正在试图规避这一点。
我猜您解决此问题的方法是基于使用Realm DB,但Realm DB可能不是正确的工具,因为Realm DB是为一个本地应用程序提供服务的本地数据库,如果Realm DB设计用于与多个应用程序一起使用,那么它将成为像Firebase或Amazon S3这样的API工具。
您需要创建一个API,该API只有一个支持它的数据库。
例如,假设App1需要保存一张图片,App2需要能够检索并查看该图片。
您的API将具有一个名为:
SavePicture(byte[] picture)

现在App1通过调用您的API保存图片,图片被保存在数据库或服务器硬盘中,无论哪种方式,都会在数据库中为保存的图片记录一条记录。
现在App2想要新的图片,假设App2上有一个刷新按钮,点击该按钮会调用您的API,另外还有一个方法。
[byte[]] GetPictures()
< p > GetPictures API方法返回一个byte[]数组,每个元素都是一张图片,App2可以显示。

您可能想要查看Firebase,这似乎是人们使用的第三方工具,他们不熟悉构建API,或者学习如何使用PHP、Ruby on Rails、ASP.NET Web API、Python等构建API,并使用MySQL、PostgreSQL、Sql Server、MongoDB、RavenDB等数据库。


App1有一个API,可以像我在问题中提到的那样连接服务器。所有其他应用程序在从服务器检索信息并本地存储后,都会与在App1中创建的本地数据库进行通信。所有服务器请求都需要通过App1进行。 - user2363025
@user2363025 你需要一个API,所有东西都通过API进行处理,很棒你已经有了一个,将其用于App2和App3。 - Brian Ogden
@user2363025,你不是试图使用Realm数据库来解决App1和App2之间的数据共享问题吗? - Brian Ogden
@user2363025,你不是试图使用Realm数据库来解决App1和App2之间的数据共享问题吗? - Brian Ogden
这是一个复杂的系统,所以我不会深入解释必要性背后的原因,但是我需要做的是让app1连接到服务器并检索信息并在本地存储,然后多个应用程序可以在共享数据库上本地访问此信息。我使用应用程序组使其正常工作。 - user2363025

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接