7

似乎当您下载适用于 iOS 的新 Google Suite 应用程序时(无论是 GMail、Inbox、日历还是其他),它们都会让您使用自己的帐户登录,并且已经向您展示了您在其他地方登录的帐户

这个问题既适用于 iOS 也适用于 Android。

我知道应用程序可以使用 Safari 或新的 Safari WebView(Android 中的 Chrome 选项卡)和永久 cookie 在应用程序之间共享数据。它有点笨拙,并且可以通过用户删除 cookie 来破坏。但除此之外,它还有效。

谷歌似乎正在使用其他东西。广告ID?他们究竟是如何实现在两个操作系统上共享数据的这一壮举?

4

2 回答 2

3

AppGroup 通过创建一个公共共享路径(如文档目录),允许在两个不同的应用程序甚至应用程序和小部件之间共享数据。与该特定 AppGroup 关联的任何应用程序都可以访问保存在那里的数据。它是应用程序之间的离线数据共享。 使用应用组在应用之间通信和保存数据

于 2017-02-06T03:52:40.870 回答
2

在安卓上:

他们可能使用Content Providers。如此链接中所述,

内容提供者管理对中央数据存储库的访问。提供者是 Android 应用程序的一部分,它通常提供自己的 UI 来处理数据。但是,内容提供者主要是供其他应用程序使用的,这些应用程序使用提供者客户端对象访问提供者。提供者和提供者客户端共同为数据提供一致的标准接口,同时处理进程间通信和安全数据访问。

内容提供者为许多不同的 API 和组件协调对应用程序中数据存储层的访问,其中包括:

  • 与其他应用程序共享对您的应用程序数据的访问;
  • 向小部件发送数据;
  • 通过搜索框架​​为您的应用程序返回自定义搜索建议;
  • 将应用程序数据与您的服务器同步;
  • 在您的 UI 中加载数据。

TL;DR简而言之,Content Provider 是一个允许您与其他应用程序/小部件共享数据库的层。所以谷歌可能在每个应用程序中都有一个内容提供程序,它共享在这个应用程序上使用过的帐户。


在 iOS 上:

现在我只是一名 Android 开发人员,但经过快速的 Google 搜索后,我发现了这篇关于UIPasteBoard的帖子

使用 UIPasteboard 类可以让用户在您的应用程序中从一个地方到另一个地方共享数据,以及从您的应用程序到其他应用程序。要与任何其他应用程序共享数据,请使用系统范围的通用粘贴板;要与团队中的另一个应用程序共享数据(与要共享的应用程序具有相同的团队 ID),请使用命名粘贴板。


我不能向您保证,这正是 Google 的做法。但是如果我要在我的应用程序中实现这样的东西,我会使用它。

于 2017-02-03T11:16:20.130 回答