【问题标题】:Several gcm users for one app一个应用程序的多个 gcm 用户
【发布时间】:2015-09-09 11:19:08
【问题描述】:

我有一个关于客户注册 Google Cloud Messaging 的问题。

例如,您的智能手机安装了安卓应用。该手机将由拥有不同应用帐户(等于 google、facebook 等帐户)的多个用户使用。

我想以某种方式绑定应用帐户和 GCM 注册令牌。原则上是否有可能——无需卸载并重新安装应用程序——不同的应用程序用户会收到不同的注册令牌,然后——只有他们的消息?

GCM 注册令牌一般是附加到设备 ID 还是 Google 帐户?

提前谢谢你。

【问题讨论】:

  • 它附加到设备 ID
  • 你有源链接吗?
  • 您只需要更新特定用户的 gcm 注册令牌。并且您的通知将起作用
  • 如何实现?
  • 您的应用程序的不同用户是否将使用同一个设备帐户?

标签: android google-cloud-messaging


【解决方案1】:

InstanceID 与特定设备上已安装的应用实例相关联。获取令牌也受发送方(您的应用服务器)的影响。如果您有相同的应用程序实例和相同的发件人,那么您将获得相同的令牌(直到它因某种原因被撤销)。

要针对单个应用实例中的不同用户,您必须在下游消息的负载中包含用户标识符。然后根据消息发送给哪个用户来决定要做什么。这意味着即使指定的用户当前未登录,您也会发送消息。

您可以在切换用户时撤销和重新生成令牌,但这不是 API 的预期用途。

【讨论】:

  • 我认为切换用户时令牌不会改变。我在同一台设备上尝试了不同的组合,结果是一样的。
  • 这是意料之中的。令牌不受应用程序用户的影响。在重新安装应用或您或 Google 撤销令牌之前,它将保持不变。
【解决方案2】:

是的,有可能。

记住您如何使用应用程序包生成唯一 API 密钥为每个应用程序 以及用于识别传入推送消息的唯一服务器密钥。

您的应用程序包用于区分来自云端的传入通知。

【讨论】:

  • 对不起。我不明白。所有应用程序安装的 API 密钥都是相同的。我应该为不同的用户安装几个应用程序包吗?
【解决方案3】:

注意:实例 ID 为您的 Android 和 iOS 应用程序的每个实例提供一个唯一 ID。

让我们弄清楚我们在GCM上注册设备时的重点是什么

  1. 当您安装应用程序时,应用程序只是安装(而不是其他任何东西)
  2. 当某些用户登录到应用程序时,然后才在 GCM 上显式注册应用程序。
    Register Client Apps
  3. 当您在 GCM 上注册应用程序时,您将从 GCM 获得 registrationToken,您需要将其保存在您的服务器中。

现在,让我们了解如何为一个由多个用户使用的应用程序处理 GCM。 当用户登录应用程序时,

Step 1 : Register the app on GCM
Step 2 : Registration the app on GCM, will give you a registration token
Step 3 : Update the user's information with the registration token in your server
Step 4 : When the user logout, remove the registration token from the user's information in your server
Step 5 : When other user's login, refresh the token and follow Step 3

【讨论】:

  • 据我所知,当我注销并更改帐户时,注册令牌保持不变。
  • 您可以刷新注册令牌。检查此链接developers.google.com/instance-id/guides/android-implementation
  • 是的,注册令牌是相同的,但是当用户注销时,我们需要做的第一件事就是从您的服务器中删除注册令牌。到那时,如果需要,将注册令牌保存在首选项中。并且一旦下一个用户登录刷新令牌并发送新的注册令牌以将其与与之关联的新用户一起保存在您的服务器中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-13
  • 1970-01-01
相关资源
最近更新 更多