在Android应用程序中从多个点调用GCM register()可以吗? 建筑学

在Android应用程序中从多个点调用GCM register()可以吗? 建筑学,android,sdk,google-cloud-messaging,Android,Sdk,Google Cloud Messaging,我正在构建一个Android SDK,它应该会从SDK服务器接收推送通知。封闭应用程序的后端还发送推送消息,两个后端共享相同的项目id和密钥 因此,Google Play servicesregister()会被应用程序和SDK调用两次 我主要担心的是,连续调用可能会损害推送发送机制-例如,更改注册id,使SDK或应用程序的id过期 笔记 BroadcastReceievers(用于SDK和应用程序)都在清单中注册,并具有相同的类别-应用程序的包名 推送目前似乎运行良好 我对应用程序和SDK使

我正在构建一个Android SDK,它应该会从SDK服务器接收推送通知。封闭应用程序的后端还发送推送消息,两个后端共享相同的项目id和密钥

因此,Google Play services
register()
会被应用程序和SDK调用两次

我主要担心的是,连续调用可能会损害推送发送机制-例如,更改
注册id
,使SDK或应用程序的id过期

笔记
  • BroadcastReceievers
    (用于SDK和应用程序)都在清单中注册,并具有相同的类别-应用程序的包名
  • 推送目前似乎运行良好
  • 我对应用程序和SDK使用相同的
    senderId
    。实际上,
    senderId
    是SDK参数之一
  • 应用程序和SDK都具有相同的
    注册ID
问题:
从SDK和以后从应用程序调用
register()
是否会导致任何冲突或弃用?

如果不进行调试,很难判断。但是,如果为了模块化代码而将SDK中的详细代码与应用程序中的UI代码分离,那么最好将所有具体代码保留在SDK中。GCM的后端代码(注册、处理推送通知、存储它们)应由SDK处理,而不是由应用程序代码处理。如果您在这两个模块中都这样做,那么可能会出现性能问题,而且这会破坏SDK的用途。

如果不进行调试,很难判断。但是,如果为了模块化代码而将SDK中的详细代码与应用程序中的UI代码分离,那么最好将所有具体代码保留在SDK中。GCM的后端代码(注册、处理推送通知、存储它们)应由SDK处理,而不是由应用程序代码处理。如果您在这两个模块中都这样做,那么可能会出现性能问题,这也会破坏SDK的用途