将 android 应用程序与桌面应用程序连接的最佳方式?

best way to connect android app with desktop app?

我想开发一个在 DESKTOP 应用程序和 Android 应用程序之间共享数据的系统。 搜索后我发现我需要在它们之间有一个服务器。但是我不知道服务器是什么?我如何创建它?它将如何帮助我连接我的两个平台设备?

桌面应用程序 将从 android 应用程序接收数据。并管理数据。它还将用于将 notifications/messages 发送到 android 个应用程序。

Android App 将用于输入数据并将其发送到桌面应用程序。它将从桌面应用程序接收 updates/notifications。

现在如何连接这两个?我基本上需要一个通用数据库来进行实时数据共享和通知。

编辑:我正在使用 C# 构建桌面应用程序,并使用 Java 构建 android 应用程序。

Edit2:也许我可以使用 PHP 在 CPANEL 或 000webhost 上托管数据库。然后将它与 android 和 C# 连接。 这是正确的方法吗?是否可以将其与 C# 连接?我知道它可以与Android连接,不确定C#。

Firebase 支持 Web 界面,因此您可以开发 html 代码并集成到桌面应用程序中,类似于 windows 表单应用程序中的 Web 集成

您不一定需要数据库。您需要在两个应用程序之间使用通用网络协议。

所有网络通信都是通过套接字完成的。您需要一个允许您通过套接字 发送数据的库 。例如,here's an Android guide that is about sockets

套接字绑定到计算机的特定端口,本质上使它成为 "server"。就像 Web 服务器都公开端口 80,并通过称为 HTTP 的协议进行通信一样。这很重要,因为由您决定您的应用程序在彼此之间通信的协议,因为套接字只是发送字节 - 它不关心您发送什么或如何发送,只要当它传输到特定服务器上的端口时。它也不会为您解析数据,这取决于您的应用程序来处理。例如,您的桌面应用程序如何知道 Android 设备向它发送了一条文本消息、要显示的一些图像或要显示地图的地址?

总而言之,您想要桌面应用程序而不是 Web 应用程序的原因并不完全清楚。仅解析来自映射到不同方法(通常称为 REST API)的不同 HTTP 路径的 HTTP 有效负载主体比构建您自己的协议要简单得多。您也可以在 Web 服务器之上构建桌面 GUI。

使用双向套接字架构基本上不可能让桌面应用程序将更新发送回您的移动应用程序。您的 Android 不应该只为您的应用程序连续 运行 打开服务器套接字,主要是因为电池耗尽,但因为它的网络地址经常变化,因此您还需要一个注册服务器来自您的设备将重新连接到哪个。这样的服务以 Firebase Cloud Messaging 的形式存在,它是 Google 对 GCM 技术的重新命名,可用于向设备发送推送通知,但数据负载很小。

在此处查看 Android 设备上发生的通知活动。 How does push notification technology work on Android?

回到关于数据库的问题。建议使用一个太宽泛了。如果你想 store and/or query 或 join 数据集,你只需要其中之一。 运行安装桌面应用程序的同一台计算机可以安装 运行 您喜欢的任何类型的数据库,无论是关系数据库还是 noSQL 数据库,完全取决于您。我所知道的唯一实时数据库是 RethinkDB 和 Firebase。
你也可以只持有一个 SQLite 文件,它和小型数据库一样好(即使是 SQLite 文档也推荐它用于低流量网站)。