我正在使用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);
答案 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时,我们必须为两个发件人获取新的令牌。