Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/225.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 多用户环境中GCM的最佳实践_Java_Android_Google Cloud Messaging - Fatal编程技术网

Java 多用户环境中GCM的最佳实践

Java 多用户环境中GCM的最佳实践,java,android,google-cloud-messaging,Java,Android,Google Cloud Messaging,我有一个带有专用用户注册和登录系统的应用程序,我想在其中集成GCM以进行下游消息传递 我现在的问题是这样做的最佳做法/方法是什么。我也可以 在所有用户会话中使用一个GCM令牌 或在登录时请求新的GCM令牌,并在注销时尝试注销(“尝试”,因为可能没有网络连接) 我可以想象这两种方法的利弊,但缺乏深入的GCM经验来说明哪种方法更好 我还遗漏了什么吗?我更愿意为多个用户保留一个GCM令牌。发送推送通知时,请将自定义节点作为用户名或用户ID发送给要向其发送通知的节点 当您实际收到当前登录用户的通知检查时

我有一个带有专用用户注册和登录系统的应用程序,我想在其中集成GCM以进行下游消息传递

我现在的问题是这样做的最佳做法/方法是什么。我也可以

  • 在所有用户会话中使用一个GCM令牌
  • 或在登录时请求新的GCM令牌,并在注销时尝试注销(“尝试”,因为可能没有网络连接)
  • 我可以想象这两种方法的利弊,但缺乏深入的GCM经验来说明哪种方法更好


    我还遗漏了什么吗?

    我更愿意为多个用户保留一个GCM令牌。发送推送通知时,请将自定义节点作为用户名或用户ID发送给要向其发送通知的节点

    当您实际收到当前登录用户的通知检查时,如果它与传入的推送通知中的节点匹配,则向用户显示该通知,如果它没有放弃该通知(或将其存储在本地以在该用户登录时显示)

    在实际场景中,一部手机只能由一个用户使用(很少有例外),所以您也不必担心保存它。但这可能是一个商业决定

    更新

    谷歌非常明确地表示,在取消注册和再次注册GCM令牌后,可能是相同的。因此,一次又一次地取消注册和注册GCM是没有意义的。这是官方文件的片段

    注册令牌与特定登录用户不关联。如果客户端应用取消注册,然后重新注册,则该应用可以接收相同的注册令牌或不同的注册令牌


    你认为第二种方法的缺点是什么(除了更复杂)之外?多用户安卓系统的设置实际上是我还没有考虑到的。继续取消注册和注册GCM是没有用的。我不认为第二种方法有任何优势,这就是为什么我说我更喜欢第一种方法。重新注册的想法来自于这样一种假设,即新注册返回一个新ID,该ID将与新用户新关联。正如我现在发现的,同样的代币有可能会被退回。这就是你的意思吗?在这种情况下,重新注册真的没有多大意义。是的,可能会返回相同的令牌。