为不同的服务器

时间:2016-01-05 10:11:32

标签: android google-cloud-messaging

我正在使用GCM来触发我的Android应用程序的通知。通知是从我的服务器触发的。例如,假设用户在应用程序中注册了一个帐户,那么服务器将发送通知,我将在我的注册请求中传递GCM注册ID。到现在为止它完美无缺。现在我还有一个API是另一个服务器。我在该请求中发送相同的GCM注册ID,但我没有从该服务器收到任何通知,因此从一些阅读中我发现每个registration_id都与特定应用及其相应的服务器API密钥相关联即单个设备对于不同的应用程序具有不同的registration_id因此,我们在尝试使用registration_id发送推送通知时遇到 MismatchSenderId 错误。我该如何解决这个问题?我用谷歌搜索,并没有找到任何适当的解决方案。

我正在以这种方式生成GCM注册:

 String token = instanceID.getToken(defaultSenderId),
                        GoogleCloudMessaging.INSTANCE_ID_SCOPE, null);

2 个答案:

答案 0 :(得分:3)

由于您有2个不同的服务器,我相信您有两个不同的发件人ID。因此,在您的代码中,您必须拥有2个令牌,每个服务器一个令牌。

示例:

服务器1的令牌:

String token = instanceID.getToken(<sender_id_1>),
                    GoogleCloudMessaging.INSTANCE_ID_SCOPE, null);

服务器2的令牌:

String token2 = instanceID.getToken(<sender_id_2>),
                    GoogleCloudMessaging.INSTANCE_ID_SCOPE, null);

答案 1 :(得分:1)

更新令牌时可能会出现问题: 在InstanceIDListenerService中,我发现无法识别令牌已更新 - 对于sender_1或sender_2。 因此,当调用onTokenRefresh时,我们必须为两个发件人获取新的令牌。