在Android应用中接收GCM,我需要什么?

时间:2018-11-15 19:44:11

标签: android oauth-2.0 google-cloud-platform google-cloud-messaging

我有一个新版本的Android应用程序,它没有从服务器接收GCM消息,但是该应用程序的先前版本运行良好。情况如下:

我以前在这里有一个包名为com.mycompany.myappname的应用程序。 (显然,我在这里更改名称以保护无辜者)。在该版本的应用中,GCM可以正常工作-我的服务器会发送消息,而在任何Android设备上运行的我的应用都会收到该消息。

但是,我的Macbook在我可以将最新版本提交给Google Play之前就死了,并且由于我的签名密钥(对于Android Studio)与我的Macbook一起消失了,因此我不得不购买一台新的Macbook并使用新的签名密钥。当然,这意味着Google Play上该应用的新版本实际上是一个全新的应用。我必须将新应用程序的软件包名称更改为com.mycompany.mynewapp。

我查看了Google API控制台,然后看到了我为第一个应用程序(例如MyApp)创建的Google Console项目。在MyApp项目中,我看到列出了几个密钥,其中之一是GCM的服务器API密钥。现在,此键不受限制(已选中“无”单选按钮),因此它没有应用程序限制。 (是的,我知道我应该解决这个问题,但是在我解决此问题之前,现在还可以)。如果我理解正确,则意味着我的服务器和任何其他服务器都可以使用此密钥发送GCM消息。

在MyApp凭据页面的底部,我还看到了一个我必须创建的名为“ Android客户端1”的OAuth 2.0客户端ID。如果单击该按钮,我会看到我输入了Package名称,并从keytool命令获得了应用程序指纹(几年前我为旧应用程序获得了该指纹)。当然,它指定了旧的应用程序包名称,该名称与新的应用程序包名称不同。

所以我想了解这里发生了什么。我有一个指向我的旧应用程序包名称的Oauth 2.0客户端ID的事实是否意味着只有我的旧应用程序可以接收GCM?如果我再次执行此过程,并使用新的应用程序包名称和新的应用程序签名指纹添加新的Oauth 2.0密钥,这会使GCM神奇地适用于我的新应用程序吗?我是否需要通过新的应用程序代码或Google控制台将这个新的OAuth客户端ID绑定到我的新应用程序上?

注意:我的新应用绝对没有对Android中的GCM代码或发送GCM的服务器代码进行任何更改。我们知道服务器代码很好,因为旧应用程序会收到推送消息,而新应用程序则不会。因此,密钥一定有问题。

有人可以帮忙解释一下发生了什么,我该怎么做才能解决?

0 个答案:

没有答案