iOS 的 GTFS 实时绑定

GTFS-realtime-bindings for iOS

MTA 地铁数据(以及其他数据)采用 GTFS 实时格式。为了将 protobuf 转换为字符串表示形式,我必须 运行 通过使用 gtfs-realtime.proto 的一些 Google protobuf 工具。唯一的问题是,如 here 所示,gtfs-realtime-bindings 仅适用于

此外,

We don't provide generated code for C++, use the official protoc compiler for that (from here or here)

None 其中 Swift 或 Objective C。虽然从 2016 年开始 Swift/Objective C 版本有一个开放的 issue/request,但我想知道我目前可以做些什么来做到这一点。到目前为止,我看到的唯一可行的解​​决方案是让服务器解析数据,然后从该服务器而不是直接从 MTA 获取解析后的数据(JSON 编码?)。

Here 是协议缓冲区的 Google 页。我不确定,但是有什么方法可以使用那里的内容来读取 GTFS 实时数据。

这是最好的前进道路吗?还有其他可能吗?

GTFS-rt 标准和 MTA 扩展 .proto 文件中有一个 official library in Objective C for parsing Protobuf. You can compile classes

您计划的使用方式,即让应用程序直接连接到 MTA,似乎不符合 MTA terms and conditions:

  1. In developing your app, you will provide that the MTA data feed is available to others only from a non-MTA server. Accordingly, you will download and store the MTA data feed on a non-MTA server which users of your App will access in order to obtain data. MTA prohibits the development of an app that would make the data available to others directly from MTA's server(s).

正如 Tony Laudig 所指出的,让您的应用程序直接与 MTA 通信违反了他们的条款和条件,您几乎肯定必须同意这些条款和条件才能获得 api 密钥。

违反条款和条件通常是一个很糟糕的主意。在这个 API 的情况下,您的密钥似乎将被撤销。

因此,我 建议在 Tony 的回答中使用该库。相反,按照您的建议执行:

Have a server parse the data and then GET the parsed data (JSON encoded? [—sounds good]) from that server instead of directly from the MTA.

您列出的任何语言都可以胜任,这只是您最熟悉的问题。